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]