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

//This is developer documentation//

	........
	     GUI

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

There is a central application object which is the single instantiation of the class "[[:man:Zim::GUI|Zim::GUI]]". This object manages a number of objects that handle certain parts of the interface. 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::GUI::PageView|PageView]], the [[:man:Zim::GUI::TreeView|TreeView]] and the [[:man:Zim::GUI::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.

The class Zim::Selection is used to handle groups of pages. It is bound to a repository object but can represent for example a subset of the repository.
