wxWindows Book

About | Participants | Publication | Format | Style guide | Titles | Contents

### About the wxWindows book

August 2000: the 'wxBook' project is getting going again, with a good response from potential contributors.

Robin Dunn has set up a wxBook mailing list.

The book will comprise 30 or so chapters dealing with progressively more advanced areas of wxWindows; each chapter will be as stand-alone as possible. The book will not include the API reference, though this could be a separate project. The book will be accompanied by a CD-ROM with wxWindows and its documentation. It will initially be available on-line, and when enough is done we will look for a publisher.

There will also be a separate small booklet which can easily be printed out and which gives an overview of wxWindows facilities by taking the reader through a single worked example. Guillermo Rodriguez Garcia has volunteered to write this, and will use his Life! demo to illustrate it.

Goals for the book:

1. to allow users to become accomplished wxWindows developers rapidly;
2. to be useful over a longer period than just the first few weeks, since there are a lot of complex areas to address and not all features will be used up-front in a project;
3. to promote wxWindows to a wider audience;
4. to make at least some money for the authors.

Audience: beginners + experienced wxWindows users, but with reasonable C++ knowledge.

It is suggested that any financial return from the book be allocated on a points system, with a predefined number of points for chapters, indexing, editing, proof-reading etc.

### Participants

So far, the following people are interested in taking part in this project:

- Julian Smart - editor and coordinator of the project; introductory chapter, some other chapters.
- Guillermo Rodriguez Garcia - Separate tutorial booklet; communication classes (wxSocket, wxXXXServer, some protocol stuff); timing and timers.
- Robin Dunn - wxPython chapter.
- Vadim Zeitlin - drag and drop, several other chapters.
- Robert Roebling - not known.
- Vaclav Slavik - wxHTML section.
- George Tasker - database chapter.
- Carlos Moreno - wxImage, wxBitmap.
- Shiv Shankar Ramakrishnan - wxWindows advocacy, convincing your manager, container classes and strings, comparison with STL
- Markus Neifer - user-defined events.

Others welcome! Please contact Julian Smart if you would like to contribute.

### Publication

We will investigate publishers, especially O'Reilly. We will have to get together several sample chapters to convince a publisher that the many-author approach will work.

### File format

Possible formats:

- Word
- Abiword: possibly not developed enough yet, but it can output Latex which would make conversion to Tex2RTF format quite simple
- Latex: favoured format so far. The LyX near-WYSIWYG word processor (Unix only) can output Latex. See also NTTex which uses EMACS as an editor. For an introduction to Latex, see here. A free TeX for Windows: see MikTex. More TeX info: TUG.
- XML: hard to read/write
- SGML: ditto
- DocBook: don't have any information about this, but Linux Admin Made Easy uses it.
- Structured text - plain text with indentation and other elements to provide structure. The tools seem under-developed and there doesn't seem to be a simple way of getting them without using the CVS Zope archive.
- troff - favoured by O'Reilly

### Style guide

We should write a style and formatting guide.

### Book Titles

It would be good to include certain buzzwords such as Linux and open source, to get a publisher's (and the potential reader's) attention. The trick is to do that and not narrow the scope unduly.

Suggestions for the main book:

- Multiplatform GUI development with wxWindows
- wxWindows: an open source multiplatform toolkit
- wxWindows: GUI development for Linux and other platforms

Other book titles that a publisher might be interested (but would be distinct projects):

- Writing GTK+ Application Using wxWindows
- Migrating MFC Apps to Linux Using wxWindows

### Contents

The following is open to discussion.

- Chapter 01: Introduction to wxWindows: history, advocacy, future developments
- Chapter 02: Installing wxWindows (and what tools to use)
- Chapter 03: C++ and wxWindows. Summarises the sorts of constructs used/not used, plus wxString class, some conventions. Vadim suggests putting it in 1st chapter but I think it deserves a chapter of its own.
- Chapter 04: Getting started: Hello World. Introduces app class, frames, menus, status bar, message box
- Chapter 05: Basic event handling
- Chapter 06: Frames and menubars. The components of a frame, menubars.
- Chapter 07: Toolbars and status bars
- Chapter 08: Basic controls
- Chapter 09: Common dialogs
- Chapter 10: Custom dialogs and resources (XML + WXR)
- Chapter 11: Drawing on device contexts
- Chapter 12: Handling input (mouse, keyboard, joystick)
- Chapter 14: Sizers
- Chapter 15: Images and bitmaps
- Chapter 16: Clipboard and drag and drop
- Chapter 17: Advanced controls (list,tree,notebook,splitter,wxWizard,wxCalCtrl...)
- Chapter 18: Document/view classes
- Chapter 19: Scrolling
- Chapter 20: MDI
- Chapter 21: Printing
- Chapter 22: Providing help in your applications
- Chapter 23: Strings and internationalization
- Chapter 24: Collection and container classes
- Chapter 25: Memory management and debugging (including wxLog)
- Chapter 26: Run-time class information
- Chapter 27: Advanced event handling (user-defined events, ...)
- Chapter 28: Communication classes, including wxSocket
- Chapter 29: Database classes
- Chapter 30: File and stream classes
- Chapter 31: Configuration classes
- Chapter 32: Time, timers and idle processing
- Chapter 33: Writing multithreading applications
- Chapter 34: Perfecting your UI (Adapting to system settings, accelerators, ...)
- Chapter 35: Platform-specific programming (metafiles, OLE automation, taskbar, ...)
- Chapter 36: Using wxHTML
- Chapter 37: Using wxPython
- Chapter 38: wxBase?
- Appendix: Comparison with other toolkits: MFC, Qt etc.