Here is the book in pdf form for those that don't feel like compiling. Please remember that there are plenty of things wrong with it (like all those application tags...). Still, let me know what you think.
Cheers, Nate L. On 5/22/07, Nate Lowrie <[EMAIL PROTECTED]> wrote: > 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.) > > [excessive quoting removed by server] _______________________________________________ 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]
