dabodoc Commit
Revision 45
Date: 2007-05-21 23:59:26 -0700 (Mon, 21 May 2007)
Author: Nate
Trac: http://svn.dabodev.com/trac/dabodoc/changeset/45

Changed:
A   trunk/book/DaboBook.tex
A   trunk/book/Introduction/
A   trunk/book/Introduction/DaboInstallation.tex
A   trunk/book/Introduction/HistoryOfDabo.tex
A   trunk/book/Introduction/Introduction.tex
A   trunk/book/Introduction/WhatIsDabo.tex
A   trunk/book/Preface.tex
A   trunk/book/RevisedBook.cls
U   trunk/book/outline.txt

Log:
This is the initial commit of the revamped Dabo Book.  The book is to be 
written using the LaTeX document preparation system.  The class used for the 
book is a modified version of the book class found in the LaTeX standard 
library.  It is under version control under the heading RevisedBook.cls.

The book itself is broken up into files by chapter.  There are directories for 
different parts.  The structure should be fairly self explainatory.  Most of 
the content from Paul's original works has been copied over into the LaTeX 
structure.  There are still several corrections that need to be made to the 
formatting.  I will work on those later.

The book can be compiled by running the following command from the command line:
        pdflatex DaboBook.tex

Note that you must run this command twice before all of the TOC links will 
compile correctly.  Linux machines should have LaTeX natively.  On Windows 
machines, it is recommended that you use the Miktex 2.5 package.  I will 
include a shell script for compiling the book into a pdf soon.

Enjoy.

Diff:
Added: trunk/book/DaboBook.tex
===================================================================
--- trunk/book/DaboBook.tex                             (rev 0)
+++ trunk/book/DaboBook.tex     2007-05-22 06:59:26 UTC (rev 45)
@@ -0,0 +1,159 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% LaTeX Template Version 2.3
+%%
+%% Nathan Lowrie
+%% Sandia National Laboratories
+%%
+%% (C)2007 - Free for personal use, please email me improvements to
+%% [EMAIL PROTECTED]
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% Preamble
+    % Packages included
+    \documentclass[letterpaper,10pt]{RevisedBook}
+    \usepackage{ifthen}
+    \usepackage[ansinew]{inputenc}
+    \usepackage{graphics}
+    \usepackage{fancyhdr}
+    \usepackage{amsmath}       
+    \usepackage{graphicx}
+    
+    \oddsidemargin .5in
+    \evensidemargin .5in
+    \textwidth 5.5in
+    
+    \pagestyle{fancy}
+    \sloppy
+    \nonfrenchspacing
+    \renewcommand{\baselinestretch}{1.0}
+    \clubpenalty=9999    % Not higher!
+    \widowpenalty=9999   % Not higher!
+    \setcounter{secnumdepth}{4}
+    \setcounter{tocdepth}{3}
+%    \makeindex
+    \addtolength{\skip\footins}{5mm}
+
+% Some custom macros
+    % Titlerule is a FAT ruler
+    \newcommand{\titlerule}{\rule{\linewidth}{1.5mm}}
+
+    % For comments in the draft - work in progress
+    \newcommand{\betainsert}[2]{\fbox{#1}\marginnote{\textsf{#2}}}
+
+    % Notes in the margin are nicer this way.
+    \newcommand{\marginnote}[1]{\marginpar{\scriptsize\raggedright #1}}
+
+% Do you want to have the possibility of including color in your PDFs?
+    \usepackage{color}
+
+% Check if in PDFLaTeX or ``normal''
+    \newif\ifpdf
+      \ifx\pdfoutput\undefined
+      \pdffalse
+    \else
+      \pdfoutput=1
+      \pdftrue
+    \fi
+
+%Define variables
+\renewcommand{\title}{The Dabo Book}                           %Title Goes Here
+\newcommand{\subtitle}{3-Tier Application Made Easy}   %Subtitle Goes Here
+\renewcommand{\author}{Paul McNett, Nathan Lowrie}                             
        %Author Goes Here
+\newcommand{\copyrightHolder}{Ed Leafe, Paul McNett, et. al.}  %Copyright 
Holder Goes Here
+\newcommand{\subject}{3-tier desktop applications}                             
        %Subject Goes Here
+\newcommand{\keywords}{Dabo, Python, database}                                 
%Keywords go here
+    
+% Set up PDF specific. These are used when the file is compiled with 
+% pdflatex instead of ordinary latex.
+    \ifpdf
+      % if PDFLaTeX use these parameters
+      
\usepackage[pdftex,colorlinks=true,urlcolor=blue,pdfstartview=FitH]{hyperref}
+      \pdfcompresslevel=9
+      \hypersetup{
+                       pdftitle={\title},                      %Enter title 
here
+                       pdfauthor={\author},                            %Enter 
Author here
+                       pdfsubject={\subject},          %Enter Subject here
+                       pdfkeywords={\keywords}         %Enter Keywords here
+      } 
+    \else
+      % Ordinary tex use these parameters
+      \usepackage{hyperref}
+    \fi
+   
+\begin{document}
+
+\frontmatter                                                                   
% only in book class (roman page #s)
+
+% Making a nice TITLEPAGE
+\begin{titlepage}
+    \thispagestyle{empty}
+    \begin{center}
+%    \includegraphics[width= 8cm]{logo}                        %Uncomment if 
you want a logo graphic
+    \end{center}
+    \vspace*{\stretch{1}}
+    \begin{center}
+        \titlerule\\[3mm]
+        \Huge \textsc{\title\\\subtitle}\\[5mm]                %Enter Title 
and subtitle here
+        \begin{center}
+               \huge \author\\[3.5mm]                                          
%Enter company or person authoring
+       \end{center}
+               \titlerule\\
+    \end{center}
+    \scriptsize \today
+    \vspace*{\stretch{2}}
+    \begin{center}
+        \textcopyright 2004-2007 \copyrightHolder                      %Enter 
company or person for copyright here
+    \end{center}
+\end{titlepage}
+
+\pagestyle{fancy}                         %Forces the page to use the fancy 
template
+
+% Setting up pagestyles for ``fancy''
+\setlength\headheight{23.11pt}
+\renewcommand{\chaptermark}[1]{\markboth{\emph{#1}}{}}%\textbf{Chapter 
\thechapter}:\ \emph{#1}}{}}
+\renewcommand{\sectionmark}[1]{\markright{\thesection\ 
\boldmath\textbf{#1}\unboldmath}}
+                                          %The text used in the header is 
determined by the arguments to the \markboth
+                                          % and \markright commands used here. 
The chapter information will appear as the
+                                          % chapter number in bold, followed 
by a dot and a space, followed by the chapter
+                                          % title (dealt with by LaTeX---no 
user intervention needed here) in italics. The
+                                          % section information will appear as 
the section number, followed by a space, and
+                                          % then the section title (again 
generated automatically) in bold. Any maths in
+                                          % the section title will also appear 
in bold (provided the bold font exists).
+\fancyhf{}                                %Clears all header and footer 
fields, in preparation.
+\fancyhead[LO, RE]{\textbf{\title}\\\textbf{\subtitle}}
+                                          %Displays the Title and subtitle the 
header,
+                                          % to the left on odd pages and to 
the right on even pages.
+\fancyhead[LE, RO]{\nouppercase{\leftmark}}   %Displays the upper-level 
(chapter) information---
+                                          % as determined above---in non-upper 
case in the header, to the left on even pages.
+                                                                 %Displays the 
lower-level (section) information---as
+                                          % determined above---in the header, 
to the right on odd pages.
+\fancyfoot[c]{\textcopyright\ 2004-2007 \copyrightHolder}
+\fancyfoot[LE,RO]{\thepage}
+\fancyfoot[LO,RE]{\today}
+\renewcommand{\headrulewidth}{1.3pt}      %Underlines the header. (Set to 0pt 
if not required).
+\renewcommand{\footrulewidth}{1.3pt}      %Underlines the footer. (Set to 0pt 
if not required).
+
+\tableofcontents
+\newpage
+
+% --- DOCUMENT START ---
+
+
+\input{Preface}
+
+\fancyhead[RO]{Chapter \thechapter}
+
+\mainmatter                             % only in book class (arabic page #s)
+\newpage
+
+%Put your parts and chapters here
+\input{Introduction/Introduction}
+
+
+%This section reserved for bibliography and index
+\backmatter
+
+%\include{bibliography}  % include bibliography
+%\include{index}         % include index
+
+\end{document}                          % The required last line


Property changes on: trunk/book/DaboBook.tex
___________________________________________________________________
Name: svn:executable
   + *

Added: trunk/book/Introduction/DaboInstallation.tex
===================================================================
--- trunk/book/Introduction/DaboInstallation.tex                                
(rev 0)
+++ trunk/book/Introduction/DaboInstallation.tex        2007-05-22 06:59:26 UTC 
(rev 45)
@@ -0,0 +1,45 @@
+%Chapter for installing and setting up dabo
+
+\chapter{Installation of the Dabo Development Environment}
+
+This chapter details the process for getting your computer set up for 
developing applications using Dabo. While these instructions would work for 
your deployment targets as well, there are better ways to deploy applications 
than by using the instructions here. Dabo has dependencies on a number of 
external libraries, and while developing your applications you'll want to keep 
all those libraries - and Dabo - as current as possible. For deployment, you 
want better control over the versions in use. Deploying applications is covered 
in <xref linkend="dabo-ap-b"/>.
+
+\section{Downloading and Installing}
+
+Dabo has dependencies on a number of external libraries, and those 
dependencies will vary depending on your choice of database and user-interface 
library. In general, you will want to install, in this order:
+\begin{enumerate}
+       \item Python (the most recent stable version available). Python is 
available for download from http://www.python.org. Follow the instructions 
there for installation instructions1 for your platform. Python is certainly 
already installed on your Linux or Macintosh system, but for Windows you may 
find that you need to install it yourself. No matter what, please check to see 
if the version you have is relatively recent and if not you should download and 
install the most recent stable Python release.
+
+       \item MySQL Client.2 MySQL is available for download from 
http://www.mysql.com. Download the most recent stable version available. If you 
already have a MySQL server installed somewhere on your network available to 
you (and you have the rights to create and drop databases), only the client is 
required. Otherwise, also install the server so that you'll be able to follow 
along with some later examples.
+
+       \item MySQLdb. This is the Python db-api wrapper that allows your 
Python code to talk to the MySQL client library. This is an easy install using 
the standard Python distutils3 method. Download MySQLdb from 
http://sourceforge.net/projects/mysql-python. Get the latest stable version.
+
+       \item wxPython. This is the standard user-interface toolkit for Dabo, 
and at the time of this writing is required for building applications that 
present an interface to the user. In the future, Dabo will support other 
user-interface toolkits as well, but for now the only supported toolkit is 
wxPython. wxPython is in a state of rapid development, so it is best to stay as 
current as you can with it. Download and install the most recent stable version 
from http://www.wxpython.org.
+
+       \item Dabo. Get the most recent version of Dabo from 
http://dabodev.com. Be sure to get the main Dabo package as well as dabodemo 
and daboIDE. Like MySQLdb, Dabo uses distutils so a simple python setup.py 
install should get Dabo into your Python installation's site-packages 
directory, which is where all third-party libraries for Python are normally 
installed.
+\end{enumerate}
+
+\section{Testing Your Installation}
+
+Now that you've downloaded and installed all the prerequisites, you need to 
run some tests to be reasonably sure everything is installed correctly. The 
tests involve interacting with your operating system's command line, which as a 
developer you really should try to get familiar with.
+
+Microsoft Windows: Go to Start|Run and type 'cmd' <enter>.
+Apple Macintosh: Navigate to your Applictions/Utilities directory and 
double-click on the Terminal application.
+Linux/UNIX: Different distributions put this in different places. Look for 
xterm, terminal, or command-line in your desktop menu system.
+       
+Open up your command line, and type python. You should get output like:        
%NEED TO GET SETUP FOR STANDARD CODE OUTPUT SETUP
+\begin{verbatim}
[EMAIL PROTECTED] book]$ python
+Python 2.3.2 (#1, Oct  6 2003, 10:07:16)
+[GCC 3.2.2 20030222 (Red Hat Linux 3.2.2-5)] on linux2
+Type "help", "copyright", "credits" or "license" for more information.
+>>>
+You are now inside Python's command interpreter. Test to make sure that 
<application>MySQLdb</application>, <application>wxPython</application>, and 
<application>dabo</application> load correctly. If there are no errors, they 
are installed correctly.
+
+>>> import MySQLdb
+>>> import wx
+>>> import dabo
+Dabo Info Log: Thu Sep  9 19:16:23 2004: No default UI set. (DABO_DEFAULT_UI)
+>>>
+\end{verbatim}
+The message from <application>dabo</application> is normal, and no errors 
happened during the import of the other packages, so everything is set up 
correctly on my system. 
\ No newline at end of file


Property changes on: trunk/book/Introduction/DaboInstallation.tex
___________________________________________________________________
Name: svn:executable
   + *

Added: trunk/book/Introduction/HistoryOfDabo.tex
===================================================================
--- trunk/book/Introduction/HistoryOfDabo.tex                           (rev 0)
+++ trunk/book/Introduction/HistoryOfDabo.tex   2007-05-22 06:59:26 UTC (rev 45)
@@ -0,0 +1,21 @@
+%History of Dabo Chapter
+
+\chapter{History of Dabo}
+
+Dabo is the result of a few years of research, starting in 2001 when I started 
taking an active interest in the Linux operating system and open source 
software in general. I had been using Microsoft Visual FoxPro to develop 
data-aware business applications for my clients, and with mixed messages coming 
from Microsoft and the FoxPro community as to the long-term viability of FoxPro 
as a product, I started looking for alternatives from the open source 
community, alternatives that would permit the development of powerful database 
applications for multi-platform deployment.
+
+My quest led me first to Borland Delphi, which had just recently announced a 
prerelease version of Kylix, the Linux version of Delphi. This product would 
allow deployment of a semi-common codebase to one flavor of Linux (RedHat 7.x) 
and Windows. It had good data-aware controls, but only in the Enterprise 
version. The execution performance was pitiful, and code wasn't truly portable 
between platforms. The lack of a commitment from Borland to support Macintosh 
was the straw that made me look elsewhere.
+
+The next stop was to take a serious look at Java, which does have a clean and 
elegant language and does run pretty much equally on all platforms, thanks to 
the Java Virtual Machine. I developed some prototype applications using the 
Swing components which performed equally horribly on all three platforms. But, 
it was easy development and deployment, although database integration was 
pretty obtuse compared to what I was used to in Visual FoxPro. My overall 
feeling was that Java may really take over the world, but it has a long way to 
go performance-wise, and it really isn't fun to code.
+
+Somewhere about this time, I found out that Kylix was using a toolkit called 
Qt to provide the user interface components, and that Kylix was using the 
last-generation (Qt 2.x) instead of the newer, much nicer Qt 3.x version. I 
downloaded the GPL'd version of Qt for Linux, and followed some tutorials, and 
was able to build some very impressive C++ applications that performed very 
well. I never got my head around C++, however, so I felt like I'd be painting 
myself into a corner by pursuing this angle. Also, database support required 
the Enterprise version of Qt, which is something like \$1200 per platform. 
Hardly free and open source.
+
+Eventually, I came to know of a programming language called Python, which Ed 
Leafe had been using to power his website using a product called Zope. I found 
Python to be very intuitive to learn, with an easy readable syntax not unlike 
FoxPro. Python, on top of being free and open source, also comes with 
"batteries included", meaning that most everything you'd want to do comes in 
the standard library, including building user interfaces. Python also comes 
with three native data types that have to do with sequences - in other words, 
Python can represent database tables and fields natively. Come to find out, 
Python also provides an API for connecting to all kinds of database servers. In 
other words, Python comes with a lot of the pieces I'd been searching for over 
the past few years.
+
+While it was great finding that Python had a lot of the pieces to my puzzle, 
it was another thing entirely realizing that putting all the pieces together 
into a workable whole would prove to be anything but easy. Yes, Python can 
connect to any database and retrieve and update data. Yes, Python has a 
graphical user interface. No, connecting to a given database isn't the same as 
connecting to a different database. And no, the user interface that comes with 
Python is not very modern.
+
+In the Fall of 2003, I set out to create a framework for developing data-aware 
applications in Python, using a GUI toolkit I'd just learned about called 
wxWindows. I'd actually heard about wxWindows before, but had discounted it 
thinking that it was only for the Windows platform. They've since changed their 
name to wxWidgets at Microsoft's request, which may keep future developers from 
being as confused as I was. I named this framework 'Dabo', because it sounded 
fun and reminds me of words like 'data', 'business', 'application', and 
'objects'. Also, we were watching Star Trek: Deep Space Nine at the time and I 
liked the Dabo Girls.
+
+I ended up learning the wxWidgets toolkit pretty well, but created a pile of 
spaghetti code that had no separation between the database, the business rules, 
and the user interface. It was really a mess and completely unmaintainable. I 
set the project down for a few months, until I was contacted in March of 2004 
by Ed Leafe, a long-time FoxPro guru that was looking for ways to move his 
skillset over to open source, multiplatform development - he was looking for 
the same things I'd been seeking over the previous couple years. I decided to 
share my code with him, along with a sample application, and he very 
diplomatically explained all the design problems with my approach. We came up 
with an agreement to redesign Dabo from the ground up, with a 3-tier model.
+
+By May of 2004 we announced our work to the public, got a website and mailing 
lists, and encouragement from diverse areas of the open source, Python, and 
FoxPro communities. As I write this in September 2004, Dabo is under active 
development, the user interface is 80\% abstracted, 3 databases are supported, 
and a user-interface graphical designer is underway. It is already possible to 
create powerful data-aware applications and to deploy them to Windows, Linux, 
and Macintosh.


Property changes on: trunk/book/Introduction/HistoryOfDabo.tex
___________________________________________________________________
Name: svn:executable
   + *

Added: trunk/book/Introduction/Introduction.tex
===================================================================
--- trunk/book/Introduction/Introduction.tex                            (rev 0)
+++ trunk/book/Introduction/Introduction.tex    2007-05-22 06:59:26 UTC (rev 45)
@@ -0,0 +1,12 @@
+% Will house all of the introduction components
+% Each chapter gets it's own file
+
+\part{Introduction}
+
+\input{Introduction/WhatIsDabo}
+\input{Introduction/HistoryOfDabo}
+\input{Introduction/DaboInstallation}
+
+% \section{Summary}
+
+% Dabo is a framework built on Python that provides a clean API for developers 
to build data-aware business applications that are cross-platform. In addition 
to this underlying framework, Dabo also provides some power tools, such as a 
visual UI designer based on wxGlade, for designing and laying out your forms, 
menus, and other UI elements, and wizards and demo applications for getting 
started. These power tools are discussed elsewhere in this book.
\ No newline at end of file


Property changes on: trunk/book/Introduction/Introduction.tex
___________________________________________________________________
Name: svn:executable
   + *

Added: trunk/book/Introduction/WhatIsDabo.tex
===================================================================
--- trunk/book/Introduction/WhatIsDabo.tex                              (rev 0)
+++ trunk/book/Introduction/WhatIsDabo.tex      2007-05-22 06:59:26 UTC (rev 45)
@@ -0,0 +1,25 @@
+%What is dabo chapter
+
+\chapter{What is Dabo?}
+
+Dabo provides an abstraction layer for a variety of open source projects, for 
the purpose of providing a solid and flexible framework for developing 
multiplatform data-aware business applications. User/developers can use the 
powerful Python programming language to write their business logic and lay out 
their user-interface elements, harnessing the Dabo framework and thus not 
getting preoccupied with the implementation details.
+
+\section{3-Tier}
+
+Dabo provides a 3-tier approach to application design, separating database 
access from business rules from user-interface layout. Dabo also provides an 
Application object that provides common functions and controls the event loop.
+
+Dabo allows you to use each tier independently, for instance only using the 
database tier for a simple script, or only using the UI tier for a simple GUI 
app that doesn't need database access. But those use-cases will be limited. In 
a typical Dabo application, 90\% of the user code will end up in the business 
tier, using subclasses of the Dabo Business Object, 0\% in the database tier, 
and the rest as layout code in the user-interface tier.
+
+Dabo's tiers are related in a chain-of-responsibility pattern, so that when a 
user chooses, for example, to save their changes, the user-interface will 
communicate that request to the business object, which will validate the 
request against the business rules, and if all rules pass the request will go 
to the database tier to actually save the change to the database. If the change 
fails, such as in the business object for validation reasons, or in the 
database tier for connectivity reasons, the exception gets propagated back up 
to the user-interface tier and the user is notified.
+
+\section{Flexible Database Support}
+
+Dabo supports all databases for which there is a Python wrapper that conforms 
to the dbapi version 2. This includes all popular databases, as illustrated in 
<xref linkend="fig-tier1-1"/>. <warning>Please note that this book is being 
written for future benefit, and that as of this writing the only supported 
databases are MySQL, Firebird, and Sqlite, and MySQL is the most 
tested.</warning>
+
+\section{Flexible User Interface Support}
+
+After version 1.0, Dabo will support a selection of user-interface libraries, 
as illustrated in <xref linkend="fig-tier3-1"/>. The support of multiple 
libraries while allowing the Dabo developer to use a common API makes Dabo a 
very flexible, powerful solution. Different toolkits have their pros and cons; 
you can choose which one to deploy and not worry too much about that during 
development. You could conceivably do all your development using one toolkit 
and deploy with another. You may have one deployment using PyQt, and another 
using wxPython, both using the same codebase. <warning>Please note that this 
book is being written for future benefit, and that as of this writing the only 
supported user interface is wxPython.</warning>
+
+\section{Cross-platform Support}
+
+Dabo is truly multi-platform. Develop on any supported platform, and deploy 
the same code base to any supported platform. The supported platforms are 
Macintosh OS X (10.2 or higher), Linux, and Windows (98SE or higher). <xref 
linkend="fig-multiplatform-lin"/>, <xref linkend="fig-multiplatform-osx"/>, and 
<xref linkend="fig-multiplatform-win"/> show the same Dabo-developed 
application running on all three platforms.


Property changes on: trunk/book/Introduction/WhatIsDabo.tex
___________________________________________________________________
Name: svn:executable
   + *

Added: trunk/book/Preface.tex
===================================================================
--- trunk/book/Preface.tex                              (rev 0)
+++ trunk/book/Preface.tex      2007-05-22 06:59:26 UTC (rev 45)
@@ -0,0 +1,50 @@
+% Preface for the dabo book
+
+\chapter{Preface}
+
+Microsoft purchased Fox Software and gained the knowledge base to produce the 
best user-friendly application development suites in the industry. Using Visual 
Basic, Access, .NET, COM, MSDE and FoxPro, hundreds of thousands of developers 
and consultants world-wide were able to provide solutions for their clients, 
from shrink-wrapped applications to completely custom programs.
+
+For over a decade, the situation was mutually beneficial: the large company 
got to make billions off its operating system, and the developer got to make a 
living selling solutions using low-priced development tools provided by that 
same large company.
+
+Something started happening, however, late in the 1990's. At a time when 
everyone thought Unix was uttering its final words, "Linux" became a household 
term. A student's hobby in 1991 became a world-class enterprise operating 
system by 1998, and since then Linux has made impressive gains in the user 
application space: the desktop. At about the same time, Apple Computer released 
Darwin - another Unix based operating system - to the open source world and 
built a rock-solid user friendly interface on top of it, and today Apple's 
successful future seems guaranteed: elegant, user-friendly applications built 
on top of Darwin/OS X, such as <application>iTunes</application>, 
<application>iPhoto</application>, <application>iDVD</application>, and 
<application>iMovie</application> are reverberating among a growing user base.
+
+A sea change is underway. Up until now, and into 2006, the open source 
community has been playing catch-up with Microsoft, trying to make applications 
that do everything the typical Microsoft Windows user expects, in the same 
ubiquitous fashion. As I type this (September 2004) I can say that the open 
source community has almost caught up. 
<application>OpenOffice.org</application> is approaching version 2.0, and can 
already replace <application>Microsoft Office</application> for all but the 
most complex <application>Word</application>, 
<application>Powerpoint</application>, and <application>Excel</application> 
documents. <application>Mozilla FireFox</application> and 
<application>ThunderBird</application> are approaching 1.0, and already handle 
browsing and emailing better than <application>Microsoft Internet 
Explorer</application> and <application>Outlook</application>. The Gnome and 
KDE Linux desktops, besides being fast and stable, now have all the goodies any 
modern user would want. From now on, the catch-up phase is over, and real 
innovation will begin to be defined not by one huge company, but by a 
loosely-knit community of open source developers from all over the world. The 
big company will have to become a part of that community - and play by its 
rules - or risk being sucked into the undertow.
+
+We aren't quite there yet. One very important missing piece for software 
development on Linux or Mac is a comprehensive, easy-to-use, flexible 
Integrated Development Environment (IDE), such as Microsoft Visual Basic, that 
lets people develop powerful applications without necessarily having to know 
how to write great code. An IDE is basically a collection of power tools, such 
as a visual form designer, a graphical debugger, a project manager, and a help 
system. Until such an application becomes available, the only people developing 
open source applications will be people comfortable with the command line, make 
files, and a c compiler.
+
+Enter Dabo, an open source, data aware, 3-tier development framework that      
you can use to develop open source and/or proprietary applications for 
distribution to your customers. Dabo aims to be easy to learn, fun to work 
with, flexible, and powerful. You can program in Python by hand using any 
editor, or you can use the Dabo IDE which centralizes all the files in your 
project and offers all the power tools you need to create your databases, build 
your user interface, write your business rules, and create your reports 
(printouts or previews of your data, formatted the way you define).
+
+%Not really sure what this is so I commented it out.
+%Intro paragraph - first paragraph style
+
+\section{Target Audience}
+
+The Dabo Book assumes some knowledge of a typical Microsoft-like IDE such as 
Visual Basic or Visual FoxPro, but that isn't required to get by. All that is 
really needed is the desire to create a killer application. Follow along with 
the examples, and you'll know all you need to know in no time at all.
+
+If you happen to have experience with the Python programming language, which 
Dabo is built on top of, that is great but again not required.
+
+In a nutshell, this book is for anyone wishing to develop a desktop 
application that will run on Linux, Macintosh, and Windows, and that will 
connect to an external database to get and store data.
+
+\section{Organization of this Book}
+
+The book is organized into several parts:
+
+\subsection{Context and Introduction}
+
+Covers the history of Dabo as well as its features, architecture, components, 
and install methods. Also includes an introduction to the Python programming 
language.
+
+\subsection{Dabo Overview and Patterns}
+
+Explains the components that make up Dabo, shows some simple examples, 
introduces the new user to the Python language, and goes into some detail on 
the "Three Tiers of Dabo". Also shows the typical structure of a Dabo 
application, and the typical workflow patterns of creating a Dabo application.
+
+\subsection{Tutorials}
+
+Here is where the fun begins. Follow along with the design and implementation 
of a "real-world" data-aware application, from start to finish. From the 
structure of the database, to the writing of the business rules, to the 
designing of the screens and application framework, to debugging and 
documenting, to source control, this is the real meat of the book. Get through 
this and you'll know how to start making your own application.
+
+\subsection{API Reference}
+
+You won't necessarily want to read this part of the book from beginning to 
end, but it'll probably be well thumbed through, as it'll be your reference to 
all the properties, methods, and events available for your use while developing 
your application.
+
+\subsection{Appendices}
+
+A number of stand-alone articles are presented here, including an in-depth 
tour of the Dabo Report Designer, debugging tactics, visual design options, how 
to contribute to the development of Dabo, and more.


Property changes on: trunk/book/Preface.tex
___________________________________________________________________
Name: svn:executable
   + *

Added: trunk/book/RevisedBook.cls
===================================================================
--- trunk/book/RevisedBook.cls                          (rev 0)
+++ trunk/book/RevisedBook.cls  2007-05-22 06:59:26 UTC (rev 45)
@@ -0,0 +1,766 @@
+%%
+%% This is file `RevisedBook.cls',
+%% This file is a modified version of the Standard LaTeX class 'book'.
+%% 
+%% The original source files were:
+%%
+%% classes.dtx  (with options: `book')
+%% 
+%% This is a generated file.
+%% 
+%% Copyright 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 
2006
+%% The LaTeX3 Project and any individual authors listed elsewhere
+%% in this file.
+%% 
+%% This file was generated from file(s) of the LaTeX base system.
+%% --------------------------------------------------------------
+%% 
+%% It may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3c
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%%    http://www.latex-project.org/lppl.txt
+%% and version 1.3c or later is part of all distributions of LaTeX
+%% version 2005/12/01 or later.
+%% 
+%% This file has the LPPL maintenance status "maintained".
+%% 
+%% This file may only be distributed together with a copy of the LaTeX
+%% base system. You may however distribute the LaTeX base system without
+%% such generated files.
+%% 
+%% The list of all files belonging to the LaTeX base distribution is
+%% given in the file `manifest.txt'. See also `legal.txt' for additional
+%% information.
+%% 
+%% The list of derived (unpacked) files belonging to the distribution
+%% and covered by LPPL is defined by the unpacking scripts (with
+%% extension .ins) which are part of the distribution.
+%% \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         \~}
+%%
+%% 
-----------------------------------------------------------------------------
+%%
+%% File:               RevisedBook.cls
+%% 
+%% Modified:   5.21.2007
+%% 
+%% Modified By:        Nathan Lowrie
+%%
+\NeedsTeXFormat{LaTeX2e}[1995/12/01]
+\ProvidesClass{RevisedBook}
+              [2007/05/21 v1.5a
+ LaTeX document class]
+\newcommand\afterpart{\clearpage}
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED] [EMAIL PROTECTED]
[EMAIL PROTECTED]
+\DeclareOption{a4paper}
+   {\setlength\paperheight {297mm}%
+    \setlength\paperwidth  {210mm}}
+\DeclareOption{a5paper}
+   {\setlength\paperheight {210mm}%
+    \setlength\paperwidth  {148mm}}
+\DeclareOption{b5paper}
+   {\setlength\paperheight {250mm}%
+    \setlength\paperwidth  {176mm}}
+\DeclareOption{letterpaper}
+   {\setlength\paperheight {11in}%
+    \setlength\paperwidth  {8.5in}}
+\DeclareOption{legalpaper}
+   {\setlength\paperheight {14in}%
+    \setlength\paperwidth  {8.5in}}
+\DeclareOption{executivepaper}
+   {\setlength\paperheight {10.5in}%
+    \setlength\paperwidth  {7.25in}}
+\DeclareOption{landscape}
+   [EMAIL PROTECTED]   {\paperheight}%
+    \setlength\paperheight {\paperwidth}%
+    \setlength\paperwidth  [EMAIL PROTECTED]
+\fi
[EMAIL PROTECTED]
+  [EMAIL PROTECTED]
+\else
[EMAIL PROTECTED]
+\fi
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED] [EMAIL PROTECTED]
+\fi
[EMAIL PROTECTED]  [EMAIL PROTECTED]
+\DeclareOption{draft}{\setlength\overfullrule{5pt}}
[EMAIL PROTECTED]
+\DeclareOption{final}{\setlength\overfullrule{0pt}}
+\fi
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
+\fi
[EMAIL PROTECTED]
[EMAIL PROTECTED]
+\else
[EMAIL PROTECTED]
[EMAIL PROTECTED]
+\fi
[EMAIL PROTECTED]
[EMAIL PROTECTED]
+\fi
[EMAIL PROTECTED]
+\DeclareOption{leqno}{\input{leqno.clo}}
+\DeclareOption{fleqn}{\input{fleqn.clo}}
+\DeclareOption{openbib}{%
+  \AtEndOfPackage{%
+   [EMAIL PROTECTED]@code{%
+      \advance\leftmargin\bibindent
+      \itemindent -\bibindent
+      \listparindent \itemindent
+      \parsep \z@
+      }%
+   \renewcommand\newblock{\par}}%
+}
+\ExecuteOptions{letterpaper,10pt,twoside,onecolumn,final,openright}
+\ProcessOptions
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
+\renewcommand\baselinestretch{}
+\setlength\parskip{0\p@ [EMAIL PROTECTED] [EMAIL PROTECTED]
[EMAIL PROTECTED]   51
[EMAIL PROTECTED]  151
[EMAIL PROTECTED] 301
+\setcounter{topnumber}{2}
+\renewcommand\topfraction{.7}
+\setcounter{bottomnumber}{1}
+\renewcommand\bottomfraction{.3}
+\setcounter{totalnumber}{3}
+\renewcommand\textfraction{.2}
+\renewcommand\floatpagefraction{.5}
+\setcounter{dbltopnumber}{2}
+\renewcommand\dbltopfraction{.7}
+\renewcommand\dblfloatpagefraction{.5}
[EMAIL PROTECTED]
+  [EMAIL PROTECTED]
+      [EMAIL PROTECTED]@[EMAIL PROTECTED]@empty
+      [EMAIL PROTECTED]
+      [EMAIL PROTECTED]
+      [EMAIL PROTECTED]
+    \def\chaptermark##1{%
+      \markboth {\MakeUppercase{%
+        \ifnum [EMAIL PROTECTED] >[EMAIL PROTECTED]
+          [EMAIL PROTECTED]
+            [EMAIL PROTECTED] \thechapter. \ %
+          \fi
+        \fi
+        ##1}}{}}%
+    \def\sectionmark##1{%
+      \markright {\MakeUppercase{%
+        \ifnum [EMAIL PROTECTED] >\z@
+          \thesection. \ %
+        \fi
+        ##1}}}}
+\else
+  [EMAIL PROTECTED]
+    [EMAIL PROTECTED]@empty
+    [EMAIL PROTECTED]
+    [EMAIL PROTECTED]
+    \def\chaptermark##1{%
+      \markright {\MakeUppercase{%
+        \ifnum [EMAIL PROTECTED] >[EMAIL PROTECTED]
+          [EMAIL PROTECTED]
+            [EMAIL PROTECTED] \thechapter. \ %
+          \fi
+        \fi
+        ##1}}}}
+\fi
[EMAIL PROTECTED]
+    [EMAIL PROTECTED]@[EMAIL PROTECTED]@empty
+    [EMAIL PROTECTED]
+    [EMAIL PROTECTED]
+    [EMAIL PROTECTED]@gobbletwo
+    [EMAIL PROTECTED]
+    [EMAIL PROTECTED]
+    }
+  [EMAIL PROTECTED]
+  \newcommand\maketitle{\begin{titlepage}%
+  \let\footnotesize\small
+  \let\footnoterule\relax
+  \let \footnote \thanks
+  \null\vfil
+  \vskip 60\p@
+  \begin{center}%
+    {\LARGE [EMAIL PROTECTED] \par}%
+    \vskip 3em%
+    {\large
+     \lineskip .75em%
+      \begin{tabular}[t]{c}%
+        [EMAIL PROTECTED]
+      \end{tabular}\par}%
+      \vskip 1.5em%
+    {\large [EMAIL PROTECTED] \par}%       % Set date in \large size.
+  \end{center}\par
+  [EMAIL PROTECTED]
+  \vfil\null
+  \end{titlepage}%
+  \setcounter{footnote}{0}%
+  \global\let\thanks\relax
+  \global\let\maketitle\relax
+  [EMAIL PROTECTED]@empty
+  [EMAIL PROTECTED]@empty
+  [EMAIL PROTECTED]@empty
+  [EMAIL PROTECTED]@empty
+  \global\let\title\relax
+  \global\let\author\relax
+  \global\let\date\relax
+  \global\let\and\relax
+}
+\else
+\newcommand\maketitle{\par
+  \begingroup
+    [EMAIL PROTECTED]@footnote}%
+    [EMAIL PROTECTED]@[EMAIL PROTECTED]
+    [EMAIL PROTECTED] 1em\noindent
+            [EMAIL PROTECTED]@1.8em{%
+                [EMAIL PROTECTED]@thefnmark}}##1}%
+    [EMAIL PROTECTED]
+      \ifnum [EMAIL PROTECTED]@ne
+        [EMAIL PROTECTED]
+      \else
+        [EMAIL PROTECTED]
+      \fi
+    \else
+      \newpage
+      \glo

 (18544 bytes were truncated as it was too long for the email (max 40000 bytes.)


_______________________________________________
Post Messages to: [email protected]
Subscription Maintenance: http://leafe.com/mailman/listinfo/dabo-dev
Searchable Archives: http://leafe.com/archives/search/dabo-dev
This message: http://leafe.com/archives/byMID/dabo-dev/[EMAIL PROTECTED]

Reply via email to