mirror of
https://github.com/Gnucash/gnucash.git
synced 2026-09-03 20:53:02 -05:00
Update top level architecture description.
git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@2687 57a11ea4-9604-0410-9ed3-97b8803252fd
This commit is contained in:
@@ -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 Quotes
|
||||
@section Graphs
|
||||
|
||||
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.
|
||||
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 Options
|
||||
@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.
|
||||
|
||||
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.
|
||||
|
||||
|
||||
@section QIF Import
|
||||
|
||||
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
|
||||
|
||||
Reference in New Issue
Block a user