1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 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 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383
|
/**@name Portable Windows Libaray
A multi-platform operating system and GUI abstraction system for
application development.
@memo A Portable Text and GUI C/C++ Class Libarary.
@version 1.2.0
@author Equivalence Pty. Ltd.
*/
//@{
/**@name Introduction
\begin{center}
{\Large{\bf Welcome to the wonderful world of PWLib}}
\end{center}
PWLib is a moderately large class library that has its genesis many years ago as
a method to product applications to run on both Microsoft Windows and Unix
X-Windows systems. It also was to have a Macintosh port as well but this never
eventuated.
Since then the system has grown to having quite good application to areas other
than mere Windows GUI portability. Classes for I/O portability, multi-threading
portability, aid in producing unix daemons and NT services portably and all
sorts of internet protocols were added over the years.
All this over and above basic "container" classes such as arrays, linear lists,
sorted lists (RB Tree) and dictionaries (hash tables) which were all created
before STL became the answer to all our prayers. Unfortunately, due to intertia
and the GNU C++ inadequate support of templates, this library will probably not
be ported to STL in the near future.
The library was used extensively for all our in-house products. Then we decided
to support the open H323 project by throwing in some of the code written for
one of our products. Thus, required PWLib so it got thrown into the open source
world as well.
\begin{center}
{\Large{\bf Enjoy!}}
\end{center}
*/
/**@name Using PWLib
Detailed tutorials will almost certainly not be forthcoming. However,
at least giving you an indication on how to start an application would
be usefull, so here is the infamous "Hello world!" program.
\begin{verbatim}
// hello.cxx
#include <ptlib.h>
class Hello : public PProcess
{
PCLASSINFO(Hello, PProcess)
public:
void Main();
};
PCREATE_PROCESS(Hello)
void Hello::Main()
{
cout << "Hello world!\n";
}
// End of hello.cxx
\end{verbatim}
The \Ref{CREATE_PROCESS} macro actually defines the #main()# function
and creates an instance of Hello. This assures that everything is
initialised in the correct order. C++ does initialisation of global
statics badly (and destruction is even worse), so try to put
everything into your PProcess descedent rather than globals.
A GUI application is very similar but is descended off
\Ref{PApplication} rather than \Ref{PProcess}, and would create a
window as a descendent off the \Ref{PMainWindow} class.
@memo Brief examples.
*/
/**@name Console Mode Classes
This as far as possible "normalises" different operating systems to
a single API so the same application can be compiled without modification.
@memo Classes that embody operating system abstractions.
*/
//@{
/**@name Base Object Class
@memo The base class for all other clasess in the system, plus some
additional low level support classes/functions eg memory management.
*/
//@{
//@Include: include/ptlib/object.h
//@}
/**@name Container Classes
@memo Classes that contain other objects.
*/
//@{
//@Include: include/ptlib/contain.h
//@Include: include/ptlib/array.h
//@Include: include/ptlib/lists.h
//@Include: include/ptlib/dict.h
//@Include: include/ptlib/pstring.h
//@}
/**@name I/O Channel Classes
@memo Classes that perform general I/O
*/
//@{
//@Include: include/ptlib/channel.h
//@Include: include/ptlib/indchan.h
//@Include: include/ptlib/conchan.h
//@Include: include/ptlib/pipechan.h
//@Include: include/ptlib/serchan.h
//@Include: include/ptlib/file.h
//@Include: include/ptlib/textfile.h
//@Include: include/ptlib/sfile.h
//@Include: include/ptlib/filepath.h
//@Include: include/ptlib/pdirect.h
//@Include: include/ptlib/vconvert.h
//@}
/**@name Socket Classes
@memo Classes that perform Berkely Sockets I/O
*/
//@{
//@Include: include/ptlib/socket.h
//@Include: include/ptlib/ipsock.h
//@Include: include/ptlib/ipdsock.h
//@Include: include/ptlib/udpsock.h
//@Include: include/ptlib/tcpsock.h
//@Include: include/ptlib/icmpsock.h
//@Include: include/ptlib/ipxsock.h
//@Include: include/ptlib/spxsock.h
//@Include: include/ptlib/ethsock.h
//@}
/**@name Process and Thread Classes
@memo Classes that handle processes, multi-threading and synchronsiation.
*/
//@{
//@Include: include/ptlib/pprocess.h
//@Include: include/ptlib/svcproc.h
//@Include: include/ptlib/thread.h
//@Include: include/ptlib/semaphor.h
//@Include: include/ptlib/mutex.h
//@Include: include/ptlib/syncpoint.h
//@Include: include/ptlib/syncthrd.h
//@}
/**@name Miscellaneous Classes
*/
//@{
//@Include: include/ptlib/args.h
//@Include: include/ptlib/config.h
//@Include: include/ptlib/ptime.h
//@Include: include/ptlib/timeint.h
//@Include: include/ptlib/timer.h
//@Include: include/ptlib/dynalink.h
//@Include: include/ptlib/sound.h
//@Include: include/ptlib/video.h
//@Include: include/ptlib/videoio.h
//@Include: include/ptlib/remconn.h
//@Include: include/ptlib/mail.h
//@}
//@}
/**@name Console Mode Components
These classes provide a large amount of higher level functionality
that is built on the basic Console Classes which provides the
Operating System abstractions.
@memo Non-operating system specific classes that may be used as
components in applications.
*/
//@{
/**@name Internet Protocol Classes
*/
//@{
//@Include: include/ptclib/inetprot.h
//@Include: include/ptclib/inetmail.h
//@Include: include/ptclib/mime.h
//@Include: include/ptclib/ftp.h
//@Include: include/ptclib/telnet.h
//@Include: include/ptclib/socks.h
//@}
/**@name HTTP Classes
*/
//@{
//@Include: include/ptclib/http.h
//@Include: include/ptclib/url.h
//@Include: include/ptclib/html.h
//@Include: include/ptclib/httpform.h
//@Include: include/ptclib/httpsvc.h
//@}
/**@name ASN.1 Support Classes
*/
//@{
//@Include: include/ptclib/asner.h
//@}
/**@name Miscellaneous Classes
*/
//@{
//@Include: include/ptclib/modem.h
//@Include: include/ptclib/ipacl.h
//@Include: include/ptclib/random.h
//@Include: include/ptclib/cypher.h
//@Include: include/ptclib/pssl.h
//@Include: include/ptclib/pwavfile.h
//@Include: include/ptclib/dtmf.h
//@}
//@}
/**@name GUI Mode Classes
These classes abstract Graphics User Interface elements for use
by multiple platforms. Each element is implemented in the native
manner for that platform eg X Windows/Motif.
@memo Classes that embody windowing system abstractions.
*/
//@{
/**@name Interactor Classes
*/
//@{
//@Include: include/pwlib/interact.h
//@Include: include/pwlib/ilayout.h
//@Include: include/pwlib/titlewnd.h
//@Include: include/pwlib/toplwnd.h
//@Include: include/pwlib/mdidoc.h
//@Include: include/pwlib/mdiframe.h
//@Include: include/pwlib/scrollab.h
//@Include: include/pwlib/popup.h
//@Include: include/pwlib/balloon.h
//@}
/**@name Menu Classes
*/
//@{
//@Include: include/pwlib/menuent.h
//@Include: include/pwlib/rootmenu.h
//@Include: include/pwlib/submenu.h
//@Include: include/pwlib/menuitem.h
//@Include: include/pwlib/menusep.h
//@}
/**@name Control Classes
*/
//@{
//@Include: include/pwlib/control.h
//@Include: include/pwlib/ncontrol.h
//@Include: include/pwlib/pbutton.h
//@Include: include/pwlib/tbutton.h
//@Include: include/pwlib/ibutton.h
//@Include: include/pwlib/rbutton.h
//@Include: include/pwlib/checkbox.h
//@Include: include/pwlib/check3.h
//@Include: include/pwlib/choicbox.h
//@Include: include/pwlib/combobox.h
//@Include: include/pwlib/listbox.h
//@Include: include/pwlib/clistbox.h
//@Include: include/pwlib/slistbox.h
//@Include: include/pwlib/listview.h
//@Include: include/pwlib/editbox.h
//@Include: include/pwlib/meditbox.h
//@Include: include/pwlib/pwedbox.h
//@Include: include/pwlib/numedbox.h
//@Include: include/pwlib/intedit.h
//@Include: include/pwlib/realedit.h
//@Include: include/pwlib/scrollb.h
//@Include: include/pwlib/hscrollb.h
//@Include: include/pwlib/vscrollb.h
//@Include: include/pwlib/stattext.h
//@Include: include/pwlib/staticon.h
//@Include: include/pwlib/statrect.h
//@Include: include/pwlib/statbox.h
//@}
/**@name Dialog Classes
*/
//@{
//@Include: include/pwlib/dialog.h
//@Include: include/pwlib/modaldlg.h
//@Include: include/pwlib/floatdlg.h
//@Include: include/pwlib/simpdlg.h
//@Include: include/pwlib/opendlg.h
//@Include: include/pwlib/filedlg.h
//@Include: include/pwlib/savedlg.h
//@Include: include/pwlib/dirdlg.h
//@Include: include/pwlib/fontdlg.h
//@Include: include/pwlib/pclrdlg.h
//@Include: include/pwlib/printdlg.h
//@Include: include/pwlib/prjobdlg.h
//@Include: include/pwlib/prsetdlg.h
//@}
/**@name Graphics Classes
*/
//@{
//@Include: include/pwlib/point.h
//@Include: include/pwlib/dim.h
//@Include: include/pwlib/rect.h
//@Include: include/pwlib/region.h
//@Include: include/pwlib/colour.h
//@Include: include/pwlib/rcolour.h
//@Include: include/pwlib/font.h
//@Include: include/pwlib/rfont.h
//@Include: include/pwlib/fontfam.h
//@Include: include/pwlib/palette.h
//@Include: include/pwlib/pattern.h
//@Include: include/pwlib/canstate.h
//@Include: include/pwlib/canvas.h
//@Include: include/pwlib/icanvas.h
//@Include: include/pwlib/dcanvas.h
//@Include: include/pwlib/rcanvas.h
//@Include: include/pwlib/mcanvas.h
//@Include: include/pwlib/pcanvas.h
//@Include: include/pwlib/image.h
//@Include: include/pwlib/pict.h
//@Include: include/pwlib/pixels.h
//@Include: include/pwlib/pixels1.h
//@Include: include/pwlib/pixels2.h
//@Include: include/pwlib/pixels24.h
//@Include: include/pwlib/pixels32.h
//@Include: include/pwlib/pixels4.h
//@Include: include/pwlib/pixels8.h
//@}
/**@name Miscellaneous Classes
*/
//@{
//@Include: include/pwlib/applicat.h
//@Include: include/pwlib/stdresid.h
//@Include: include/pwlib/resdata.h
//@Include: include/pwlib/rstring.h
//@Include: include/pwlib/caret.h
//@Include: include/pwlib/cursor.h
//@Include: include/pwlib/icon.h
//@Include: include/pwlib/imgicon.h
//@Include: include/pwlib/clipbrd.h
//@Include: include/pwlib/keycode.h
//@Include: include/pwlib/prinfo.h
//@Include: include/pwlib/commands.h
//@Include: include/pwlib/mailgui.h
//@}
//@}
/**@name GUI Mode Components
These classes provide a large amount of higher level functionality
that is built on the basic GUI Classes which provides the
GUI system abstractions.
@memo Non-windowing system specific classes that may be used as
components in applications.
*/
//@{
/**@name Tool and Status Bars
*/
//@{
//@Include: include/pwclib/toolbars.h
//@}
/**@name Window Splitter Controls
*/
//@{
//@Include: include/pwclib/splitter.h
//@}
/**@name Wizard Dialog
*/
//@{
//@Include: include/pwclib/wizard.h
//@}
/**@name ANSI Terminal Control
*/
//@{
//@Include: include/pwclib/ansiterm.h
//@}
/**@name Geometric Shapes
*/
//@{
//@Include: include/pwclib/shapes.h
//@}
/**@name Miscellaneous Classes
*/
//@{
//@Include: include/pwclib/progress.h
//@}
//@}
//@}
|