Index: Scribus/scribus/scribusdoc.h
===================================================================
--- Scribus/scribus/scribusdoc.h	(révision 13182)
+++ Scribus/scribus/scribusdoc.h	(copie de travail)
@@ -4,7 +4,7 @@
 a copyright and/or license notice that predates the release of Scribus 1.3.2
 for which a new license (GPL+exception) is in place.
 */
-/***************************************************************************
+/*!*************************************************************************
                           scribusdoc.h  -  description
                              -------------------
     begin                : Fre Apr  6 21:47:55 CEST 2001
@@ -12,7 +12,7 @@
     email                : Franz.Schmid@altmuehlnet.de
  ***************************************************************************/
 
-/***************************************************************************
+/*!*************************************************************************
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
  *   it under the terms of the GNU General Public License as published by  *
@@ -107,688 +107,1031 @@
 };
 
 
-/**! \brief the Document Class
-  */
+/*!
+ * @brief The Scribus Document Class
+ *
+ * TODO: Write some introduction
+ */
 class SCRIBUS_API ScribusDoc : public QObject, public UndoObject, public Observable<ScribusDoc>
 {
 	Q_OBJECT
 
 public:
+	// Constructors, destructor
+
+	/*!
+	 *  Create a new scribus document
+	 */
 	ScribusDoc();
+	/*!
+	 * Create a new scribus document
+	 * @param docName name for the new document
+	 * @param unitIndex
+	 * @param pageSize
+	 * @param margins initial margins for the document
+	 * @param pageSetup
+	 */
 	ScribusDoc(const QString& docName, int unitIndex, const PageSize& pagesize, const MarginStruct& margins, const DocPagesSetup& pagesSetup);
 	~ScribusDoc();
+
 	void init();
-	void setup(const int, const int, const int, const int, const int, const QString&, const QString&);
+	void setup(const int unitIndex, const int fp, const int firstLeft, const int orientation, const int firstPageNumber, const QString& defaultPageSize, const QString& documentName);
+
+
+
+
+public:
+
+// Document states
+
+	/*!
+	 * Set the loading state of the document
+	 * See ScribusDoc.isLoading()
+	 */
 	void setLoading(const bool);
+	/*!
+	 * Is the document loading ?
+	 * See ScribusDoc.setLoading()
+	 */
 	bool isLoading() const;
+	/*!
+	 * Set modified state of the document
+	 * If state changed, update the document
+	 * See ScribusDoc.isModified()
+	 */
 	void setModified(const bool);
+	/*!
+	 * Is the document modified ?
+	 * See ScribusDoc.setModified()
+	 */
 	bool isModified() const;
-/** Setzt die Seitenattribute */
-	void setPage(double b, double h, double t, double l, double r, double bo, double sp, double ab, bool atf, int fp);
-	void resetPage(MarginStruct& newMargins, int fp);
+	/*!
+	 * Call whenever the document needs to know it has been changed.
+	 * If the document is the primary document in a main window,
+	 * it will emit the DocChanged signal to enable/disable certain operations.
+	 */
+	void changed();
 
-	/**
-	 * @brief Return the view associated with the document
+// GUI 
+	/*!
+	 * Associate document and GUI.
+	 * See ScribusDoc.hasGUI(), ScribusDoc.scMW() and ScribusDoc.view()
+	 * @param hasgui Is document associated with gui ?
+	 * @param mainWindow scribus main window
+	 * @param view scribus view
 	 */
+	void setGUI(bool hasgui, ScribusMainWindow* mainWindow, ScribusView* view);
+	/*!
+	 * Is the document associated with GUI ?
+	 * See Scribus.setGUI()
+	 */
+	bool hasGUI() const {return m_hasGUI;}
+	/*!
+	  * Get the scribus main window associated with the document.
+	  * See Scribus.setGUI()
+	  * @return the scribus man window
+	  */
+//ivro: rename this function (mainWindow or scribusMainWindow) ?
+	ScribusMainWindow* scMW() const {return m_ScMW;}
+	/*!
+	 * Get the view associated with the document.
+	 * See Scribus.setGUI()
+	 * @return the scribus view
+	 */
 	ScribusView* view() const;
-	ScribusMainWindow* scMW() const {return m_ScMW;}
-	void setGUI(bool hasgui, ScribusMainWindow* mw, ScribusView* view);
 
-	/**
-	 * @brief Return the guarded object associated with the document
+// Automatic Text Frames
+	/*!
+	 * Set if doc uses automatic text frames.
+	 * See ScribusDoc.usesAutomaticTextFrames(), ScribusDoc.PageSp and ScribusDoc.PageSpa
 	 */
-	const ScGuardedPtr<ScribusDoc>& guardedPtr() const;
-	
-	UpdateManager* updateManager() { return &m_updateManager; }
-	MassObservable<PageItem*> * itemsChanged() { return &m_itemsChanged; }
-	MassObservable<Page*>     * pagesChanged() { return &m_pagesChanged; }
-	MassObservable<QRectF>    * regionsChanged() { return &m_regionsChanged; }
-	void invalidateRegion(QRectF region);
-	
-	// Add, delete and move pages
-	
-	Page* addPage(const int pageNumber, const QString& masterPageName=QString::null, const bool addAutoFrame=false);
-	void deletePage(const int);
-	//! @brief Add a master page with this function, do not use addPage
-	Page* addMasterPage(const int, const QString&);
-	void deleteMasterPage(const int);
-	//! @brief Rebuild master name list
-	void rebuildMasterNames(void);
-	//! @brief Replace a master page by default one
+	void setUsesAutomaticTextFrames(const bool);
+	/*!
+	 * Is document using automatic text frames ?
+	 * See ScribusDoc.setUsesAutomaticTextFrames
+	 */
+	bool usesAutomaticTextFrames() const;
+
+// Grid and Guides
+	/*!
+	 * Should guides be locked or not ?
+	 * @param isLocked If true guides on pages cannot be moved if false they
+	 * can be dragged to new positions.
+	 * @author Riku Leino
+	 */
+	void lockGuides(bool isLocked);
+
+// Current Page
+	/*!
+	 * Set new current page.
+	 */
+	void setCurrentPage(Page*);
+	/*!
+	 * Get the current page.
+	 */
+	Page* currentPage();
+	/*!
+	 * Get the current page number.
+	 */
+	int currentPageNumber();
+
+// Unit index and unit ratio
+	/*!
+	 * Set the document's unit index and update the document's unit ratio.
+	 * See ScribusDoc.unitIndex() and ScribusDoc.unitRatio()
+	 */
+	void setUnitIndex(const int);
+	/*!
+	 * Get the document's unit index.
+	 * See ScribusDoc.setUnitIndex()
+	 */
+	int unitIndex() const;
+	/*!
+	 * Get the document's unit ratio.
+	 * See ScribusDoc.setUnitIndex()
+	 */
+	double unitRatio() const;
+// Document's properties
+	/*!
+	 * Sets the name of the document.
+	 * See ScribusDoc.DocName
+	 * @param name Name for the document
+	 * @author Riku Leino
+	 */
+	void setName(const QString& name);
+
+/*! @name Master Page
+ * Master page related functions.
+ *
+ * A master page is a model for page. It is used to use common item on multiple page.
+ * Use applyMasterPage() to associate a master page to a page.
+ * The master page mode (see masterPageMode()) allow to work with master pages and items with the same functions that use for pages and items.
+ */ //@{
+	/*!
+	 * Is the document in master page mode ?
+	 * In master page mode
+	 *      ScribusDoc.Pages = &ScribusDoc.MasterPages
+	 *      ScribusDoc.Items = &ScribusDoc.MasterItems
+	 * In normal mode (ie not in master mode)
+	 *      ScribusDoc.Pages = &ScribusDoc.DocPages
+	 *      ScribusDoc.Items = &ScribusDoc.DocItems
+	 */
+	bool masterPageMode() const { return m_masterPageMode; }
+	/*!
+	 * Set the doc into Master page mode.
+	 */
+// Do we need to return if the move to master page mode was successful?
+	void setMasterPageMode(bool);
+
+	/*!
+	 * Add a master page.
+	 * Use this function to add a master page, do not use addPage
+	 * @param pageNumber index for the master page
+	 * @param pageName name of the master page
+	 * @return added page
+	 */
+	Page* addMasterPage(const int pageNumber, const QString& pageName);
+	/*!
+	 * Delete a master page.
+	 * @param pageNumber index of the master page
+	 */
+	void deleteMasterPage(const int pageNumber);
+	/*!
+	 * Copies a normal page to be a master pages.
+	 * @param pageNumber index of the page to copy
+	 * @param leftPage
+         * @param maxLeftPage
+	 * @param masterPageName name for the master page
+	 * @param copyFromAppliedMaster
+	 */
+	bool copyPageToMasterPage(const int pageNumber, const int leftPage, const int maxLeftPage, const QString& masterPageName, bool copyFromAppliedMaster);
+	/*!
+	 * Replace a master page by default one.
+	 * @param oldMasterPage name of the master page to remplace
+	 */
 	void replaceMasterPage(const QString& oldMasterPage);
-	//! @brief Rename a master page
+	/*!
+	 * Rename a master page.
+	 * @param oldPageName old name of the master page
+	 * @param newPageName new name for the master page
+	 */
 	bool renameMasterPage(const QString& oldPageName, const QString& newPageName);
-	//! @brief Create the default master pages based on the layout selected by the user, ie, Normal, Normal Left, etc.
-	void createDefaultMasterPages();
-	//! @brief Create the requested pages in a new document, run after createDefaultMasterPages()
-	void createNewDocPages(int pageCount);
-	/**
-	 * @brief Add the automatic text frame to the page
-	 * @param pageNumber page number
-	 * @return number of frame
+	/*!
+	 * Apply a master page.
+	 * @param masterPageName name of the master page
+	 * @param pageNumber index of the page
 	 */
-	int addAutomaticTextFrame(const int pageNumber);
-	/**
-	 * Set the left and right margins based on the location of the page
-	 * @param pageIndex 
+	bool applyMasterPage(const QString& masterPageName, const int pageNumber);
+	/*!
+	 * Rebuild master name list.
+	 * Rebuild ScribusDoc.MasterName list from the master page name
 	 */
-	void setLocationBasedPageLRMargins(uint pageIndex);
-	/**
-	 * @brief Move page(s) within the document
+	void rebuildMasterNames(void);
+//@} //End of masterpage group
+
+/*! @name Page
+ * Page related functions.
+ *
+ * A page represents a paper page. See Page::Page
+ */ //@{
+	// Add, delete and move page
+
+	/*!
+	 * Add a page.
+	 * Do not use this to add a master page, use addMasterPage instead
+	 * @param pageNumber index for the page
+	 * @param masterPageName master page to use
+	 * @param addAutoFrame add automatic text frame
+	 * @return addedpage
+	 */
+	Page* addPage(const int pageNumber, const QString& masterPageName=QString::null, const bool addAutoFrame=false);
+	/*!
+	 * Delete a page.
+	 * @param pageNumber index of the page
+	 */
+	void deletePage(const int pageNumber);
+	/*!
+	 * Move page(s) within the document.
 	 * @param from page index
 	 * @param to page index
-	 * @param ziel target to move to (page index)
-	 * @param art Before, After or at the end
+	 * @param ziel page index of the target to move to
+	 * @param art Before (0), After (1) or At the end (2)
 	 */
+//ivro: create typedef for param art (like whereToMove) ?
 	void movePage(const int from, const int to, const int ziel, const int art);
-	
-	/**
-	 * @brief Copy a page (pageNumberToCopy) copyCount times, whereToInsert(before or after) the existingPage or at the end.
-	 * @param pageNumberToCopy 
-	 * @param existingPage 
-	 * @param whereToInsert 
-	 * @param copyCount 
+	/*!
+	 * Copy a page.
+	 * Copy a page (pageNumberToCopy) copyCount times, whereToInsert(before or after) the existingPage or at the end.
+	 * @param pageNumberToCopy index of the page
+	 * @param existingPage where to copy (page index)
+	 * @param whereToInsert Before (0), After (1) or At the end (2)
+	 * @param copyCount number of copy
 	 */
+//ivro: use typedef whereToMove for param whereToInsert ?
 	void copyPage(int pageNumberToCopy, int existingPage, int whereToInsert, int copyCount);
-	
+
+	// Properties of page
+
+	/*!
+	 * Set page properties.
+	 * @param width page width
+	 * @param height page height
+	 * @param marginsTop page margins top
+	 * @param marginsLeft page margins left
+	 * @param marginsRight page margins right
+	 * @param marginsBottom page margins bottom
+	 * @param numberOfColumns number of automaticTextFrames columns
+	 * @param distanceOfColumns distance between automaticTextFrams columns 
+	 * @param automaticTextFrames is automaticTextFrames enabled ?
+	 * @param pageLayout index of the page layout in ScribusDoc.pageSets
+	 */
+	void setPage(double width, double height, double marginsTop, double marginsLeft, double marginsRight, double marginsBottom, double numberOfColums, double distanceOfColumns, bool automatictTextFrames, int pageLayout);
+	/*!
+	 * Reset the page properties.
+	 * @param newMargins margins to apply
+	 * @param pageLayout index of the page layout in Scribus.pageSets
+	 */
+	void resetPage(MarginStruct& newMargins, int pageLayout);
+
+	/*!
+	 * Add the automatic text frame to the page.
+	 * @param pageNumber index of page
+	 * @return number of text frame created, -1 on error
+	 */
+	int addAutomaticTextFrame(const int pageNumber);
+
+	/*!
+	 * Set the page margins. Current code uses current page only, also provide a (currently, TODO) option for this.
+	 * @param initialTop
+	 * @param initialBottom
+	 * @param initialLeft
+	 * @param initialRight
+	 * @param initialHeight
+	 * @param initialWight
+	 * @param height
+	 * @param width
+	 * @param orientation
+	 * @param pageSize
+	 * @param pageNumber if equal to -1, do nothing and return false. Caution default is -1.
+	 * @param pageType see Page.LeftPg, default to 0 (Right page)
+	 */
+//ivro: is this fuction name goods as it does things that not only about margins ?
+	bool changePageMargins(const double initialTop, const double initialBottom, const double initialLeft, const double initialRight, const double initialHeight, const double initialWidth, const double height, const double width, const int orientation, const QString& pageSize, const int pageNumber=-1, const int pageType = 0);
+
+	/*!
+	 * Get page's bleeds.
+	 * @param pageNumber index of the page
+	 * @param bleedData struct to get the bleed
+	 */
+//ivro: is this not better in Page ?
+	void getBleeds(int pageNumber, MarginStruct& bleedData);
+	/*!
+	 * Get page's bleeds.
+	 * @param page page to look at
+	 * @param bleedData struct to get the bleed
+	 */
+	void getBleeds(Page* page, MarginStruct& bleedData);
+
+
+	// Canvas
+
+	/*!
+	 * Get the location of the page on the canvas, ie, left, middle, or right.
+	 * Does not give information about middle left, etc.
+	 * @param pageIndex Index of page to find location for
+	 * @return LeftPage, MiddlePage, RightPage, enum from pagestructs.h
+	 */
+	PageLocation locationOfPage(int pageIndex) const;
+	/*!
+	 * Get the column of the page on the canvas, ie, left, middle, or right.
+	 * @param pageIndex Index of page to find location for
+	 * @return int of 0,1,2,3
+	 */
+	int columnOfPage(int pageIndex) const;
+	/*!
+	 * Return the x offset for a page on the canvas.
+	 * @retval double containing the offset. Returns -1.0 if page not in Pages list (as -ve is not possible).
+	 * Mostly saves bringing in extra includes into files that already have scribusdoc.h
+	 */
+	double getXOffsetForPage(const int);
+	/*!
+	 * Return the y offset for a page on the canvas.
+	 * @retval double coutaining the offset. Returns -1.0 if page not in pages list (as -ve is not possible).
+	 */
+	double getYOffsetForPage(const int);
+
+	/*!
+	 * Set the left and right margins based on the location of the page.
+	 * @param pageIndex index of the page
+	 */
+	void setLocationBasedPageLRMargins(uint pageIndex);
+//@} // End of pages groups
+
+/*! @name Layer
+ * layer related functions.
+ */ //@{
 	// Add, delete and move layers
-	/**
-	 * @brief Add a layer to the current document
+
+	/*!
+	 * Add a layer to the current document.
 	 * @param layerName name of layer
 	 * @param activate the layer active
 	 * @return Number of the layer created
 	 */
 	int addLayer(const QString& layerName=QString::null, const bool activate=false);
-	/**
-	 * @brief Copies a layer from the current document
+	/*!
+	 * Copies a layer from the current document.
 	 * @param layerNumberToCopy source layer
 	 * @param whereToInsert target layer
 	 * @return Success or failure
 	 */
 	void copyLayer(int layerNumberToCopy, int whereToInsert);
-	/**
-	 * @brief Delete a layer from the current document
+	/*!
+	 * Delete a layer from the current document.
 	 * @param layerNumber of layer
 	 * @param deleteItems the items on the layer too?
 	 * @return Success or failure
 	 */
 	bool deleteLayer(const int layerNumber, const bool deleteItems);
-	/**
-	 * @brief Return the number of the current layer
-	 * @return Active layer number
+	/*!
+	 * FIXME: Make protected once scripter function no longer uses this directly
 	 */
-	int activeLayer();
+	void removeLayer(int l, bool dl = false);
 
-	/**
-	 * @brief Return the name of the current layer
-	 * @return Name of the layer
-	 */
-	const QString& activeLayerName();
-	/**
-	 * @brief Set the active layer via the layer number
+	// Active layer
+
+	/*!
+	 * Set the active layer via the layer number.
 	 * @param layerToActivate Number of the layer
 	 * @return Success or failure
 	 */
 	bool setActiveLayer(const int layerToActivate);
-	/**
-	 * @brief Set the active layer via the layer name
+	/*!
+	 * Set the active layer via the layer name.
 	 * @param layerNameToActivate Name of the layer
 	 * @return Success or failure
 	 */
 	bool setActiveLayer(const QString & layerNameToActivate);
-	/**
-	 * @brief Set the layer printable via the layer number
+	/*!
+	 * Return the number of the current layer.
+	 * @return Active layer number
+	 */
+	int activeLayer();
+	/*!
+	 * Return the name of the current layer.
+	 * @return Name of the layer
+	 */
+	const QString& activeLayerName();
+
+	// Layer properties
+
+	/*!
+	 * Return the layer name.
 	 * @param layerNumber Number of the layer
+	 * @return Name of the layer
+	 */
+	QString layerName(const int layerNumber) const;
+	/*!
+	 * Change the name of a layer.
+	 * @param layerNumber number of the layer
+	 * @param newName new name of the layer
+	 * @return Success or failure
+	 */
+	bool changeLayerName(const int layerNumber, const QString& newName);
+	/*!
+	 * Set the layer printable via the layer number.
+	 * @param layerNumber Number of the layer
 	 * @param isPrintable bool true = layer is prantable
 	 * @return Success or failure
 	 */
 	bool setLayerPrintable(const int layerNumber, const bool isPrintable);
-	/**
-	 * @brief Is the layer printable
+	/*!
+	 * Is the layer printable ?
 	 * @param layerNumber Number of the layer
 	 * @return Printable or not
 	 */
-	bool layerPrintable(const int layerNumber);
-	/**
-	 * @brief Set the layer visible via the layer number
+	bool layerPrintable(const int layerNumber);  
+	/*!
+	 * Set the layer visible via the layer number.
 	 * @param layerNumber Number of the layer
 	 * @param isViewable true = layer is visible
 	 * @return Success or failure
 	 */
 	bool setLayerVisible(const int layerNumber, const bool isViewable);
-	/**
-	 * @brief Is the layer visible
+	/*!
+	 * Is the layer visible ?
 	 * @param layerNumber Number of the layer
 	 * @return Visible or not
 	 */
 	bool layerVisible(const int layerNumber);
-	/**
-	 * @brief Set the layer locked via the layer number
+	/*!
+	 * Set the layer locked via the layer number.
 	 * @param layerNumber Number of the layer
 	 * @param isLocked true = layer is locked
 	 * @return Success or failure
 	 */
 	bool setLayerLocked(const int layerNumber, const bool isLocked);
-	/**
-	 * @brief Is the layer locked
+	/*!
+	 * Is the layer locked ?
 	 * @param layerNumber Number of the layer
 	 * @return Locked or not
 	 */
 	bool layerLocked(const int layerNumber);
-	/**
-	 * @brief Set the layer flow via the layer number
+	/*!
+	 * Set the layer flow via the layer number.
 	 * @param layerNumber Number of the layer
 	 * @param flow true = Text flows around objects on this layer
 	 * @return Success or failure
 	 */
 	bool setLayerFlow(const int layerNumber, const bool flow);
-	/**
-	 * @brief does text flow around objects on this layer
+	/*!
+	 * does text flow around objects on this layer ?
 	 * @param layerNumber Number of the layer
 	 * @return flow or not
 	 */
 	bool layerFlow(const int layerNumber);
-	/**
-	 * @brief Set the layer transparency via the layer number
+	/*!
+	 * Set the layer transparency via the layer number.
 	 * @param layerNumber Number of the layer
 	 * @param trans transparency value 0.0 - 1.0
 	 * @return Success or failure
 	 */
 	bool setLayerTransparency(const int layerNumber, double trans);
-	/**
-	 * @brief returns the layer transparency
+	/*!
+	 * returns the layer transparency.
 	 * @param layerNumber Number of the layer
 	 * @return transparency value 0.0 - 1.0
 	 */
 	double layerTransparency(const int layerNumber);
-	/**
-	 * @brief Set the layer layerBlendMode via the layer number
+	/*!
+	 * Set the layer layerBlendMode via the layer number.
 	 * @param layerNumber Number of the layer
 	 * @param blend layerBlendMode
 	 * @return Success or failure
 	 */
 	bool setLayerBlendMode(const int layerNumber, int blend);
-	/**
-	 * @brief returns the layer BlendMode
+	/*!
+	 * Returns the layer BlendMode.
 	 * @param layerNumber Number of the layer
 	 * @return layerBlendMode
 	 */
 	int layerBlendMode(const int layerNumber);
-	/**
-	 * @brief Return the level of the requested layer
+	/*!
+	 * Set the layer outline mode via the layer number.
 	 * @param layerNumber Number of the layer
-	 * @return Level of the layer
+	 * @param outline true = layer is displayed in outlines only
+	 * @return Success or failure
 	 */
-	int layerLevelFromNumber(const int layerNumber);
-	/**
-	 * @brief Set the layer marker color
+	bool setLayerOutline(const int layerNumber, const bool outline);
+	/*!
+	 * Is this layer in outline mode ?
 	 * @param layerNumber Number of the layer
+	 * @return outline or not
+	 */
+	bool layerOutline(const int layerNumber);
+
+	// Layer marker color
+
+	/*!
+	 * Set the layer marker color.
+	 * @param layerNumber Number of the layer
 	 * @param color color of the marker
 	 * @return Success or failure
 	 */
 	bool setLayerMarker(const int layerNumber, QColor color);
-	/**
-	 * @brief returns the layer marker color
+	/*!
+	 * Returns the layer marker color.
 	 * @param layerNumber Number of the layer
 	 * @return marker color
 	 */
 	QColor layerMarker(const int layerNumber);
-	/**
-	 * @brief Set the layer outline mode via the layer number
+
+	// Layer level
+
+	/*!
+	 * Returns the level of the requested layer.
 	 * @param layerNumber Number of the layer
-	 * @param outline true = layer is displayed in outlines only
-	 * @return Success or failure
+	 * @return Level of the layer
 	 */
-	bool setLayerOutline(const int layerNumber, const bool outline);
-	/**
-	 * @brief is this layer in outline mode
-	 * @param layerNumber Number of the layer
-	 * @return outline or not
-	 */
-	bool layerOutline(const int layerNumber);
-	/**
-	 * @brief Return the number of the layer at a certain level
+	int layerLevelFromNumber(const int layerNumber);
+	/*!
+	 * Returns the number of the layer at a certain level.
 	 * @param layerLevel Layer level
 	 * @return Layer number
 	 */
 	int layerNumberFromLevel(const int layerLevel);
-	/**
-	 * @brief Return the layer count
-	 * @return Number of layers in doc
-	 */
-	int layerCount() const;
-	/**
-	 * @brief Lower a layer
+
+	// Lower and Raise Layer
+
+	/*!
+	 * Lowers a layer.
 	 * @param layerNumber Number of the layer
 	 * @return Success or failure
 	 */
 	bool lowerLayer(const int layerNumber);
-	/**
-	 * @brief Lower a layer using the level
+	/*!
+	 * Lowers a layer using the level.
 	 * @param layerLevel Level of the layer
 	 * @return Success or failure
 	 */
 	bool lowerLayerByLevel(const int layerLevel);
-	/**
-	 * @brief Raise a layer
+	/*!
+	 * Raises a layer.
 	 * @param layerNumber Number of the layer
 	 * @return Success or failure
 	 */
 	bool raiseLayer(const int layerNumber);
-	/**
-	 * @brief Raise a layer using the level
+	/*!
+	 * Raises a layer using the level.
 	 * @param layerLevel Level of the layer
 	 * @return Success or failure
 	 */
 	bool raiseLayerByLevel(const int layerLevel);
-	/**
-	 * @brief Return the layer name
-	 * @param layerNumber Number of the layer
-	 * @return Name of the layer
+
+	// Various functions on layer
+
+	/*!
+	 * Returns the layer count.
+	 * @return Number of layers in doc
 	 */
-	QString layerName(const int layerNumber) const;
-	/**
-	 * @brief Change the name of a layer
-	 * @param layerNumber number of the layer
-	 * @param newName new name of the layer
-	 * @return Success or failure
-	 */
-	bool changeLayerName(const int layerNumber, const QString& newName);
-	/**
-	 * @brief Does the layer have items on it?
+	int layerCount() const;
+	/*!
+	 * Does the layer have items on it ?
 	 * @param layerNumber Number of the layer
 	 * @return Layer contains items bool
 	 */
 	bool layerContainsItems(const int layerNumber);
-	/**
-	 * @brief Renumber a layer. Used in particular for reinsertion for undo/redo
+	/*!
+	 * Renumbers a layer. Used in particular for reinsertion for undo/redo.
 	 * @param layerNumber old layer number
 	 * @param newLayerNumber New layer number
 	 * @return Success or failure
 	 */
 	bool renumberLayer(const int layerNumber, const int newLayerNumber);
-	/**
-	 * @brief Return a list of the layers in their order
+	/*!
+	 * Returns a list of the layers in their order.
 	 * @param list QStringList to insert the layer names into
 	 */
 	void orderedLayerList(QStringList* list);
-	//Items
-	bool deleteTaggedItems();
+//@} // End of Layer function
 
+/*! @name Item
+ * Item related functions.
+ */ //@{
+	// Add
+
 	/*!
-		* @brief Builds a qmap of the icc profiles used within the document
+	 * Add an Item to the document.
+	 * A simple function to create an item of a defined type and add it to the document
+	 * Will need extensive rewriting once we have various classes of PageItems, at a guess.
+	 *
+	 * @param itemType type
+	 * @param frameType frame type
+	 * @param x X pos
+	 * @param y Y pos
+	 * @param b width
+	 * @param h height
+	 * @param w ?
+	 * @param fill fill color name
+	 * @param outline outline color name
+	 * @param itemFinalised Used to handle item creation for undo while the user is still dragging.
+	 * @return Number of created item, -1 on failure.
 	 */
-	void getUsedProfiles(ProfilesL& usedProfiles);
-	bool OpenCMSProfiles(ProfilesL InPo, ProfilesL InPoCMYK, ProfilesL MoPo, ProfilesL PrPo);
-	void CloseCMSProfiles();
-	void SetDefaultCMSParams();
-	/**
-	 * @brief Switch Colormanagement on or of
-	 * @param enable bool, if true Colormanagement is switched on, else off
+	int itemAdd(const PageItem::ItemType itemType, const PageItem::ItemFrameType frameType, const double x, const double y, const double b, const double h, const double w, const QString& fill, const QString& outline, const bool itemFinalised);
+	/*!
+	 * Add an Item to the page.
+	 * Item will be fitted to the closest guides/margins of the x/y position.
+	 *
+	 * @param itemType type
+	 * @param itemFramType frame type
+	 * @param x X pos
+	 * @param y Y pos
+	 * @param w ?
+	 * @param fill fill color name
+	 * @param outline outline color name
+	 * @param itemFinalised Used to handle item creation for undo while the user is still dragging
+	 * @return Number of created item, -1 on failure.
 	 */
-	void enableCMS(bool enable);
-	
-	const ParagraphStyle& paragraphStyle(QString name) { return docParagraphStyles.get(name); }
-	const StyleSet<ParagraphStyle>& paragraphStyles()   { return docParagraphStyles; }
-	bool isDefaultStyle( const ParagraphStyle& p ) const { return docParagraphStyles.isDefault(p); }
-	bool isDefaultStyle( const CharStyle& c ) const { return docCharStyles.isDefault(c); }
-// 	bool isDefaultStyle( LineStyle& l ) const { return MLineStyles......; }
-
-	void getNamedResources(ResourceCollection& lists) const;
-	void replaceNamedResources(ResourceCollection& newNames);	
-	
-	void redefineStyles(const StyleSet<ParagraphStyle>& newStyles, bool removeUnused=false);
-	/**
-	 * @brief Remove any reference to old styles and replace with new name. This needs to be
-	 *        called when a style was removed. New name may be "".
-	 * @param newNameForOld a map which maps the name of any style to remove to a new stylename
+	int itemAddArea(const PageItem::ItemType itemType, const PageItem::ItemFrameType frameType, const double x, const double y, const double w, const QString& fill, const QString& outline, const bool itemFinalised);
+	/*!
+	 * Allow the user to create a frame easily with some simple placement and sizing options.
+	 * @param iafData a InsertAFrameData structure with params
+	 * @return int item id? FIXME
 	 */
-	void replaceStyles(const QMap<QString,QString>& newNameForOld);
-	/**
-	 * @brief Insert styles from another document in this document.
-	 *        
-	 * @param fileName The path of the document we want to extract its styles
+	int itemAddUserFrame(InsertAFrameData &iafData);
+	/*!
+	 * Commit item creation when a user has click-drag created an item.
+	 * Only called from ScribusView. Note the undo target is the page, so the undo code remains their for now.
+	 *
+	 * @return If an item was committed and the view must emit its signal, which needs removing from here, TODO.
 	 */
-	void loadStylesFromFile(QString fileName);
-	/**
-	 * @brief Gather styles from another document.
-	 *        
-	 * @param fileName The path of the document we want to extract its styles
-	 * @param tempStyles A pointer to a StyleSet which will be filled by paragraph styles
-	 * @param tempCharStyles A pointer to a StyleSet which will be filled by character styles
-	 * @param tempLineStyles A map which will be filled by line styles
+	bool itemAddCommit(const int itemNumber);
+	/*!
+	 * Finalise item creation, only to be called from itemAdd().
+	 * Simply split off code from itemAdd.
+	 * 
+	 * @param itemType type
+	 * @param frameType frame type
+	 * @param itemNumber item index
 	 */
-	void loadStylesFromFile(QString fileName, StyleSet<ParagraphStyle> *tempStyles,
-	                                          StyleSet<CharStyle> *tempCharStyles,
-	                                          QMap<QString, multiLine> *tempLineStyles);
-
-	const CharStyle& charStyle(QString name) { return docCharStyles.get(name); }
-	const StyleSet<CharStyle>& charStyles()  { return docCharStyles; }
-	void redefineCharStyles(const StyleSet<CharStyle>& newStyles, bool removeUnused=false);
-	/**
-	 * @brief Remove any reference to old styles and replace with new name. This needs to be
-	 *        called when a style was removed. New name may be "".
-	 * @param newNameForOld a map which maps the name of any style to remove to a new stylename
+	void itemAddDetails(const PageItem::ItemType itemType, const PageItem::ItemFrameType frameType, const int itemNumber);
+	/*!
+	 * Item type conversion functions.
+	 * @param currItem item to convert
+	 * @param newType
+	 * @param secondaryItem ?
 	 */
-	void replaceCharStyles(const QMap<QString,QString>& newNameForOld);
-
-	/**
-	 * @brief Should guides be locked or not
-	 * @param isLocked If true guides on pages cannot be moved if false they
-	 * can be dragged to new positions.
-	 * @author Riku Leino
-	 */
-	void lockGuides(bool isLocked);
-	/**
-	 * @brief Method used when an undo/redo is requested.
-	 * @param state State describing the action that is wanted to be undone/redone
-	 * @param isUndo If true undo is wanted else if false redo.
-	 * @author Riku Leino
-	 */
-	void restore(UndoState* state, bool isUndo);
-	/**
-	 * @brief Sets the name of the document
-	 * @param name Name for the document
-	 * @author Riku Leino
-	 */
-	void setName(const QString& name);
+	PageItem* convertItemTo(PageItem *currItem, PageItem::ItemType newType, PageItem* secondaryItem=NULL);
 	/*!
-	 * @brief Returns a stringlist of the item attributes within the document
+	 * Paste an item to the document.
+	 * The bulk of a paste item process runs here for want of a better place, but its a better place
+	 * than the view where it used to be. 
+	 * TODO Once the pageitem restructure is done, this is probably unnecessary but it removes the 
+	 * unnecessary part from the view for now which is overloaded with non ScrollView code.
 	 */
-	QStringList getItemAttributeNames();
+	//TODO: void PasteItem(struct CopyPasteBuffer *Buffer, bool loading, bool drag = false);
 
-	bool AddFont(QString name, int fsize = 10);
+	//itemDelete
+	//itemBlah...
+
+	// move, rotate, resize items
+
 	/*!
-	 * @brief TODO: Reorganise the fonts.. how? Moved from scribus.cpp
-	 * CB: almost the same as getUsedFonts???
+	 * Move item.
+	 * @param newX new X coord
+	 * @param newY new Y coord
+	 * @param item page item to move
+	 * @param fromMP ?
 	 */
-	QMap<QString,int> reorganiseFonts();
+//ivro: standardize param order as PageItem changed each function ?
+//	something like item, args, options ?
+	bool MoveItem(double newX, double newY, PageItem* ite, bool fromMP = false);
 	/*!
-	 * @brief Returns a qmap of the fonts and  their glyphs used within the document
+	 * Rotate Item.
+	 * @param angle angle to rotate
+	 * @param itemNumber index of the item to rotate
 	 */
-	void getUsedFonts(QMap<QString,QMap<uint, FPointArray> > &Really);
-	void checkItemForFonts(PageItem *it, QMap<QString, QMap<uint, FPointArray> > & Really, uint lc);
-
+	void RotateItem(double angle, int itemNumber);
 	/*!
-	 * @brief Replace line style colors
+	 * Rotate Item.
+	 * @param angle angle to rotate
+	 * @param currItem page item to rotate
 	 */
-	void replaceLineStyleColors(const QMap<QString, QString>& colorMap);
+	void RotateItem(double angle, PageItem *currItem);
 	/*!
-	* @brief Builds a qmap of the colours used within the document
-	*/
-	void getUsedColors(ColorList &colorsToUse, bool spot = false);
+	 * Move and Rotate Item.
+	 * @param currItem page item to transform
+	 * @param npv ?
+	 * @param fromMP ?
+	 */
+	void MoveRotated(PageItem *currItem, FPoint npv, bool fromMP = false);
 	/*!
-	* @brief Return if a specific color is used by line styles
-	*/
-	bool lineStylesUseColor(const QString& colorName);
+	 * Resize item.
+	 * @param newX new X coord
+	 * @param newY new Y coord
+	 * @param ite index of page item to resize
+	 * @param fromMp ?
+	 * @param DoUpdateClip ?
+	 * @param redraw ?
+	 */
+	bool SizeItem(double newX, double newY, int ite, bool fromMP = false, bool DoUpdateClip = true, bool redraw = true);
 	/*!
-	* @brief Set the patterns for a document
-	*/
-	bool addPattern(QString &name, ScPattern& pattern);
-	void setPatterns(QMap<QString, ScPattern> &patterns);
+	 * Resize item.
+	 * @param newX new X coord
+	 * @param newY new Y coord
+	 * @param pi page item to resize
+	 * @param fromMp ?
+	 * @param DoUpdateClip ?
+	 * @param redraw ?
+	 */
+	bool SizeItem(double newX, double newY, PageItem *pi, bool fromMP = false, bool DoUpdateClip = true, bool redraw = true);
 	/*!
-	* @brief Builds a QStringList of the patterns used within the document
-	*/
-	QStringList getUsedPatterns();
-	QStringList getUsedPatternsSelection(Selection* customSelection);
-	QStringList getUsedPatternsHelper(QString pattern, QStringList &results);
-	/**
-	 * @brief Set and get the document's unit index
+	 * Size and Move item.
+	 * @param newX new X coord
+	 * @param newY new Y coord
+	 * @param ite index of page item to transform
+	 * @param fromMp ?
+	 * @param constrainRotation ?
 	 */
-	void setUnitIndex(const int);
-	int unitIndex() const;
-	double unitRatio() const;
-	/**
-	 * @brief Apply a master page
-	 */
-	bool applyMasterPage(const QString& pageName, const int pageNumber);
-	/**
-	 * @brief Undo function for applying a master page
-	 */
-	void restoreMasterPageApplying(SimpleState *state, bool isUndo);
-	void restorePageCopy(SimpleState *state, bool isUndo);
-	/**
-	 * @brief Save function
-	 */
-	bool save(const QString& fileName, QString* savedFile = NULL);
-	/**
-	 * @brief Set the page margins. Current code uses current page only, also provide a (currently, TODO) option for this.
-	 */
-	bool changePageMargins(const double initialTop, const double initialBottom, const double initialLeft, const double initialRight, const double initialHeight, const double initialWidth, const double Height, const double width, const int orientation, const QString& pageSize, const int pageNumber=-1, const int pageType = 0);
-	/**
-	 * @brief Recalculate the colors after CMS settings change. Update the items in the doc accordingly.
-	 */
-	 void recalculateColors();
-	/**
-	 * @brief Sets up the ScText defaults from the document
-	 */
-	void setScTextDefaultsFromDoc(ScText *);
-	/**
-	 * @brief Copies a normal page to be a master pages
-	 */
-	bool copyPageToMasterPage(const int, const int, const int, const QString&, bool);
-	/**
-	 * @brief Paste an item to the document.
-	 * The bulk of a paste item process runs here for want of a better place, but its a better place
-	 * than the view where it used to be. 
-	 * TODO Once the pageitem restructure is done, this is probably unnecessary but it removes the 
-	 * unnecessary part from the view for now which is overloaded with non ScrollView code.
-	 */
-	//TODO: void PasteItem(struct CopyPasteBuffer *Buffer, bool loading, bool drag = false);
-	
-	/**
-	 * @brief Add an Item to the document.
-	 * A simple function to create an item of a defined type and add it to the document
-	 * Will need extensive rewriting once we have various classes of PageItems, at a guess.
-	 *
-	 * @param itemFinalised Used to handle item creation for undo while the user is still dragging.
-	 * @return Number of created item, -1 on failure.
-	\param itemType type
-	\param frameType frame type
-	\param x X pos
-	\param y Y pos
-	\param b width
-	\param h height
-	\param w ?
-	\param fill fill color name
-	\param outline outline color name
-	*/
-	int itemAdd(const PageItem::ItemType itemType, const PageItem::ItemFrameType frameType, const double x, const double y, const double b, const double h, const double w, const QString& fill, const QString& outline, const bool itemFinalised);
+	bool MoveSizeItem(FPoint newX, FPoint newY, int ite, bool fromMP = false, bool constrainRotation=false);
+//ivro: don't know what it does
+	void AdjustItemSize(PageItem *currItem);
 
-	/** Add an item to the page based on the x/y position. Item will be fitted to the closest guides/margins */
-	int itemAddArea(const PageItem::ItemType itemType, const PageItem::ItemFrameType frameType, const double x, const double y, const double w, const QString& fill, const QString& outline, const bool itemFinalised);
-	
-	/**
-	 * @brief Allow the user to create a frame easily with some simple placement and sizing options
-	 * @param iafData a InsertAFrameData structure with params
-	 * @return int item id? FIXME
-	 */
-	int itemAddUserFrame(InsertAFrameData &iafData);
+	//void FlipImageH();
+	//void FlipImageV();
+	void MirrorPolyH(PageItem *currItem);
+	void MirrorPolyV(PageItem *currItem);
 
-	/**
-	 * @brief Commit item creation when a user has click-drag created an item
-	 * Only called from ScribusView. Note the undo target is the page, so the undo code remains their for now.
-	 * @return If an item was committed and the view must emit its signal, which needs removing from here, TODO.
+	// Various
+
+	/*!
+	 * Delete the tagged items.
+	 * Currently does nothing
 	 */
-	bool itemAddCommit(const int itemNumber);
-	
-	/**
-	 * @brief Finalise item creation. Simply split off code from itemAdd
-	 * Only to be called from itemAdd()
+	bool deleteTaggedItems();
+	/*!
+	 * Get the item index from a unique ID.
+	 * @param unique ID of item
+	 * @return index of the item
 	 */
-	void itemAddDetails(const PageItem::ItemType itemType, const PageItem::ItemFrameType frameType, const int itemNumber);
-
 	uint getItemNrfromUniqueID(uint unique);
-	//itemDelete
-	//itemBlah...
-	
-	/**
-	 * @brief Run this common frame item update code
+	/*!
+	 * Run this common frame item update code.
 	 */
 	void updateFrameItems();
-	/**
-	 * @brief Renumbers the items into the order they are stored in in the lists.
+	/*!
+	 * Renumbers the items into the order they are stored in in the lists.
 	 * Utility function used in various places, basically handles keeping items numbered in the way
 	 * they are layered. When layer is a property and not a fuction of storage, this should be removed.
 	 * Depends on the Items pointer pointing to the correct item list (doc, master, etc).
 	 * @sa updateFrameItems();
 	 */
 	void renumberItemsInListOrder();
-	/**
-	 * @brief Rebuild item lists taking into account layer order.
+	/*!
+	 * Rebuild item lists taking into account layer order.
 	 * Utility function used in various places, basically handles keeping items numbered in the way
 	 * they are layered. When layer is a property and not a fuction of storage, this should be removed.
 	 * @sa updateFrameItems();
 	 */
 	void rebuildItemLists();
-	/**
-	 * @brief Doc uses automatic text frames?
-	 */
-	bool usesAutomaticTextFrames() const;
-	void setUsesAutomaticTextFrames(const bool);
-	
-	/**
-	 * @brief Load images into an image frame, moved from the view
-	 * @retval Return false on failure
-	 */
-	bool LoadPict(QString fn, int ItNr, bool reload = false, bool showMsg = false);
-	/**
-	 * 
-	 * @param fn 
-	 * @param pageItem 
-	 * @param reload 
-	 * @return 
-	 */
-	bool loadPict(QString fn, PageItem *pageItem, bool reload = false, bool showMsg = false);
-	/**
-	 * \brief Handle image with color profiles
-	 * @param Pr profile
-	   @param PrCMYK cmyk profile
-	   @param dia optional progress widget
-	 */
-	void RecalcPictures(ProfilesL *Pr, ProfilesL *PrCMYK, QProgressBar *dia = 0);
-	/**
-	 * @brief Find the minX,MinY and maxX,maxY for the canvas required for the doc
-	 */
-	void canvasMinMax(FPoint&, FPoint&);
-	
-	int OnPage(double x2, double  y2);
-	int OnPage(PageItem *currItem);
-	void GroupOnPage(PageItem *currItem);
-	//void reformPages(double& maxX, double& maxY, bool moveObjects = true);
-	void reformPages(bool moveObjects = true);
-	
-	/**
-	 * @brief Return the x or y offset for a page on the canvas
-	 * @retval double containing the offset. Returns -1.0 if page not in Pages list (as -ve is not possible).
-	 * Mostly saves bringing in extra includes into files that already have scribusdoc.h
-	 */
-	double getXOffsetForPage(const int);
-	double getYOffsetForPage(const int);
-	void getBleeds(int pageNumber, MarginStruct& bleedData);
-	void getBleeds(Page* page, MarginStruct& bleedData);
-	
-	/**
-	 * @brief Item type conversion functions
-	 */
-	PageItem* convertItemTo(PageItem *currItem, PageItem::ItemType newType, PageItem* secondaryItem=NULL);
-	
-	/**
-	 * @brief The page number of the current page
-	 */
-	int currentPageNumber();
-	
-	/**
-	 * @brief Return true iff the passed name is not used by any existing PageItem
+	/*!
+	 * Find if item is not an already used item.
+	 * Return true if the passed name is not used by any existing PageItem
 	 *        in the same document as this PageItem.
 	 * @author Craig Ringer
 	 ** CB Moved from PageItem
 	 */
+//ivro: is returning true if the passed name exists not better ? (or rename to itemNameDontUses ?)
 	bool itemNameExists(const QString itemName);
-	
-	/**
-	 * @brief Set the doc into Master page mode
-	 * Do we need to return if the move to master page mode was successful?
+	/*!
+	 * Returns a stringlist of the item attributes within the document.
 	 */
-	void setMasterPageMode(bool);
+	QStringList getItemAttributeNames();
 
-	/*** Is the document in master page mode? */
-	bool masterPageMode() const { return m_masterPageMode; }
-	
-	/**
-	 * @brief Add a section to the document sections list
+	/*! Get a list of frames of certain type. */
+	QMap<PageItem*, QString> getDocItemNames(PageItem::ItemType itemType);
+//@} //End Items group
+
+/*! @name Sections
+ * Sections related functions
+ */ //@{
+	// add, delete, use sections
+
+	/*!
+	 * Add a section to the document sections list.
 	 * Set number to -1 to add in the default section if the map is empty
 	 */
 	void addSection(const int number=0, const QString& name=QString::null, const uint fromindex=0, const uint toindex=0, const  DocumentSectionType type=Type_1_2_3, const uint sectionstartindex=0, const bool reversed=false, const bool active=true);
-	/**
-	 * @brief Delete a section from the document sections list
+	/*!
+	 * Delete a section from the document sections list.
 	 */
 	bool deleteSection(const uint);
-	/**
-	 * @brief Gets the page number to be printed based on the section it is in.
+	/*!
+	 * Gets the page number to be printed based on the section it is in.
 	 * Returns QString::null on failure to find the pageIndex
 	 */
 	const QString getSectionPageNumberForPageIndex(const uint) const;
-	/**
-	 * @brief Gets the key of the sections map based on the section the page index is in.
+	/*!
+	 * Gets the key of the sections map based on the section the page index is in.
 	 * Returns -1 on failure to find the pageIndex
 	 */
 	int getSectionKeyForPageIndex(const uint pageIndex) const;
-	/**
+	/*!
 	 *
 	 *
 	 */
 	void updateSectionPageNumbersToPages();
-	/**
+	/*!
 	 * 
 	 * @param otherPageIndex 
 	 * @param location 
 	 * @param count 
 	 */
 	void addPageToSection(const uint otherPageIndex, const uint location, const uint count=1);
-	/**
+	/*!
 	 * 
 	 * @param pageIndex 
 	 */
 	void removePageFromSection(const uint pageIndex);
-	/**
+	/*!
 	 * 
 	 */
 	void setFirstSectionFromFirstPageNumber();
-	/**
-	 * @brief Update the fill and line QColors for all items in the doc
-	 */
-	void updateAllItemQColors();
-	//! @brief Some internal align tools
-	typedef enum {alignFirst, alignLast, alignPage, alignMargins, alignGuide, alignSelection } AlignTo;
+//@} // End of Sections group
+
+/*! @name Align
+ * Align related functions
+ */ //@{
 	void buildAlignItemList(Selection* customSelection=0);
 	bool startAlign();
 	void endAlign();
-	/**
-	 * \brief Insert a color into the documents color list
-	 * @param nam Name of the colour
-	 * @param c Cyan component
-	 * @param m Magenta component
-	 * @param y Yellow component
-	 * @param k Black component
+//@} // End of align functions
+
+/*! @name Color Management
+ * Color Management related functions.
+ */ //@{
+	/*!
+	 * Builds a qmap of the icc profiles used within the document.
 	 */
-	void insertColor(QString nam, double c, double m, double y, double k);
-	
-	QMap<QString, double>& constants() { return m_constants; }
-	/**
-	 * \brief Get the location of the page on the canvas, ie, left, middle, or right
-	 * Does not give information about middle left, etc.
-	 * @param pageIndex Index of page to find location for
-	 * @return LeftPage, MiddlePage, RightPage, enum from pagestructs.h
+	void getUsedProfiles(ProfilesL& usedProfiles);
+	bool OpenCMSProfiles(ProfilesL InPo, ProfilesL InPoCMYK, ProfilesL MoPo, ProfilesL PrPo);
+	void CloseCMSProfiles();
+	void SetDefaultCMSParams();
+	/*!
+	 * Switch Colormanagement on or of.
+	 * @param enable bool, if true Colormanagement is switched on, else off
 	 */
-	PageLocation locationOfPage(int pageIndex) const;
-	/**
-	 * \brief Get the column of the page on the canvas, ie, left, middle, or right
-	 * @param pageIndex Index of page to find location for
-	 * @return int of 0,1,2,3
+	void enableCMS(bool enable);
+	/*!
+	 * Recalculate the colors after CMS settings change. Update the items in the doc accordingly.
 	 */
-	int columnOfPage(int pageIndex) const;
-	
+	void recalculateColors();
+
+	/*!
+	 * Insert a color into the documents color list.
+	 * @param colorList Name of the color list
+	 * @param cyan Cyan component
+	 * @param magenta Magenta component
+	 * @param yellow Yellow component
+	 * @param black Black component
+	 */
+	void insertColor(QString colorList, double cryan, double magenta, double yellow, double black);
+//@} // End of color functions
+
+/*! @name Styles
+ * Style related functions
+ */ //@{
+	// Paragraphe style
+
+	/*!
+	 * Get a paragraph style by its name.
+	 */
+	const ParagraphStyle& paragraphStyle(QString name) { return docParagraphStyles.get(name); }
+	/*!
+	 * Get all the paragraph style.
+	 */
+	const StyleSet<ParagraphStyle>& paragraphStyles()   { return docParagraphStyles; }
+	/*!
+	 * Redefine Paragraphes style.
+	 */
+//ivro: rename rededineParaStyles ?
+	void redefineStyles(const StyleSet<ParagraphStyle>& newStyles, bool removeUnused=false);
+	/*!
+	 * Remove any reference to old styles and replace with new name.
+	 * This needs to be called when a style was removed. New name may be "".
+	 * @param newNameForOld a map which maps the name of any style to remove to a new stylename
+	 */
+//ivro: rename replaceParaStyles ?
+	void replaceStyles(const QMap<QString,QString>& newNameForOld);
+	/*!
+	 * Is the default paragraph style ?
+	 * @param p paragraph style to test
+	 */
+//ivro: is this must be with the one for char style ?
+	bool isDefaultStyle( const ParagraphStyle& p ) const { return docParagraphStyles.isDefault(p); }
+
+	// Character style
+
+	/*!
+	 * Get a character style by name.
+	 * @param name char style name
+	 */
+	const CharStyle& charStyle(QString name) { return docCharStyles.get(name); }
+	/*!
+	 * Get all the Character styles.
+	 */
+	const StyleSet<CharStyle>& charStyles()  { return docCharStyles; }
+	/*!
+	 * Redefine Character styles.
+	 * @param newStyle character styles
+	 * @param removeUnused
+	 */
+	void redefineCharStyles(const StyleSet<CharStyle>& newStyles, bool removeUnused=false);
+	/*!
+	 * Remove any reference to old styles and replace with new name.
+	 * This needs to be called when a style was removed. New name may be "".
+	 * @param newNameForOld a map which maps the name of any style to remove to a new stylename
+	 */
+	void replaceCharStyles(const QMap<QString,QString>& newNameForOld);
+	/*!
+	 * Is the default character style ?
+	 * @param c character style to test
+	 */
+	bool isDefaultStyle( const CharStyle& c ) const { return docCharStyles.isDefault(c); }
+// 	bool isDefaultStyle( LineStyle& l ) const { return MLineStyles......; }
+
+	// Load Style
+
+	/*!
+	 * Insert styles from another document in this document.
+	 * @param fileName The path of the document we want to extract its styles
+	 */
+	void loadStylesFromFile(QString fileName);
+	/*!
+	 * Gather styles from another document.       
+	 * @param fileName The path of the document we want to extract its styles
+	 * @param tempStyles A pointer to a StyleSet which will be filled by paragraph styles
+	 * @param tempCharStyles A pointer to a StyleSet which will be filled by character styles
+	 * @param tempLineStyles A map which will be filled by line styles
+	 */
+	void loadStylesFromFile(QString fileName, StyleSet<ParagraphStyle> *tempStyles,
+	                                          StyleSet<CharStyle> *tempCharStyles,
+	                                          QMap<QString, multiLine> *tempLineStyles);
+//@} // End of style group
+
+/*! @name Font
+ * font related funtions.
+ */ //@{
+	/*!
+	 * Add a font
+	 */
+	bool AddFont(QString name, int fsize = 10);
+	/*!
+	 * TODO: Reorganise the fonts.. how? Moved from scribus.cpp
+	 * CB: almost the same as getUsedFonts???
+	 */
+	QMap<QString,int> reorganiseFonts();
+	/*!
+	 * Returns a qmap of the fonts and  their glyphs used within the document.
+	 */
+	void getUsedFonts(QMap<QString,QMap<uint, FPointArray> > &Really);
+	void checkItemForFonts(PageItem *it, QMap<QString, QMap<uint, FPointArray> > & Really, uint lc);
+
+	/*!
+	 * Replace line style colors.
+	 */
+	void replaceLineStyleColors(const QMap<QString, QString>& colorMap);
+	/*!
+	* Builds a qmap of the colours used within the document.
+	*/
+	void getUsedColors(ColorList &colorsToUse, bool spot = false);
+	/*!
+	* Is this specific color is used by line styles.
+	*/
+	bool lineStylesUseColor(const QString& colorName);
+//@} // End of font functions
+
+/*! @name Pattern
+ * Pattern related functions
+ */ //@{
+	/*!
+	* Set the patterns for a document.
+	*/
+	bool addPattern(QString &name, ScPattern& pattern);
+	void setPatterns(QMap<QString, ScPattern> &patterns);
+	/*!
+	* Builds a QStringList of the patterns used within the document.
+	*/
+	QStringList getUsedPatterns();
+	QStringList getUsedPatternsSelection(Selection* customSelection);
+	QStringList getUsedPatternsHelper(QString pattern, QStringList &results);
+//@} // End of pattern functions
+
+/*! @name Item selection
+ * Item selection related functions.
+ *
+ * Item selection is used to modify items.
+ */ //@{
 	bool sendItemSelectionToBack();
 	bool bringItemSelectionToFront();
 
@@ -837,71 +1180,336 @@
 
 	void itemSelection_SetTracking(int us, Selection* customSelection=0);
 	void itemSelection_SetFontSize(int size, Selection* customSelection=0);
-	//void FlipImageH();
-	//void FlipImageV();
-	void MirrorPolyH(PageItem *currItem);
-	void MirrorPolyV(PageItem *currItem);
+public slots:
+	/*!
+	 * Change display quality of all images in document.
+	 * @author OssiLehtinen
+	 */
+	void allItems_ChangePreviewResolution(int id);
+
+	void itemSelection_ToggleLock();
+	void itemSelection_ToggleSizeLock();
+	void itemSelection_ToggleImageShown();
+	void itemSelection_TogglePrintEnabled();
+	void itemSelection_ChangePreviewResolution(int id);
+	void itemSelection_ClearItem(Selection* customSelection=0);
+	//! Delete the items in the current selection. When force is true, we do not warn the user and make SE happy too. Force is used from @sa Page::restorePageItemCreation
+	void itemSelection_DeleteItem(Selection* customSelection=0, bool forceDeletion=false);
+	void itemSelection_SetItemFillTransparency(double t);
+	void itemSelection_SetItemLineTransparency(double t);
+	void itemSelection_SetItemFillBlend(int t);
+	void itemSelection_SetItemLineBlend(int t);
+	void itemSelection_SetLineGradient(VGradient& newGradient, Selection* customSelection=0);
+	void itemSelection_SetFillGradient(VGradient& newGradient, Selection* customSelection=0);
+	void itemSelection_SetOverprint(bool overprint, Selection* customSelection=0);
+	void itemSelection_ApplyImageEffects(ScImageEffectList& newEffectList, Selection* customSelection=0);
+	void itemSelection_FlipH();
+	void itemSelection_FlipV();
+	void itemSelection_DoHyphenate();
+	void itemSelection_DoDeHyphenate();
+	void itemSelection_SendToLayer(int layerNumber);
+	void itemSelection_SetImageOffset(double x, double y, Selection* customSelection=0);
+	void itemSelection_SetImageScale(double x, double y, Selection* customSelection=0);
+	void itemSelection_SetImageScaleAndOffset(double ox, double oy, double sx, double sy, Selection* customSelection=0);
+	void itemSelection_AlignLeftOut(AlignTo currAlignTo, double guidePosition);
+	void itemSelection_AlignRightOut(AlignTo currAlignTo, double guidePosition);
+	void itemSelection_AlignBottomIn(AlignTo currAlignTo, double guidePosition);
+	void itemSelection_AlignRightIn(AlignTo currAlignTo, double guidePosition);
+	void itemSelection_AlignBottomOut(AlignTo currAlignTo, double guidePosition);
+	void itemSelection_AlignCenterHor(AlignTo currAlignTo, double guidePosition);
+	void itemSelection_AlignLeftIn(AlignTo currAlignTo, double guidePosition);
+	void itemSelection_AlignCenterVer(AlignTo currAlignTo, double guidePosition);
+	void itemSelection_AlignTopOut(AlignTo currAlignTo, double guidePosition);
+	void itemSelection_AlignTopIn(AlignTo currAlignTo, double guidePosition);
+	void itemSelection_DistributeDistH(bool usingDistance=false, double distance=0.0);
+	void itemSelection_DistributeAcrossPage(bool useMargins=false);
+	void itemSelection_DistributeRight();
+	void itemSelection_DistributeBottom();
+	void itemSelection_DistributeCenterH();
+	void itemSelection_DistributeDistV(bool usingDistance=false, double distance=0.0);
+	void itemSelection_DistributeDownPage(bool useMargins=false);
+	void itemSelection_DistributeLeft();
+	void itemSelection_DistributeCenterV();
+	void itemSelection_DistributeTop();
+	void itemSelection_MultipleDuplicate(ItemMultipleDuplicateData&);
+	void itemSelection_UniteItems(Selection* customSelection=0);
+	void itemSelection_SplitItems(Selection* customSelection=0);
+	/*! Adjust an image frame's size to fit the size of the image in it. */
+	void itemSelection_AdjustFrametoImageSize(Selection* customSelection=0);
+	/*! Adjust an image size to fit the size of the frame. */
+	void itemSelection_AdjustImagetoFrameSize(Selection* customSelection=0);
+	/*! startArrowID or endArrowID of -1 mean not applying a selection at this point.*/
+	void itemSelection_ApplyArrowHead(int startArrowID=-1, int endArrowID=-1, Selection* customSelection=0);
+
+	void itemSelection_SetItemPen(QString farbe);
+	void itemSelection_SetItemPenShade(int sha);
+	void itemSelection_SetItemBrush(QString farbe);
+	void itemSelection_SetItemBrushShade(int sha);
+	void itemSelection_SetItemGradFill(int typ);
+	void itemSelection_SetItemPatternFill(QString pattern);
+	void itemSelection_SetItemPatternProps(double scaleX, double scaleY, double offsetX, double offsetY, double rotation);
+//@} // End of item selection group
+
+/*! @name Various functions
+ */ //@{
+
+	/*!
+	 * Save function.
+	 */
+	bool save(const QString& fileName, QString* savedFile = NULL);
+
+	/*!
+	 * Create the default master pages based on the layout selected by the user, ie, Normal, Normal Left, etc.
+	 */
+	void createDefaultMasterPages();
+	/*!
+	 * Create the requested pages in a new document.
+	 * Run after ScribusDoc.createDefaultMasterPages()
+	 * @param pageCount number of page to create
+	 */
+	void createNewDocPages(int pageCount);
+
+	/*!
+	 * Update the fill and line QColors for all items in the doc.
+	 */
+	void updateAllItemQColors();
+
+	/*!
+	 * Sets up the ScText defaults from the document.
+	 */
+	void setScTextDefaultsFromDoc(ScText *);
+
+// Restore
+
+	/*!
+	 * Method used when an undo/redo is requested.
+	 * @param state State describing the action that is wanted to be undone/redone
+	 * @param isUndo If true undo is wanted else if false redo.
+	 * @author Riku Leino
+	 */
+	void restore(UndoState* state, bool isUndo);
+	/*!
+	 * Undo function for applying a master page.
+	 */
+	void restoreMasterPageApplying(SimpleState *state, bool isUndo);
+	/*!
+	 * Undo function for copy a page.
+	 */
+	void restorePageCopy(SimpleState *state, bool isUndo);
+
+// Loading images
+
+	/*!
+	 * Load images into an image frame, moved from the view.
+	 * @param fn image file name
+	 * @param ItNr page item number
+	 * @param reload
+	 * @param showMsg
+	 * @return Return false on failure
+	 */
+	bool LoadPict(QString fn, int ItNr, bool reload = false, bool showMsg = false);
+	/*!
+	 * Load images into an image frame.
+	 * @param fn image file name
+	 * @param pageItem page item 
+	 * @param reload 
+	 * @param showMsg
+	 * @return Return false on failure
+	 */
+	bool loadPict(QString fn, PageItem *pageItem, bool reload = false, bool showMsg = false);
+	/*!
+	 * Handle image with color profiles.
+	 * @param Pr profile
+	 * @param PrCMYK cmyk profile
+	 * @param dia optional progress widget
+	 */
+	void RecalcPictures(ProfilesL *Pr, ProfilesL *PrCMYK, QProgressBar *dia = 0);
+public slots:
+	/*! Update all the picture in the current selection. */
+	void updatePic();
+	/*! Update the specified picture. */
+	void updatePict(QString name);
+	/*! Update all picture in the specified directory. */
+	void updatePictDir(QString name);
+	/*! Remove a picture from document. */
+	void removePict(QString name);
+public:
+	/*!
+	 * Find the minX,MinY and maxX,maxY for the canvas required for the doc.
+	 * @param minPoint
+	 * @param maxPoint
+	 */
+	void canvasMinMax(FPoint& minPoint, FPoint& maxPoint);
 	
+	/*!
+	 * Find page index where the point exists.
+	 * In masterPage mode return the current master page index if the point exists on the current master page,
+	 * In normal mode return the first page index where this point exists.
+	 * 
+	 * @param x X coord of the point
+	 * @param y Y coord of the point
+	 * @return page index or -1
+	 */
+	int OnPage(double x, double  y);
+	/*!
+	 * Find page index where the item exists.
+	 * In masterPageMode return the current master page index if the item exists on the current master page.
+	 * In mormal mode return the page index where this item exists.
+	 *
+	 * @param item item we looking for
+	 * @return page index or -1
+	 */
+	int OnPage(PageItem *item);
+
+	void GroupOnPage(PageItem *currItem);
+	//void reformPages(double& maxX, double& maxY, bool moveObjects = true);
+	void reformPages(bool moveObjects = true);
+
 	void setRedrawBounding(PageItem *currItem);
 	void adjustCanvas(FPoint minPos, FPoint maxPos, bool absolute = false);
 	void recalcPicturesRes(bool applyNewRes = false);
 	void connectDocSignals();
-	void removeLayer(int l, bool dl = false); //FIXME: Make protected once scripter function no longer uses this directly
-	/*! \brief We call changed() whenever the document needs to know it has been changed.
-	 *  If the document is the primary document in a main window, it will signal to enable/disable
-	 * certain operations.
-	 */
-	void changed();
-	/*! \brief Get pointer to the current page
-	\retval Page* current page object */
-	Page* currentPage();
-	/*! \brief Set new current page
-	\param newPage New current page */
-	void setCurrentPage(Page *newPage);
-	bool hasGUI() const {return m_hasGUI;}
-	/*! \brief Apply grid to a QPoint, from ScribusView */
+
+// Named Ressources
+
+	void getNamedResources(ResourceCollection& lists) const;
+	void replaceNamedResources(ResourceCollection& newNames);	
+
+
+	QMap<QString, double>& constants() { return m_constants; }
+
+// Grid and Guides
+
+	/*! \brief Apply grid to a QPoint, from ScribusView. */
 	QPoint ApplyGrid(const QPoint& in);
-	/*! \brief Apply grid to an FPoint, from ScribusView */
+	/*! \brief Apply grid to an FPoint, from ScribusView. */
 	FPoint ApplyGridF(const FPoint& in);
-	/*! \brief Does this doc have any TOC setups and potentially a TOC to generate */
-	bool hasTOCSetup() { return !docToCSetups.empty(); }
-	//! \brief Get the closest guide to the given point
+
+	//! \brief Get the closest guide to the given point.
 	void getClosestGuides(double xin, double yin, double *xout, double *yout, int *GxM, int *GyM);
-	//! \brief Snap an item to the guides
+	//! \brief Snap an item to the guides.
 	void SnapToGuides(PageItem *currItem);
 	bool ApplyGuides(double *x, double *y);
-	bool MoveItem(double newX, double newY, PageItem* ite, bool fromMP = false);
-	void RotateItem(double win, int ite);
-	void RotateItem(double win, PageItem *currItem);
-	void MoveRotated(PageItem *currItem, FPoint npv, bool fromMP = false);
-	bool SizeItem(double newX, double newY, int ite, bool fromMP = false, bool DoUpdateClip = true, bool redraw = true);
-	bool SizeItem(double newX, double newY, PageItem *pi, bool fromMP = false, bool DoUpdateClip = true, bool redraw = true);
-	bool MoveSizeItem(FPoint newX, FPoint newY, int ite, bool fromMP = false, bool constrainRotation=false);
-	void AdjustItemSize(PageItem *currItem);
+
+	/*! \brief Does this doc have any TOC setups and potentially a TOC to generate. */
+	bool hasTOCSetup() { return !docToCSetups.empty(); }
+
+// Group
+
 	void moveGroup(double x, double y, bool fromMP = false, Selection* customSelection = 0);
 	void rotateGroup(double angle, FPoint RCenter);
 	void scaleGroup(double scx, double scy, bool scaleText=true, Selection* customSelection = 0);
-	//! \brief Get a list of frames of certain type
-	QMap<PageItem*, QString> getDocItemNames(PageItem::ItemType itemType);
-	
+
+	/*!
+	 * Return the guarded object associated with the document.
+	 */
+	const ScGuardedPtr<ScribusDoc>& guardedPtr() const;
+
+	UpdateManager* updateManager() { return &m_updateManager; }
+	MassObservable<PageItem*> * itemsChanged() { return &m_itemsChanged; }
+	MassObservable<Page*>     * pagesChanged() { return &m_pagesChanged; }
+	MassObservable<QRectF>    * regionsChanged() { return &m_regionsChanged; }
+	void invalidateRegion(QRectF region);
+
 protected:
-	void addSymbols();
-	bool m_hasGUI;
-	ApplicationPrefs& prefsData;
-	UndoManager * const undoManager;
-	bool loading;
-	bool modified;
-	int ActiveLayer;
-	int docUnitIndex;
-	double docUnitRatio;
-	bool automaticTextFrames; // Flag for automatic Textframes
-	bool m_masterPageMode;
-	QMap<QString, double> m_constants;
-	ScribusMainWindow* m_ScMW;
-	ScribusView* m_View;
-	ScGuardedObject<ScribusDoc> m_guardedObject;
+	void addSymbols();	
+//@} // End of various group
 	
-public: // Public attributes
+signals:
+	//Lets make our doc talk to our GUI rather than confusing all our normal stuff
+	/*!
+	 * Let the document tell whatever is listening that it has changed.
+	 */
+	void docChanged();
+	void updateContents();
+	void updateContents(const QRect &r);
+	void refreshItem(PageItem *);
+	void canvasAdjusted(double width, double height, double dX, double dY);
+	void firstSelectedItemType(int);
+	void setApplicationMode(int);
+	/*!
+	 * A signal for when the outline palette needs to rebuild itself.
+	 * Emit when:
+	 * - An item is created or deleted
+	 * - An item changes page
+	 * - An page is created or deleted
+	 * - Some items are grouped or a group is ungrouped
+	 * This also applies to Master Pages
+	 */
+	void signalRebuildOutLinePalette();
+	//! Temporary signal for SizeItem
+	void widthAndHeight(double, double);
+
+public:
+	QList<Page*>* Pages;			/*!< Pointer on a list of pages. See masterPageMode() */
+	QList<Page*> MasterPages;	 	/*!< List of Master Pages. */
+	QList<Page*> DocPages;			/*!< List of Document Pages. */
+
+	QList<PageItem*>* Items;		/*!< Pointer on a list of items. See masterPageMode() */
+	QList<PageItem*> MasterItems;		/*!< List of items that belongs to Master Pages. */
+	QList<PageItem*> DocItems;		/*!< List of items that belongs to Document Pages. */
+	QList<PageItem*> FrameItems;		/*!< List of items that belongs to Frames. */
+
+	double PageSp;				/*!< Number of Columns for automaticTextFrames. */
+	double PageSpa;				/*!< Distance between Columns for automaticTextFrames. */
+	PageItem *LastAuto;			/*!< Last AutomaticTextFrame element. */
+	PageItem *FirstAuto;			/*!< First AutomaticTextFrame element. */
+
+	bool GuideLock;				/*!< Is the guides must be locked ? See LockGuides() */
+
+	MarginStruct bleeds; 			/*!< Default page's bleeds. */
+//ivro: are those necessary anymore ?
+// 	double BleedTop;
+// 	double BleedLeft;
+// 	double BleedRight;
+// 	double BleedBottom;
+	MarginStruct scratch;
+//ivro: are those necessary anymore ?
+// 	double ScratchLeft;
+// 	double ScratchRight;
+// 	double ScratchTop;
+// 	double ScratchBottom;
+	double pageWidth;			/*!< Default page's width.  */
+	double pageHeight;			/*!< Default page's height. */
+//ivro: use the scribusstruct PageOrientation enum ?
+	int PageOri;				/*!< Default page's orientation. 0 = Portrait, 1 = Landscape. */
+	QString m_pageSize;			/*!< Default page's size. */
+	MarginStruct pageMargins;		/*!< Default page's margins. */
+//ivro: what is this for ?
+	int marginPreset;
+
+	double GapHorizontal;		/*!< Horizontal gap between page on canvas. */
+	double GapVertical;		/*!< Vertical gap between page on canvas. */
+
+	FPoint minCanvasCoordinate;	/*!< Minimun points of document. */
+	FPoint maxCanvasCoordinate;	/*!< Maximun point of document. */
+
+	QMap<QString,int> MasterNames;		/*!< Mapping Master Page Name to Master Page numbers. See rebuildMasterNames() */
+
+	QList<PageSet> pageSets;	/*!< List of page layout scribus support. Use ::currentPageLayout to select the one this document uses. */
+//ivro: is name DocumentLayout not better ?
+	int currentPageLayout;		/*!< Current Page's layout. Index of page layout in ::pageSets */
+
+	/*! Some internal align tools. */
+//ivro: is this cannot be moved elsewhere ?
+	typedef enum {
+		alignFirst,
+		alignLast,
+		alignPage,
+		alignMargins,
+		alignGuide,
+		alignSelection
+	} AlignTo;
+
+	ParagraphStyle currentStyle;		/*!< The current paragraph style. */
+
+	QString DocName;			/*!< Document's name. */
+
+	bool AutoSave;				/*!< Document's auto saving mode. */
+	int AutoSaveTime;			/*!< Auto save interval. Number of milliseconds between auto save. */
+	QTimer * const autoSaveTimer;		/*!< Auto save timer. */
+
+
 	bool is12doc; //public for now, it will be removed later
 	int NrItems;
 	int First;
@@ -909,98 +1517,37 @@
 	int viewCount;
 	int viewID;
 	bool SnapGuides;
-	bool GuideLock;
-	/** \brief Scratch space around Pages */
-	MarginStruct scratch;
-	double GapHorizontal;
-	double GapVertical;
-// 	double ScratchLeft;
-// 	double ScratchRight;
-// 	double ScratchTop;
-// 	double ScratchBottom;
-	/** \brief Minimum and Maximum Points of Document */
-	FPoint minCanvasCoordinate;
-	FPoint maxCanvasCoordinate;
 	double rulerXoffset;
 	double rulerYoffset;
-	/** \brief List of Pages */
-	QList<Page*>* Pages;
-	/** \brief List of Master Pages */
-	QList<Page*> MasterPages;
-	/** \brief List of Document Pages */
-	QList<Page*> DocPages;
-	/** \brief Mapping Master Page Name to Master Page numbers */
-	QMap<QString,int> MasterNames;
-	/** \brief List of Objects */
-	QList<PageItem*>* Items;
-	QList<PageItem*> MasterItems;
-	QList<PageItem*> DocItems;
-	QList<PageItem*> FrameItems;
 	Selection* const m_Selection;
-	/** \brief Pagewidth  */
-	double pageWidth;
-	/** \brief Pageheight */
-	double pageHeight;
 	/* Number of Pages */
 	// int pageCount; Disabled CR no longer required
-	/** \brief Margins */
-	MarginStruct pageMargins;
-	int marginPreset;
-	QList<PageSet> pageSets;
-	MarginStruct bleeds;
-// 	double BleedTop;
-// 	double BleedLeft;
-// 	double BleedRight;
-// 	double BleedBottom;
-	/** \brief Number of Columns */
-	double PageSp;
-	/** \brief Distance of Columns */
-	double PageSpa;
-	/** \brief current Pagelayout */
-	int currentPageLayout;
-	/** \brief Flag fuer Hoch- oder Querformat 0 = Hochformat */
-	int PageOri;
-	QString m_pageSize;
-	/** \brief Erste Seitennummer im Dokument */
-	int FirstPnum;
-	/** \brief Flag fuer Rasterbenutzung */
-	bool useRaster;
-	/** \brief Im Dokument benutzte Farben */
-	ColorList PageColors;
-	/** \brief InfoStrings fuer das aktuelle Dokument */
-	DocumentInformation documentInfo;
+
+	int FirstPnum;				/*!< Erste Seitennummer im Dokument. */
+	bool useRaster;				/*!< Flag fuer Rasterbenutzung. */
+	ColorList PageColors;			/*!< Im Dokument benutzte Farben. */
+	DocumentInformation documentInfo;	/*!< InfoStrings for the document. */
 	int appMode;
 	int SubMode;
 	double *ShapeValues;
 	int ValCount;
-	QString DocName;
 	QMap<QString,int> UsedFonts;
 	SCFonts * const AllFonts;
 	QList<AlignObjs> AObjects;
 	QColor papColor;
 	int CurrentSel;
-	ParagraphStyle currentStyle;
-
 	NodeEditContext nodeEdit;
-
+	ApplicationPrefs& prefsData;
 	typoPrefs typographicSettings;
 	guidesPrefs guidesSettings;
 	toolPrefs toolSettings;
 	QMap<QString, checkerPrefs> checkerProfiles;
 	QString curCheckProfile;
-	/** \brief Letztes Element fuer AutoTextrahmen */
-	PageItem *LastAuto;
-	/** \brief Erstes Element fuer AutoTextrahmen */
-	PageItem *FirstAuto;
 	bool DragP;
 	bool leaveDrag;
 	PageItem *DraggedElem;
 	PageItem *ElemToLink;
 	QList<uint> DragElements;
-private:
-	StyleSet<ParagraphStyle> docParagraphStyles;
-	StyleSet<CharStyle> docCharStyles;
-public:
 	ScLayers Layers;
 	bool marginColored;
 	int GroupCounter;
@@ -1039,24 +1586,21 @@
 	PrintOptions Print_Options;
 	bool RePos;
 	struct BookMa {
-					QString Title;
-					QString Text;
-					QString Aktion;
-					PageItem *PageObject;
-					int Parent;
-					int ItemNr;
-					int First;
-					int Last;
-					int Prev;
-					int Next;
-					};
+		QString Title;
+		QString Text;
+		QString Aktion;
+		PageItem *PageObject;
+		int Parent;
+		int ItemNr;
+		int First;
+		int Last;
+		int Prev;
+		int Next;
+	};
 	QList<BookMa> BookMarks;
 	bool OldBM;
 	bool hasName;
 	int RotMode;
-	bool AutoSave;
-	int AutoSaveTime;
-	QTimer * const autoSaveTimer;
 	QMap<QString,multiLine> MLineStyles;
 	QList<ArrowDesc> arrowStyles;
 	QMap<QString, ScPattern> docPatterns;
@@ -1073,8 +1617,7 @@
 	QMap<int, errorCodes> docLayerErrors;
 	QMap<int, errorCodes> docItemErrors;
 	QMap<int, errorCodes> masterItemErrors;
-	//Attributes to be applied to frames
-	ObjAttrVector docItemAttributes;
+	ObjAttrVector docItemAttributes;	/*!< Attributes to be applied to frames. */
 	ToCSetupVector docToCSetups;
 	DocumentSectionMap sections;
 	FPointArray symReturn;
@@ -1083,121 +1626,41 @@
 	FPointArray symNonBreak;
 	FPointArray symNewCol;
 	FPointArray symNewFrame;
-	
 	Hyphenator * docHyphenator;
+protected:
+	bool loading;				/*!< Is the document loading ? See isLoading() and setLoading(). */
+	bool modified;				/*!< Is the document modified ? See isModified() and setModified(). */
+
+	bool m_hasGUI;		 		/*!< Is document associated with a GUI ? See hasGUI() and setGUI(). */
+	ScribusMainWindow* m_ScMW; 		/*!< Main window associated with the document. See scMW() and setGUI(). */
+	ScribusView* m_View;			/*!< View associated with the document. See view() and setGUI(). */
+
+	bool m_masterPageMode;			/*!< Is the document in master page mode ? See masterPageMode() and setMasterPageMode(). */
+
+	bool automaticTextFrames;		/*!< Is the document using automaticTextFrames ? See usesAutomaticTextFrames() and setUsesAutomagicTextFrames(). */
+
+	int docUnitIndex;			/*!< Document's unit index. See setUnitIndex() and unitIndex(). */
+	double docUnitRatio;			/*!< Document's unit ratio. See unitRatio(). */
+
+	UndoManager * const undoManager;
+	int ActiveLayer;
+	QMap<QString, double> m_constants;
+	ScGuardedObject<ScribusDoc> m_guardedObject;
 private:
+	Page* m_currentPage;			/*!< Current page. See setCurrentPage() and currentPage(). */
+
+	StyleSet<ParagraphStyle> docParagraphStyles;	/*!< Paragraph StyleSet. */
+	StyleSet<CharStyle> docCharStyles;		/*!< Character StyleSet. */
+
+//ivro: don't know what it is
 	UndoTransaction* m_itemCreationTransaction;
 	UndoTransaction* m_alignTransaction;
 
-	Page* m_currentPage;
 	UpdateManager m_updateManager;
 	MassObservable<PageItem*> m_itemsChanged;
 	MassObservable<Page*> m_pagesChanged;
 	MassObservable<QRectF> m_regionsChanged;
 	DocUpdater* m_docUpdater;
-	
-signals:
-	//Lets make our doc talk to our GUI rather than confusing all our normal stuff
-	/**
-	 * @brief Let the document tell whatever is listening that it has changed
-	 */
-	void docChanged();
-	void updateContents();
-	void updateContents(const QRect &r);
-	void refreshItem(PageItem *);
-	void canvasAdjusted(double width, double height, double dX, double dY);
-	void firstSelectedItemType(int);
-	void setApplicationMode(int);
-	/**
-	 * @brief A signal for when the outline palette needs to rebuild itself
-	 * Emit when:
-	 * - An item is created or deleted
-	 * - An item changes page
-	 * - An page is created or deleted
-	 * - Some items are grouped or a group is ungrouped
-	 * This also applies to Master Pages
-	 */
-	void signalRebuildOutLinePalette();
-	//! Temporary signal for SizeItem
-	void widthAndHeight(double, double);
-	
-public slots:
-	void itemSelection_ToggleLock();
-	void itemSelection_ToggleSizeLock();
-	void itemSelection_ToggleImageShown();
-	void itemSelection_TogglePrintEnabled();
-	void itemSelection_ChangePreviewResolution(int id);
-
-	/*! \brief Change display quality of all images in document.
-	\author  OssiLehtinen
-	*/
-	void allItems_ChangePreviewResolution(int id);
-
-	void itemSelection_ClearItem(Selection* customSelection=0);
-	//! Delete the items in the current selection. When force is true, we do not warn the user and make SE happy too. Force is used from @sa Page::restorePageItemCreation
-	void itemSelection_DeleteItem(Selection* customSelection=0, bool forceDeletion=false);
-	void itemSelection_SetItemFillTransparency(double t);
-	void itemSelection_SetItemLineTransparency(double t);
-	void itemSelection_SetItemFillBlend(int t);
-	void itemSelection_SetItemLineBlend(int t);
-	void itemSelection_SetLineGradient(VGradient& newGradient, Selection* customSelection=0);
-	void itemSelection_SetFillGradient(VGradient& newGradient, Selection* customSelection=0);
-	void itemSelection_SetOverprint(bool overprint, Selection* customSelection=0);
-	void itemSelection_ApplyImageEffects(ScImageEffectList& newEffectList, Selection* customSelection=0);
-	void itemSelection_FlipH();
-	void itemSelection_FlipV();
-	void itemSelection_DoHyphenate();
-	void itemSelection_DoDeHyphenate();
-	void itemSelection_SendToLayer(int layerNumber);
-	void itemSelection_SetImageOffset(double x, double y, Selection* customSelection=0);
-	void itemSelection_SetImageScale(double x, double y, Selection* customSelection=0);
-	void itemSelection_SetImageScaleAndOffset(double ox, double oy, double sx, double sy, Selection* customSelection=0);
-	void itemSelection_AlignLeftOut(AlignTo currAlignTo, double guidePosition);
-	void itemSelection_AlignRightOut(AlignTo currAlignTo, double guidePosition);
-	void itemSelection_AlignBottomIn(AlignTo currAlignTo, double guidePosition);
-	void itemSelection_AlignRightIn(AlignTo currAlignTo, double guidePosition);
-	void itemSelection_AlignBottomOut(AlignTo currAlignTo, double guidePosition);
-	void itemSelection_AlignCenterHor(AlignTo currAlignTo, double guidePosition);
-	void itemSelection_AlignLeftIn(AlignTo currAlignTo, double guidePosition);
-	void itemSelection_AlignCenterVer(AlignTo currAlignTo, double guidePosition);
-	void itemSelection_AlignTopOut(AlignTo currAlignTo, double guidePosition);
-	void itemSelection_AlignTopIn(AlignTo currAlignTo, double guidePosition);
-	void itemSelection_DistributeDistH(bool usingDistance=false, double distance=0.0);
-	void itemSelection_DistributeAcrossPage(bool useMargins=false);
-	void itemSelection_DistributeRight();
-	void itemSelection_DistributeBottom();
-	void itemSelection_DistributeCenterH();
-	void itemSelection_DistributeDistV(bool usingDistance=false, double distance=0.0);
-	void itemSelection_DistributeDownPage(bool useMargins=false);
-	void itemSelection_DistributeLeft();
-	void itemSelection_DistributeCenterV();
-	void itemSelection_DistributeTop();
-	void itemSelection_MultipleDuplicate(ItemMultipleDuplicateData&);
-	void itemSelection_UniteItems(Selection* customSelection=0);
-	void itemSelection_SplitItems(Selection* customSelection=0);
-	/**
-	 * Adjust an image frame's size to fit the size of the image in it
-	 */
-	void itemSelection_AdjustFrametoImageSize(Selection* customSelection=0);
-	/**
-	 * Adjust an image size to fit the size of the frame
-	 */
-	void itemSelection_AdjustImagetoFrameSize(Selection* customSelection=0);
-	//! @brief startArrowID or endArrowID of -1 mean not applying a selection at this point.
-	void itemSelection_ApplyArrowHead(int startArrowID=-1, int endArrowID=-1, Selection* customSelection=0);
-
-	void itemSelection_SetItemPen(QString farbe);
-	void itemSelection_SetItemPenShade(int sha);
-	void itemSelection_SetItemBrush(QString farbe);
-	void itemSelection_SetItemBrushShade(int sha);
-	void itemSelection_SetItemGradFill(int typ);
-	void itemSelection_SetItemPatternFill(QString pattern);
-	void itemSelection_SetItemPatternProps(double scaleX, double scaleY, double offsetX, double offsetY, double rotation);
-
-	void updatePic();
-	void updatePict(QString name);
-	void updatePictDir(QString name);
-	void removePict(QString name);
 };
 
 Q_DECLARE_METATYPE(ScribusDoc*);
