Update top level architecture description.

git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@2687 57a11ea4-9604-0410-9ed3-97b8803252fd
zzzoldreleases/1.6
Dave Peticolas 26 years ago
parent 0b293484b6
commit 860b04c2d8

@ -5,8 +5,8 @@ GnuCash currently consists of the following modules.
@section The Engine
The @dfn{Engine} (located under the src/engine directory in the GnuCash
codebase) provides an interface for creating, manipulating, and
The @dfn{Engine} (located under the @file{src/engine} directory in the
GnuCash codebase) provides an interface for creating, manipulating, and
destroying three basic financial entities: Accounts, Transactions (known
as Journal Entries in accounting practice), and Splits (known as Ledger
Entries). These three entities are the central data structures of the
@ -15,10 +15,25 @@ GnuCash financial data model.
The Engine code contains no GUI code whatsoever, and is essentially
OS-neutral.
@subsection Query
The @dfn{Query} module (@file{src/engine/Query.*}) provides an interface
into the engine for finding transactions based on a set of criteria,
such as description, date posted, account membership, etc. Simple
queries can be combined using standard boolean operators.
@subsection File I/O
The @dfn{File I/O} module (@file{src/engine/FileIO.*}) provides an
interface for reading and writing a set of Accounts, Transactions, and
Splits to a binary file. This module is being deprecated. A text-based
format using scheme forms is being developed as a replacement. This new
module will be separate from the Engine.
@section The Register
The @dfn{Register} (located under src/register) implements a ledger-like
The @dfn{Register} (@file{src/register}) implements a ledger-like
GUI that allows the user to dynamically enter dates, prices, memos
descriptions, etc. in an intuitive fashion that should be obvious to
anyone who's used a checkbook register. The code is highly configurable,
@ -28,9 +43,9 @@ example, one can define a ledger with three date fields, one price
field, and four memo fields in a straightforward fashion. Cell handling
objects support and automatically validate date entry, memo entry
(w/auto-completion), prices, combo-boxes (pull-down menus), and
multi-state check-boxes. Cells can be marked read-write, or output-only.
Cells can be assigned unique colors. The currently active ledger
row-block can be highlighted with a unique color.
multi-state check-boxes. Cells can be marked read-write, or
output-only. Cells can be assigned unique colors. The currently
active ledger row-block can be highlighted with a unique color.
The register code is completely independent of the engine code, knows
nothing about accounting or any of the other GnuCash subsystems. It
@ -40,38 +55,80 @@ accounting.
@section Reports
The @dfn{Reports} module (src/reports) is a scheme (guile) based system
to create balance sheets, profit & loss statements, etc. by using the
engine API's to fetch and display data.
The @dfn{Reports} module (@file{src/scm/report.scm},
@file{src/scm/reports}) is a scheme (guile) based system to create
balance sheets, profit & loss statements, etc. by using the engine
API to fetch and display data formatted in HTML.
This module is being redesigned to use the Query API to fetch the engine
information instead of using the raw engine interface. The new reporting
design will use Queries to extract the data and assemble it into a
view-independent format. This data will then be converted to HTML
reports and/or graphs such as bar and pie charts.
@section Graphs
The @dfn{Graphs} module will be a future module implementing GUI graphs
such as bar and pie charts. These graphs will be interactive in that the
user can, for example, move pie wedges, and 'live' in that the user will
be able to click on graph subsections to see a detail graph or report of
that particular subsection.
This module will be implemented using the GUPPI library being developed
by Jon Trowbridge (@url{http://www.gnome.org/guppi}).
@section Price Quotes
The @dfn{Price Quotes} module (@file{src/quotes}) is a Perl system to
fetch stock price data off the Internet and insert it into the GnuCash
Engine. This module requires the functionality of the Finance::Quote
module available at SourceForge. The Finance::Quote module can fetch
price quotes from many different sources including Yahoo, Yahoo Europe,
and some international exchanges.
The Finance::Quote module also supports fetching currency exchange
rates. GnuCash will be extended to allow the fetching and use of
currency exchange rates.
@section User Preferences
The @dfn{User Preferences} module (@file{src/scm/options.scm},
@file{src/scm/prefs.scm}) provides an infrastructure for defining both
user-configurable and internal preferences. Preferences are defined in
scheme using several predefined preference types such as boolean,
string, date, etc. Preferences are 'implemented' by providing a GUI
which allows the user to see and change preference values. An API
is provided to query preference values and to register callbacks
which will be invoked when preferences change.
@section Quotes
Preference values which are different from the default values
are stored as scheme forms in a user-specific preferences file
(@file{~/.gnucash/config.auto}). This file is automatically
loaded upon startup.
The @dfn{Quotes} module (src/quotes) is a perl system to fetch stock
price data off the Internet and insert it into the GnuCash Engine. This
is now a separate project called Finance::Quote available at
SourceForge.
@section QIF Import
@section Options
The @dfn{QIF Import} module (@file{src/scm/qif-import}) provides
functionality for importing QIF (Quicken Interchange Format) data
into GnuCash.
The @dfn{Options} module (src/scm/options.scm) provides an
infrastructure for defining both user-configurable and internal options
or 'preferences'. User-configurable options are 'implemented' by
providing a GUI which allows the user to see and change option values.
@section GnuCash
The GnuCash module (src/gnome, src/register/gnome and src/*.[ch]) is the
main GUI application. It consists of a collection of miscellaneous GUI
code to glue together all of the pieces above into a coherent,
point-and-click whole. It is meant to be easy to use and intuitive to
the novice user without sacrificing the power and flexibility that a
professional might expect. When people say that GnuCash is trying to be
a "Quicken or MSMoney look/work/act-alike", this is the piece that they
are referring to. It really is meant to be a personal-finance manager
with enough power for the power user and the ease of use for the
beginner.
The GnuCash module (@file{src/gnome}, @file{src/register/gnome} and
@file{src/*.[ch]}) is the main GUI application. It consists of a
collection of miscellaneous GUI code to glue together all of the pieces
above into a coherent, point-and-click whole. It is meant to be easy to
use and intuitive to the novice user without sacrificing the power and
flexibility that a professional might expect. When people say that
GnuCash is trying to be a "Quicken or MS Money look/work/act-alike",
this is the piece that they are referring to. It really is meant to
be a personal-finance manager with enough power for the power user
and the ease of use for the beginner.
Currently, the Gnome interface is the only operational interface. There
is an obsolete Motif interface which is not maintained. The Qt code

Loading…
Cancel
Save