Directory structure
===================

bin/
++++

Startup scripts to launch stoq and a few tools:

 - stoq: the script to launch the main application
 - stoqcreatedbuser: a script that is used by the configuration wizard to create
   a new postgresql database user
 - stoqdbadmin: a development tool to interact with stoq and it's database
 - stoq-daemon: a http server that is used by the calendar application
 - stoq.bat: same as stoq but for win32
 - stoqdbadmin.bat: same as stoqdbadmin but for win32

data/
+++++

External files that are required to run Stoq.

data/config/
------------

Currently mostly unused.

data/csv/
---------

Comma separated value files with example data that is used when you create
a demonstration database.

data/glade/
-----------

Glade xml user interface definitions

data/html/
----------

HTML/CSS/Images used by the interfaces in stoq that are in HTML.
Currently only the welcome dialog and the calendar application.

data/misc/
----------

Misc files such as RC style configuration for some Gtk+ widgets

data/pixmaps/
-------------

  * stoq-xxx: Icons used by Stoq in various sizes.
  * stoq.png: Desktop Icon
  * logo_xxx: Logotypes for various banks used by the Boleto Bancario
  * splash.png: Splash screen

data/sql/
---------

  * schema-xxx: The database schema for Stoq
  * schema-NEXT.sql: The future database schema
  * patch-xxx.sql: Incremental database patches in SQL
  * patch-xxx.py: Incremental database patches in Python

data/template
-------------

Templates for reports. Uses easywprint for rendering and mako as a templating
language.

data/uixml
----------

GtkUIManager xml, used by popupmenus, toolbars and menus.

debian/
+++++++

Files used by the packaging of debian/ubuntu packages.

docs/
+++++

Documentation

  * docs/release-checklist.txt: A checklist used for doing releases.

docs/api
--------

The developer API documentation, generated by sphinx.

docs/copyright
--------------

Copyright information for the icons and source code in Stoq.

docs/howto
----------

This manual

docs/manual
-----------

The user manual, only available in brazilian portuguese

locale/
+++++++

This is created in runtime and will contain the compiled message catalogs used
for translation. They are parsed in runtime by gettext.

plugins/
++++++++

Stoq plugins. These extend the functionallity of core of Stoq.

plugins/books/
--------------

plugins/ecf/
------------

plugins/nfe/
------------

plugins/optical/
----------------

po/
+++

Translation files, these are parsed by gettext and compiled into message catalogs
which are loaded in runtime.

stoq/
+++++

This contains the code to bootstrap, shell and the toplevel windows.

stoq/lib/
---------

Dependency checks, startup routings, compatibility layer with GObject-introspection
and the list of applications.

stoq/gui/
---------

Here we have the applications, which is the toplevel windows.
It also contains the installation/configuration wizard which is shown when you run
Stoq for the first time.

stoq/gui/shell/
---------------

The GUI infrastructure to create the main toplevel windows and the contents of them.

stoqlib/
++++++++

This contains the most of the code of the Stoq project. These are the parts that
are resuable and possible to use in other applications.

stoqlib/chart
-------------

Charting infrastructure, currently unused.

stoqlib/database
----------------

Basic database functionallity. Extension to the Storm ORM, a query executer,
database settings, list of tables, exceptions, creation of a new database.

stoqlib/domain
--------------

Domain classes for the Stoq application.
This is where the main business logic belongs.


stoqlib/domain/test
-------------------

Unittest for the domain classes

stoqlib/drivers
---------------

Scale and cheque drivers.

stoqlib/exporters
-----------------

Exporters spreadsheets.

stoqlib/gui
-----------

Graphical User Interface functions. This is all tied to the Gtk toolkit.

stoqlib/gui/base
----------------

stoqlib/gui/dialogs
-------------------

Dialogs. A toplevel window that has a couple of buttons and can do any generic
actions.

stoqlib/gui/editors
-------------------

Editors. These can create or modify an existing domain class.

stoqlib/gui/search
------------------

Searches for information, like a simple report.

stoqlib/gui/slaves
------------------

Components of an interface that can be plugged into an editor or dialog.

stoqlib/gui/test
----------------

Unittests for stoqlib gui.

stoqlib/gui/widgets
-------------------

Gtk extensions that does a minor UI task well.

stoqlib/gui/wizards
-------------------

Graphical wizards/assistants that are a step by step helper to do a more
complicated process.

stoqlib/importers
-----------------

CSV/OFX/Gnucas data importers.

stoqlib/l10n
------------

l10n, localization support.

stoqlib/lib
-----------

Library routines that does not depend on domain or ui.

stoqlib/net
-----------

Networking servers, handlers, twisted integration

stoqlib/reporting
-----------------

Report generatation/renderization and helpers.

stoqlib/test
------------

Unittests for stoqlib.

tests/
++++++

A few general tests, which checks coding styles and simple errors.

tests/data/
-----------

Static files required by the tests. Usually rendered content in text form
that allow us to test the graphical interfaces and reports

tests/data/ui/
--------------

Files required to run the UItests

tests/data/reporting/
---------------------

Files required to run the reporting tests

tests/data/plugins/
-------------------

Files required by the plugins

tools/
++++++
Bunch of random developer scripts

XXX GTK
XXX Glade
XXX Kiwi
XXX Proxy
XXX Delegate
XXX GUI concepts
XXX Dialog
XXX Editor
XXX Slave
XXX Wizard
XXX Search
