diff --git a/Scribus/scribus/page.h b/Scribus/scribus/page.h index 743cbc7..f62886b 100644 --- a/Scribus/scribus/page.h +++ b/Scribus/scribus/page.h @@ -40,55 +40,137 @@ class UndoState; class ScribusDoc; -/** - *@author Franz Schmid - */ +/*! + * \author Franz Schmid + */ class SCRIBUS_API Page : public UndoObject, public SingleObservable { public: + /*! + * \brief Create a new page. + * + * \param x page's X offset + * \param y page's Y offset + * \param b page's widht + * \param h page's height + */ Page(const double x, const double y, const double b, const double h); + /*! + * \brief Destroy a page. + */ ~Page(); + + /*! + * \brief Get the page's X offset. + */ double xOffset() const { return m_xOffset; } + /*! + * \brief Get the page's Y offset. + */ double yOffset() const { return m_yOffset; } + /*! + * \brief Get the page's width. + */ double width() const { return m_width; } + /*! + * \brief Get the page's height. + */ double height() const { return m_height; } + /*! + * \brief Get the initial page's width. + */ double initialWidth() const { return m_initialWidth; } + /*! + * \brief Get the initial page's height. + */ double initialHeight() const { return m_initialHeight; } + /*! + * \brief Set the page's X offset. + */ void setXOffset(const double); + /*! + * \brief Set the page's Y offset. + */ void setYOffset(const double); + /*! + * \brief Set the page's width. + */ void setWidth(const double); + /*! + * \brief Set the page's height. + */ void setHeight(const double); + /*! + * \brief Set the initial page's width. + */ void setInitialWidth(const double); + /*! + * \brief Set the initial page's height. + */ void setInitialHeight(const double); + /*! + * \brief Copy the size property from page. + * + * For know doesn't take care of layout. + * \param page page to copy the properties + * \param pageMargins margins to apply + */ void copySizingProperties(Page *sourcePage, const MarginStruct& pageMargins); - MarginStruct Margins; - MarginStruct initialMargins; - /** Nummer der Seite */ + MarginStruct Margins; /*!< \brief Page's margins. */ + MarginStruct initialMargins; /*!< \brief Initial page's margins. */ + /*! \brief Nummer der Seite */ int LeftPg; - //! Name of the master page that this page uses - QString MPageNam; + QString MPageNam; /*!< \brief Name of the used master page. */ QString m_pageSize; - int PageOri; + int PageOri; /*!< \brief Page's orientation. \details O => Portrait, 1 => Landscape. */ int marginPreset; + /*! + * \brief Get the document this page belongs to. + */ ScribusDoc* doc() const { return m_Doc; } + /*! + * \brief Set the document this page belongs to. + */ void setDocument(ScribusDoc* doc); + /*! + * \brief Get the page's number. + */ int pageNr() const { return m_pageNr; } + /*! + * \brief Set the page's number. + */ void setPageNr(int pageNr); const QString& pageSectionNumber() const { return m_pageSectionNumber; } void setPageSectionNumber(const QString&); - //! Return the page's name + /*! + * \brief Return the page's name. + */ const QString& pageName() const {return m_PageName;}; + /*! + * \brief Set the page's name. + * + * Currently only allowed for master page. + */ void setPageName(const QString& newName); + /*! + * \brief Used for undo/redo actions. + */ void restore(UndoState* state, bool isUndo); - /*! \brief As a bit of a dirty hack, we declare this mutable so it can be altered - even while the object is `const'. That's normally only for internal - implementation, but in this case it at least lets us guarantee the rest - of the object is unchanged in (eg) pdflib. This should be replaced with - proper access methods later. */ + /*! + * \brief The page item we get from master page. + * + * As a bit of a dirty hack, we declare this mutable so it can be altered + * even while the object is `const'. That's normally only for internal + * implementation, but in this case it at least lets us guarantee the rest + * of the object is unchanged in (eg) pdflib. This should be replaced with + * proper access methods later. + */ mutable QList FromMaster; - //! \brief Guides lists and basic operations + /*! + * \brief Guides lists and basic operations. + */ GuideManagerCore guides; protected: @@ -97,16 +179,15 @@ protected: void restorePageItemDeletion(ItemState *state, bool isUndo); void restorePageItemConversion(ItemState >*state, bool isUndo); - double m_xOffset; - double m_yOffset; - double m_width; - double m_height; - double m_initialWidth; - double m_initialHeight; - int m_pageNr; - //! Name of this page, currently only allowed to be used by a master page - QString m_PageName; - ScribusDoc* m_Doc; + double m_xOffset; /*!< \brief Page's X Offset. */ + double m_yOffset; /*!< \brief Page's Y Offset. */ + double m_width; /*!< \brief Page's width. */ + double m_height; /*!< \brief Page's height. */ + double m_initialWidth; /*!< \brief Initial page's width. */ + double m_initialHeight; /*!< \brief Initial page's height. */ + int m_pageNr; /*!< \brief Page's number. */ + QString m_PageName; /*!< \brief Page's name. \details Currently only allowed to be used by a master page. */ + ScribusDoc* m_Doc; /*!< \brief The document this page belongs to. */ QString m_pageSectionNumber; }; diff --git a/Scribus/scribus/scribusdoc.h b/Scribus/scribus/scribusdoc.h index 7336ceb..d34643e 100644 --- a/Scribus/scribus/scribusdoc.h +++ b/Scribus/scribus/scribusdoc.h @@ -107,693 +107,1126 @@ struct SCRIBUS_API NodeEditContext : public MassObservable }; -/**! \brief the Document Class +/*! \brief the Document Class */ class SCRIBUS_API ScribusDoc : public QObject, public UndoObject, public Observable { Q_OBJECT public: + /*! \brief Some internal align tools. */ +//ivro: is this cannot be moved elsewhere ? + typedef enum { + alignFirst, + alignLast, + alignPage, + alignMargins, + alignGuide, + alignSelection + } AlignTo; + ScribusDoc(); 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&); + +// States + /*! + * \brief Set the loading state of the document + * + * See ScribusDoc.isLoading() + */ void setLoading(const bool); + /*! + * \brief Is the document loading ? + * + * See ScribusDoc.setLoading() + */ bool isLoading() const; + /*! + * \brief Set modified state of the document. + * + * If state changed, update the document + * See ScribusDoc.isModified() + */ void setModified(const bool); + /*! + * \brief 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); - /** - * @brief Return the view associated with the document +// GUI + /*! + * \brief 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 */ - ScribusView* view() const; + void setGUI(bool hasgui, ScribusMainWindow* mainWindow, ScribusView* view); + /*! + * \brief Is the document associated with GUI ? + * + * See Scribus.setGUI() + */ + bool hasGUI() const {return m_hasGUI;} + /*! + * \brief 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;} - void setGUI(bool hasgui, ScribusMainWindow* mw, ScribusView* view); + /*! + * \brief Get the view associated with the document. + * + * See Scribus.setGUI() + * \return the scribus view + */ + ScribusView* view() const; - /** - * @brief Return the guarded object associated with the document +// Automatic Text Frames + /*! + * \brief Set if doc uses automatic text frames. + * + * See ScribusDoc.usesAutomaticTextFrames(), ScribusDoc.PageSp and ScribusDoc.PageSpa + */ + void setUsesAutomaticTextFrames(const bool); + /*! + * \brief Is document using automatic text frames ? + * + * See ScribusDoc.setUsesAutomaticTextFrames + */ + bool usesAutomaticTextFrames() const; + +// Grid and Guides + /*! + * \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); + +// Current Page + /*! + * \brief Set new current page. + * + */ + void setCurrentPage(Page*); + /*! + * \brief Get the current page. + */ + Page* currentPage(); + /*! + * \brief Get the current page number. + */ + int currentPageNumber(); + +// Unit index and unit ratio + /*! + * \brief Set the document's unit index and update the document's unit ratio. + * + * See ScribusDoc.unitIndex() and ScribusDoc.unitRatio() + */ + void setUnitIndex(const int); + /*! + * \brief Get the document's unit index. + * + * See ScribusDoc.setUnitIndex() + */ + int unitIndex() const; + /*! + * \brief Get the document's unit ratio. + * + * See ScribusDoc.setUnitIndex() + */ + double unitRatio() const; + +// Document's properties + /*! + * \brief Sets the name of the document. + * + * \param name Name for the document + * \author Riku Leino + */ + void setName(const QString& name); + +/*! \name Master Page + * \brief Master page related functions. + * + * A master page is a model for page. Items on master pages will be repeated on each page with the master page. + * Use applyMasterPage() to associate a master page to a page and copyPageToMasterPage() to make a master page from a page. + * + * The master page mode allow to work with master pages and items with the same functions you use for pages and items. + * See masterPageMode() and setMasterPageMode(). + */ //@{ + /*! + * \brief 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; } + /*! + * \brief Set the doc into Master page mode. + */ +// Do we need to return if the move to master page mode was successful? + void setMasterPageMode(bool); + + /*! + * \brief 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); + /*! + * \brief Delete a master page. + * + * \param pageNumber index of the master page + */ + void deleteMasterPage(const int pageNumber); + /*! + * \brief Replace a master page by default one. + * + * \param oldMasterPage name of the master page to remplace */ - const ScGuardedPtr& guardedPtr() const; - - UpdateManager* updateManager() { return &m_updateManager; } - MassObservable * itemsChanged() { return &m_itemsChanged; } - MassObservable * pagesChanged() { return &m_pagesChanged; } - MassObservable * 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 replaceMasterPage(const QString& oldMasterPage); - //! @brief Rename a master page + /*! + * \brief 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 + /*! + * \brief Rebuild master name list. + * + * Rebuild ScribusDoc.MasterName list from the master page name */ - int addAutomaticTextFrame(const int pageNumber); - /** - * Set the left and right margins based on the location of the page - * @param pageIndex + void rebuildMasterNames(void); +//@} // End of master page group + +/*! \name Page + * \brief Page related functions. + * + * A page represents a paper page. See Page::Page + */ //@{ + // Add, delete and move page + + /*! + * \brief 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 */ - void setLocationBasedPageLRMargins(uint pageIndex); - /** - * @brief 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 + Page* addPage(const int pageNumber, const QString& masterPageName=QString::null, const bool addAutoFrame=false); + /*! + * \brief Delete a page. + * + * \param pageNumber index of the page */ + void deletePage(const int pageNumber); + /*! + * \brief Move page(s) within the document. + * + * \param from page index + * \param to page index + * \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 + /*! + * \brief 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 + + /*! + * \brief 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); + /*! + * \brief 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); + /*! + * \brief Apply a master page. + * + * \param masterPageName name of the master page + * \param pageNumber index of the page + */ + bool applyMasterPage(const QString& masterPageName, const int pageNumber); + /*! + * \brief 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); + + /*! + * \brief 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); + + /*! + * \brief 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); + + /*! + * \brief 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); + /*! + * \brief Get page's bleeds. + * + * \param page page to look at + * \param bleedData struct to get the bleed + */ + void getBleeds(Page* page, MarginStruct& bleedData); + + + // Canvas + + /*! + * \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 + */ + 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 + */ + int columnOfPage(int pageIndex) const; + /*! + * \brief 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); + /*! + * \brief 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); + + /*! + * \brief 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 Page group + +/*! \name Layer + * \brief Layer related functions. + */ //@{ // Add, delete and move layers - /** - * @brief Add a layer to the current document - * @param layerName name of layer - * @param activate the layer active - * @return Number of the layer created + + /*! + * \brief 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 - * @param layerNumberToCopy source layer - * @param whereToInsert target layer - * @return Success or failure + /*! + * \brief 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 - * @param layerNumber of layer - * @param deleteItems the items on the layer too? - * @return Success or failure + /*! + * \brief 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 - * @param layerToActivate Number of the layer - * @return Success or failure + // Active layer + + /*! + * \brief 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 - * @param layerNameToActivate Name of the layer - * @return Success or failure + /*! + * \brief 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 - * @param layerNumber Number of the layer - * @param isPrintable bool true = layer is prantable - * @return Success or failure + /*! + * \brief Return the number of the current layer. + * + * \return Active layer number + */ + int activeLayer(); + /*! + * \brief Return the name of the current layer. + * + * \return Name of the layer + */ + const QString& activeLayerName(); + + // Layer properties + + /*! + * \brief Return the layer name. + * + * \param layerNumber Number of the layer + * \return Name of the layer + */ + 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 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 - * @param layerNumber Number of the layer - * @return Printable or not + /*! + * \brief 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 - * @param layerNumber Number of the layer - * @param isViewable true = layer is visible - * @return Success or failure + /*! + * \brief 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 - * @param layerNumber Number of the layer - * @return Visible or not + /*! + * \brief 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 - * @param layerNumber Number of the layer - * @param isLocked true = layer is locked - * @return Success or failure + /*! + * \brief 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 - * @param layerNumber Number of the layer - * @return Locked or not + /*! + * \brief 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 - * @param layerNumber Number of the layer - * @param flow true = Text flows around objects on this layer - * @return Success or failure + /*! + * \brief 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 - * @param layerNumber Number of the layer - * @return flow or not + /*! + * \brief 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 - * @param layerNumber Number of the layer - * @param trans transparency value 0.0 - 1.0 - * @return Success or failure + /*! + * \brief 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 - * @param layerNumber Number of the layer - * @return transparency value 0.0 - 1.0 + /*! + * \brief 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 - * @param layerNumber Number of the layer - * @param blend layerBlendMode - * @return Success or failure + /*! + * \brief 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 - * @param layerNumber Number of the layer - * @return layerBlendMode + /*! + * \brief 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 - * @param layerNumber Number of the layer - * @return Level of the layer + /*! + * \brief Set the layer outline mode via the layer number. + * + * \param layerNumber Number 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 - * @param layerNumber Number of the layer - * @param color color of the marker - * @return Success or failure + 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); + + // Layer marker color + + /*! + * \brief 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 - * @param layerNumber Number of the layer - * @return marker color + /*! + * \brief 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 - * @param layerNumber Number of the layer - * @param outline true = layer is displayed in outlines only - * @return Success or failure - */ - 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 + + // Layer level + + /*! + * \brief Returns the level of the requested layer. + * + * \param layerNumber Number of the layer + * \return Level of the layer */ - bool layerOutline(const int layerNumber); - /** - * @brief Return the number of the layer at a certain level - * @param layerLevel Layer level - * @return Layer number + int layerLevelFromNumber(const int layerNumber); + /*! + * \brief 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 - * @param layerNumber Number of the layer - * @return Success or failure + + // Lower and Raise Layer + + /*! + * \brief 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 - * @param layerLevel Level of the layer - * @return Success or failure + /*! + * \brief 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 - * @param layerNumber Number of the layer - * @return Success or failure + /*! + * \brief 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 - * @param layerLevel Level of the layer - * @return Success or failure + /*! + * \brief 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 - */ - 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 + + // Various functions on layer + + /*! + * \brief Returns the layer count. + * + * \return Number of layers in doc */ - bool changeLayerName(const int layerNumber, const QString& newName); - /** - * @brief Does the layer have items on it? - * @param layerNumber Number of the layer - * @return Layer contains items bool + int layerCount() const; + /*! + * \brief 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 - * @param layerNumber old layer number - * @param newLayerNumber New layer number - * @return Success or failure + /*! + * \brief 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 - * @param list QStringList to insert the layer names into - */ - void orderedLayerList(QStringList* list); - //Items - bool deleteTaggedItems(); - /*! - * @brief Builds a qmap of the icc profiles used within the document - */ - 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 + * \brief Returns a list of the layers in their order. + * + * \param list QStringList to insert the layer names into */ - void enableCMS(bool enable); - - const ParagraphStyle& paragraphStyle(QString name) { return docParagraphStyles.get(name); } - const StyleSet& 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 orderedLayerList(QStringList* list); +//@} // End of Layer function - void getNamedResources(ResourceCollection& lists) const; - void replaceNamedResources(ResourceCollection& newNames); - - void redefineStyles(const StyleSet& 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 replaceStyles(const QMap& newNameForOld); - /** - * @brief 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); - /** - * @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 - */ - void loadStylesFromFile(QString fileName, StyleSet *tempStyles, - StyleSet *tempCharStyles, - QMap *tempLineStyles); +/*! \name Item + * \brief Item related functions. + */ //@{ + // Add - const CharStyle& charStyle(QString name) { return docCharStyles.get(name); } - const StyleSet& charStyles() { return docCharStyles; } - void redefineCharStyles(const StyleSet& 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 + /*! + * \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 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 replaceCharStyles(const QMap& 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 + 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); + /*! + * \brief 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 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 + 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 */ - void restore(UndoState* state, bool isUndo); - /** - * @brief Sets the name of the document - * @param name Name for the document - * @author Riku Leino + int itemAddUserFrame(InsertAFrameData &iafData); + /*! + * \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. */ - void setName(const QString& name); + bool itemAddCommit(const int itemNumber); /*! - * @brief Returns a stringlist of the item attributes within the document + * \brief 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 */ - QStringList getItemAttributeNames(); - - bool AddFont(QString name, int fsize = 10); + void itemAddDetails(const PageItem::ItemType itemType, const PageItem::ItemFrameType frameType, const int itemNumber); /*! - * @brief TODO: Reorganise the fonts.. how? Moved from scribus.cpp - * CB: almost the same as getUsedFonts??? + * \brief Item type conversion functions. + * + * \param currItem item to convert + * \param newType + * \param secondaryItem ? */ - QMap reorganiseFonts(); + PageItem* convertItemTo(PageItem *currItem, PageItem::ItemType newType, PageItem* secondaryItem=NULL); /*! - * @brief Returns a qmap of the fonts and their glyphs used within the document + * \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. */ - void getUsedFonts(QMap > &Really); - void checkItemForFonts(PageItem *it, QMap > & Really, uint lc); + //TODO: void PasteItem(struct CopyPasteBuffer *Buffer, bool loading, bool drag = false); + + //itemDelete + //itemBlah... + + // move, rotate, resize items /*! - * @brief Replace line style colors + * \brief Move item. + * + * \param newX new X coord + * \param newY new Y coord + * \param item page item to move + * \param fromMP ? */ - void replaceLineStyleColors(const QMap& colorMap); - /*! - * @brief Builds a qmap of the colours used within the document - */ - void getUsedColors(ColorList &colorsToUse, bool spot = false); - /*! - * @brief Return if a specific color is used by line styles - */ - bool lineStylesUseColor(const QString& colorName); - /*! - * @brief Set the patterns for a document - */ - bool addPattern(QString &name, ScPattern& pattern); - void setPatterns(QMap &patterns); +//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 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 - */ - 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 Undo function for grouping/ungrouping - */ - void restoreGrouping(SimpleState *state, bool isUndo); - void restoreUngrouping(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. + * \brief Rotate Item. + * + * \param angle angle to rotate + * \param itemNumber index of the item to rotate */ - 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 RotateItem(double angle, int itemNumber); + /*! + * \brief Rotate Item. + * + * \param angle angle to rotate + * \param currItem page item to rotate */ - void recalculateColors(); - /** - * @brief Sets up the ScText defaults from the document + void RotateItem(double angle, PageItem *currItem); + /*! + * \brief Move and Rotate Item. + * + * \param currItem page item to transform + * \param npv ? + * \param fromMP ? */ - void setScTextDefaultsFromDoc(ScText *); - /** - * @brief Copies a normal page to be a master pages + void MoveRotated(PageItem *currItem, FPoint npv, bool fromMP = false); + /*! + * \brief 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 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. + bool SizeItem(double newX, double newY, int ite, bool fromMP = false, bool DoUpdateClip = true, bool redraw = true); + /*! + * \brief Resize item. + * + * \param newX new X coord + * \param newY new Y coord + * \param pi page item to resize + * \param fromMp ? + * \param DoUpdateClip ? + * \param redraw ? */ - //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. + bool SizeItem(double newX, double newY, PageItem *pi, bool fromMP = false, bool DoUpdateClip = true, bool redraw = true); + /*! + * \brief Size and Move item. * - * @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); - - /** 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 + * \param newX new X coord + * \param newY new Y coord + * \param ite index of page item to transform + * \param fromMp ? + * \param constrainRotation ? */ - int itemAddUserFrame(InsertAFrameData &iafData); + 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); - /** - * @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. + //void FlipImageH(); + //void FlipImageV(); + void MirrorPolyH(PageItem *currItem); + void MirrorPolyV(PageItem *currItem); + + // Various + + /*! + * \brief 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(); + /*! + * \brief 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 + /*! + * \brief Run this common frame item update code. */ void updateFrameItems(); - /** - * @brief Renumbers the items into the order they are stored in in the lists. + /*! + * \brief 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. + /*! + * \brief 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 + /*! + * \brief 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 + * \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? + /*! + * \brief 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 + /*! + * \brief Get a list of frames of certain type. + */ + QMap getDocItemNames(PageItem::ItemType itemType); +//@} //End Items group + +/*! \name Sections + * \brief Sections related functions + */ //@{ + // add, delete, use sections + + /*! + * \brief 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 + /*! + * \brief 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. + /*! + * \brief 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. + /*! + * \brief 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 + /*! + * + * \param otherPageIndex + * \param location + * \param count */ void addPageToSection(const uint otherPageIndex, const uint location, const uint count=1); - /** - * - * @param pageIndex + /*! + * + * \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 - */ - void insertColor(QString nam, double c, double m, double y, double k); - - QMap& 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 +//@} // End of align functions + +/*! \name Styles + * Style related functions + */ //@{ + // Paragraphe style + + /*! + * \brief Get a paragraph style by its name. */ - 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 + const ParagraphStyle& paragraphStyle(QString name) { return docParagraphStyles.get(name); } + /*! + * \brief Get all the paragraph style. */ - int columnOfPage(int pageIndex) const; - + const StyleSet& paragraphStyles() { return docParagraphStyles; } + /*! + * \brief Redefine Paragraphes style. + */ +//ivro: rename rededineParaStyles ? + void redefineStyles(const StyleSet& 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 + */ +//ivro: rename replaceParaStyles ? + void replaceStyles(const QMap& newNameForOld); + /*! + * \brief 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 + + /*! + * \brief Get a character style by name. + * + * \param name char style name + */ + const CharStyle& charStyle(QString name) { return docCharStyles.get(name); } + /*! + * \brief Get all the Character styles. + */ + const StyleSet& charStyles() { return docCharStyles; } + /*! + * \brief Redefine Character styles. + * + * \param newStyle character styles + * \param removeUnused + */ + void redefineCharStyles(const StyleSet& 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 replaceCharStyles(const QMap& newNameForOld); + /*! + * \brief 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 + + /*! + * \brief 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); + /*! + * \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 + */ + void loadStylesFromFile(QString fileName, StyleSet *tempStyles, + StyleSet *tempCharStyles, + QMap *tempLineStyles); +//@} // End of style group + +/*! \name Color Management + * \brief Color Management related functions. + */ //@{ + /*! + * \brief Builds a qmap of the icc profiles used within the document. + */ + 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 + */ + void enableCMS(bool enable); + /*! + * \brief Recalculate the colors after CMS settings change. + * + * Update the items in the doc accordingly. + */ + void recalculateColors(); + + /*! + * \brief 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); + /*! + * \brief Replace line style colors. + */ + void replaceLineStyleColors(const QMap& colorMap); + /*! + * \brief Builds a qmap of the colours used within the document. + */ + void getUsedColors(ColorList &colorsToUse, bool spot = false); + /*! + * \brief Is this specific color is used by line styles. + */ + bool lineStylesUseColor(const QString& colorName); +//@} // End of color functions + +/*! \name Font + * \brief Font related funtions. + */ //@{ + /*! + * \brief 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 reorganiseFonts(); + /*! + * \brief Returns a qmap of the fonts and their glyphs used within the document. + */ + void getUsedFonts(QMap > &Really); + void checkItemForFonts(PageItem *it, QMap > & Really, uint lc); +//@} // End of font functions + +/*! \name Patterns + * \brief Pattern related functions. + */ //@{ + /*! + * \brief Set the patterns for a document. + */ + bool addPattern(QString &name, ScPattern& pattern); + void setPatterns(QMap &patterns); + /*! + * \brief Builds a QStringList of the patterns used within the document. + */ + QStringList getUsedPatterns(); + QStringList getUsedPatternsSelection(Selection* customSelection); + QStringList getUsedPatternsHelper(QString pattern, QStringList &results); +//@} // End of patterns functions + +/*! \name Item selection + * \brief Item selection related functions. + * + * Item selection is used to modify items. + */ //@{ bool sendItemSelectionToBack(); bool bringItemSelectionToFront(); @@ -835,76 +1268,325 @@ public: void itemSelection_SetStrikethru(int pos, int wid, Selection* customSelection=0); void itemSelection_SetEffects(int s, Selection* customSelection=0); void itemSelection_SetOpticalMargins(int i, Selection* customSelection=0); - void itemSelection_resetOpticalMargins(Selection* customSelection=0); void itemSelection_SetColorProfile(const QString& profileName, Selection* customSelection=0); void itemSelection_SetRenderIntent(int intentIndex, Selection* customSelection=0); - + // void chAbStyle(PageItem *currItem, int s); 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: + 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); + /*! + * \brief Adjust an image frame's size to fit the size of the image in it. + */ + void itemSelection_AdjustFrametoImageSize(Selection* customSelection=0); + /*! + * \brief 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); +//@} // End of item selection group + +public: + +/*! \name Various functions + */ //@{ + + /*! + * \brief Save function. + */ + bool save(const QString& fileName, QString* savedFile = NULL); + + /*! + * \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 ScribusDoc.createDefaultMasterPages() + * \param pageCount number of page to create + */ + void createNewDocPages(int pageCount); + + /*! + * \brief Update the fill and line QColors for all items in the doc. + */ + void updateAllItemQColors(); + + /*! + * \brief Sets up the ScText defaults from the document. + */ + void setScTextDefaultsFromDoc(ScText *); + +// Restore + + /*! + * \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 Undo function for applying a master page. + */ + void restoreMasterPageApplying(SimpleState *state, bool isUndo); + /*! + * \brief Undo function for copy a page. + */ + void restorePageCopy(SimpleState *state, bool isUndo); + /*! + * \brief Undo function for grouping/ungrouping. + */ + void restoreGrouping(SimpleState *state, bool isUndo); + void restoreUngrouping(SimpleState *state, bool isUndo); +// Loading images + + /*! + * \brief 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); + /*! + * \brief 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); + /*! + * \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); +public slots: + /*! + * \brief Update all the picture in the current selection. + */ + void updatePic(); + /*! + * \brief Update the specified picture. + */ + void updatePict(QString name); + /*! + * \brief Update all picture in the specified directory. + */ + void updatePictDir(QString name); + /*! + * \brief Remove a picture from document. + */ + void removePict(QString name); +public: + /*! + * \brief Find the minX,MinY and maxX,maxY for the canvas required for the doc. + * + * \param minPoint + * \param maxPoint + */ + void canvasMinMax(FPoint& minPoint, FPoint& maxPoint); + + /*! + * \brief 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); + /*! + * \brief 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. + +// Named Ressources + + void getNamedResources(ResourceCollection& lists) const; + void replaceNamedResources(ResourceCollection& newNames); + + + QMap& constants() { return m_constants; } + +// Grid and Guides + + /*! + * \brief Apply grid to a QPoint, from ScribusView. */ - 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 */ 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 getDocItemNames(PageItem::ItemType itemType); - + + /*! + * \brief Return the guarded object associated with the document. + */ + const ScGuardedPtr& guardedPtr() const; + + UpdateManager* updateManager() { return &m_updateManager; } + MassObservable * itemsChanged() { return &m_itemsChanged; } + MassObservable * pagesChanged() { return &m_pagesChanged; } + MassObservable * regionsChanged() { return &m_regionsChanged; } + void invalidateRegion(QRectF region); +public: + /*! + * \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(); +public slots: + /*! + * \brief Change display quality of all images in document. + * \author OssiLehtinen + */ + void allItems_ChangePreviewResolution(int id); protected: void addSymbols(); - bool m_hasGUI; +//@} // End of various group + +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(); + /*! + * \brief Temporary signal for SizeItem. + */ + void widthAndHeight(double, double); + +protected: 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 m_constants; - ScribusMainWindow* m_ScMW; - ScribusView* m_View; ScGuardedObject m_guardedObject; public: // Public attributes @@ -915,71 +1597,60 @@ public: // Public attributes int viewCount; int viewID; bool SnapGuides; - bool GuideLock; - /** \brief Scratch space around Pages */ + /*! \brief Scratch space around Pages */ MarginStruct scratch; - double GapHorizontal; - double GapVertical; + double GapHorizontal; /*!< \brief Horizontal gap between page on canvas. */ + double GapVertical; /*!< \brief Vertical gap betwwen page on canvas. */ // double ScratchLeft; // double ScratchRight; // double ScratchTop; // double ScratchBottom; - /** \brief Minimum and Maximum Points of Document */ - FPoint minCanvasCoordinate; - FPoint maxCanvasCoordinate; + FPoint minCanvasCoordinate; /*!< \brief Minimum point of document. */ + FPoint maxCanvasCoordinate; /*!< \brief Maximum point of document. */ double rulerXoffset; double rulerYoffset; - /** \brief List of Pages */ - QList* Pages; - /** \brief List of Master Pages */ - QList MasterPages; - /** \brief List of Document Pages */ - QList DocPages; - /** \brief Mapping Master Page Name to Master Page numbers */ - QMap MasterNames; - /** \brief List of Objects */ - QList* Items; - QList MasterItems; - QList DocItems; QList FrameItems; Selection* const m_Selection; - /** \brief Pagewidth */ - double pageWidth; - /** \brief Pageheight */ - double pageHeight; + double pageWidth; /*!< \brief Default page's width. */ + double pageHeight; /*!< \brief Default page's height. */ /* Number of Pages */ // int pageCount; Disabled CR no longer required - /** \brief Margins */ - MarginStruct pageMargins; + MarginStruct pageMargins; /*!< \brief Default page's margins. */ int marginPreset; - QList pageSets; - MarginStruct bleeds; +//ivro: is this cannot be moved elsewhere +// Save only the current pageSets and when we change it, copy the new here. + QList pageSets; /*!< \brief List of page layout supported by Scribus. */ + int currentPageLayout; /*!< \brief Index of the currently used page layout. \details See ScribusDoc::pageSets. */ + MarginStruct bleeds; /*!< Default page's 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 */ + double PageSp; /*!< \brief Number of Columns for AutomaticTextFrame. */ + double PageSpa; /*!< \brief Distance between columns for AutomaticTextFrame. */ +//ivro: use the scribusstruct PageOrientation enum ? + int PageOri; /*!< \brief Default page's orientation. \details O => Portrait, 1 = Landscape. */ + QString m_pageSize; /*!< \brief Default page's format. */ + /*! + * \brief Erste Seitennummer im Dokument. + */ int FirstPnum; - /** \brief Flag fuer Rasterbenutzung */ + /*! + * \brief Flag fuer Rasterbenutzung. + */ bool useRaster; - /** \brief Im Dokument benutzte Farben */ + /*! + * \brief Im Dokument benutzte Farben. + */ ColorList PageColors; - /** \brief InfoStrings fuer das aktuelle Dokument */ + /*! + * \brief InfoStrings fuer das aktuelle Dokument. + */ DocumentInformation documentInfo; int appMode; int SubMode; double *ShapeValues; int ValCount; - QString DocName; QMap UsedFonts; SCFonts * const AllFonts; QList AObjects; @@ -994,10 +1665,8 @@ public: // Public attributes toolPrefs toolSettings; QMap checkerProfiles; QString curCheckProfile; - /** \brief Letztes Element fuer AutoTextrahmen */ - PageItem *LastAuto; - /** \brief Erstes Element fuer AutoTextrahmen */ - PageItem *FirstAuto; + PageItem *LastAuto; /*!< \brief The last AutomaticTextFrame element. */ + PageItem *FirstAuto; /*!< \brief The first AutomaticTextFrame element. */ bool DragP; bool leaveDrag; PageItem *DraggedElem; @@ -1045,23 +1714,23 @@ public: 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 BookMarks; bool OldBM; bool hasName; int RotMode; - bool AutoSave; - int AutoSaveTime; + bool AutoSave; /*!< \brief Is autosaved ? */ + int AutoSaveTime; /*!< \brief Time in milliseconds between autosave. */ QTimer * const autoSaveTimer; QMap MLineStyles; QList arrowStyles; @@ -1082,7 +1751,7 @@ public: //Attributes to be applied to frames ObjAttrVector docItemAttributes; ToCSetupVector docToCSetups; - DocumentSectionMap sections; + DocumentSectionMap sections; /*!< \brief Map of document's sections */ FPointArray symReturn; FPointArray symNewLine; FPointArray symTab; @@ -1095,50 +1764,14 @@ private: UndoTransaction* m_itemCreationTransaction; UndoTransaction* m_alignTransaction; - Page* m_currentPage; UpdateManager m_updateManager; MassObservable m_itemsChanged; MassObservable m_pagesChanged; MassObservable 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); +<<<<<<< HEAD:Scribus/scribus/scribusdoc.h +<<<<<<< HEAD:Scribus/scribus/scribusdoc.h 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); @@ -1203,10 +1836,44 @@ public slots: void undoRedoBegin(); void undoRedoDone(); +======= +>>>>>>> Documents ScribusDoc itemSelection related:Scribus/scribus/scribusdoc.h void updatePic(); void updatePict(QString name); void updatePictDir(QString name); void removePict(QString name); + +======= +>>>>>>> Groups and documents ScribusDoc various related:Scribus/scribus/scribusdoc.h +public: + QList* Pages; /*!< \brief Pointer on a list of pages. \details See masterPageMode() */ + QList MasterPages; /*!< \brief List of Master Pages. */ + QList DocPages; /*!< \brief List of Document Pages. */ + + QList* Items; /*!< \brief Pointer on a list of items. \details See masterPageMode() */ + QList MasterItems; /*!< \brief List of items that belongs to Master Pages. */ + QList DocItems; /*!< \brief List of items that belongs to Document Pages. */ + + QMap MasterNames; /*!< \brief Mapping Master Page Name to Master Page numbers. \details See rebuildMasterNames() */ + bool GuideLock; /*!< \brief Is the guides must be locked ? See LockGuides() */ + + QString DocName; /*!< \brief Document's name. */ +protected: + bool loading; /*!< \brief Is the document loading ? \details See isLoading() and setLoading(). */ + bool modified; /*!< \brief Is the document modified ? \details See isModified() and setModified(). */ + + bool m_hasGUI; /*!< \brief Is document associated with a GUI ? \details See hasGUI() and setGUI(). */ + ScribusMainWindow* m_ScMW; /*!< \brief Main window associated with the document. \details See scMW() and setGUI(). */ + ScribusView* m_View; /*!< \brief View associated with the document. \details See view() and setGUI(). */ + + bool automaticTextFrames; /*!< \brief Is the document using automaticTextFrames ? \details See usesAutomaticTextFrames() and setUsesAutomagicTextFrames(). */ + + int docUnitIndex; /*!< \brief Document's unit index. \details See setUnitIndex() and unitIndex(). */ + double docUnitRatio; /*!< \brief Document's unit ratio. \details See unitRatio(). */ + + bool m_masterPageMode; /*!< \brief Is the document in master page mode ? \details See masterPageMode() and setMasterPageMode(). */ +private: + Page* m_currentPage; /*!< \brief Current page. \details See setCurrentPage() and currentPage(). */ }; Q_DECLARE_METATYPE(ScribusDoc*);