GEPS 008: File Organization
The purpose of this page is to facilitate a discussion on the organization of the source files for Gramps. All code should reside in one of the four main subdirectories.
src/gen/
This directory contains the core components of Gramps. The src/gen/ directory shall not have any dependencies on the other top level source directories (src/gui/, src/cli/, src/web/, etc). The src/gen/ directory also shall not have any dependencies on the gtk library.
src/gen/db/
The db directory contains the code for manipulating the Gramps database.
src/gen/display/
The display directory contains business logic for displaying database objects in textual form. For example, localized date display and name display code.
src/gen/lib/
The lib directory contains the classes for the database objects.
src/gen/plug/
The plug directory contains the core logic for registering and running plugins. It also contains any utility classes used by plugins.
src/gen/plug/report/
This directory contains the base class for reports, constants, and basic utilities.
src/gen/filters/
The filters directory contains the code for filtering objects.
src/gen/mime/
The mime directory contains the code for handling mime types in Gramps.
src/gui/
This directory contains the code for the desktop graphical user interface. Any file that imports GTK or glade should live in this directory or a subdirectory of this directory.
src/gui/plug/
The gui.plug directory contains windows, dialogs, and tools that the plugins will use.
src/gui/plug/report
This directory has the dialogs for running reports, such as selection criteria, file pickers, and paper sizes.
src/gui/views/
This directory contains the code for the various graphical "views" in the GUI.
src/gui/views/treemodels/
This directory contains the code for the models used in the GUI.
src/gui/views/selectors/
This directory contains the code for the object selection dialogs in the GUI.
src/gui/editors/
This directory contains the code for the object editors used in the GUI.
src/gui/editors/displaytabs/
This directory contains the code for the tabs used in the GUI editors.
src/gui/merge/
This directory contains the code for merging objects in the GUI.
src/gui/widgets/
This directory contains widgets used by the GUI
src/cli/
This directory contains the code for the command line interface.
src/web/
This directory contains the code for the gramps-connect web interface.
src/plugins/
This directory contains all the plugins for Gramps.
src/plugins/docgen/
This directory contains all the document generator plugins.
src/plugins/gramplet/
This directory contains all the gramplet plugins.
src/plugins/tool/
This directory contains all the tool plugins.
src/plugins/report/
This directory contains all the report plugins.