====== Class_diagram ======

//This is developer documentation//

	........
	     GUI

	Zim  1----1 Zim::Components::TreeView
	       |--1 Zim::Components::PathBar
	  1    `--1 Zim::Components::PageView
	  |
	..|.....
	  |  DATA
	  |  
	  |-----1 Zim::History
	  `-----1 Zim::Repository
	             1
	             `----* Zim::Repository::*
	                        1
	                        `--* Zim::Page
	........

There is a central application object which is the single instantation of the class "[[:man:Zim|Zim]]". This object manages a number of "Components". These can be either pieces of the program that are split out to a separate module or objects defined by plugins. Example of such components are the main interface widgets like the [[:man:Zim::Components::PageView|PageView]], the [[:man:Zim::Components::TreeView|TreeView]] and the [[:man:Zim::Components::PathBar|PathBar]], which are essentially wrappers around the coresponding gtk objects. From these components the main object is refered as "{app}".

The "[[Repository]]" objects manage the collection of files. Their is a main dispatcher object [[:man:Zim::Repository|Zim::Repository]] that uses one or more handlers to do the actual work, like [[:man:Zim::Repository::Files|Zim::Repository::Files]] and [[:man:Zim::Repository::Man|Zim::Repository::Man]].

The "[[Page]]" objects represent one file. At the moment there is one subclass Zim::Page::Text to represent a page consisting of formatted text.

