You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
608 lines
19 KiB
608 lines
19 KiB
// -*- Mode: c++; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 4; -*-
|
|
/* This file is part of the KDE project
|
|
Copyright (C) 2002 Laurent MONTEL <lmontel@mandrakesoft.com>
|
|
Copyright (C) 2004-2005 Thorsten Zachmann <zachmann@kde.org>
|
|
|
|
This library is free software; you can redistribute it and/or
|
|
modify it under the terms of the GNU Library General Public
|
|
License as published by the Free Software Foundation; either
|
|
version 2 of the License, or (at your option) any later version.
|
|
|
|
This library is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
Library General Public License for more details.
|
|
|
|
You should have received a copy of the GNU Library General Public License
|
|
along with this library; see the file COPYING.LIB. If not, write to
|
|
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
|
* Boston, MA 02110-1301, USA.
|
|
*/
|
|
|
|
#ifndef KPRPAGE_H
|
|
#define KPRPAGE_H
|
|
|
|
#include <qwidget.h>
|
|
#include <qptrlist.h>
|
|
#include "global.h"
|
|
#include <KoBrush.h>
|
|
#include <KoPoint.h>
|
|
#include <KoRect.h>
|
|
#include <KoStyleCollection.h> // for KoStyleChangeDefMap
|
|
#include <qvariant.h>
|
|
#include <KoDocumentChild.h>
|
|
#include <KoPictureCollection.h>
|
|
|
|
class KMacroCommand;
|
|
class KoSavingContext;
|
|
class KURL;
|
|
class KPrTextView;
|
|
class KPrObject;
|
|
class KPrDocument;
|
|
class KPrView;
|
|
class KoDocumentEntry;
|
|
class KoPageLayout;
|
|
class KCommand;
|
|
class KoPointArray;
|
|
class DCOPObject;
|
|
class KPrTextObject;
|
|
class KoTextObject;
|
|
class KPrPixmapObject;
|
|
class KPrPartObject;
|
|
class KPrBackGround;
|
|
|
|
class KoXmlWriter;
|
|
class KoGenStyles;
|
|
class KoPen;
|
|
|
|
|
|
class KPrPage
|
|
{
|
|
public:
|
|
/**
|
|
* @brief Constructor
|
|
*
|
|
* @param doc pointer to the kpresenter document
|
|
* @param masterPage master page, 0 if it is a master page
|
|
*/
|
|
KPrPage(KPrDocument *_doc, KPrPage *masterPage = 0 );
|
|
|
|
/**
|
|
* @brief Desctructor
|
|
*/
|
|
virtual ~KPrPage();
|
|
|
|
/**
|
|
* @brief Return a DCOP interface for this page
|
|
*/
|
|
virtual DCOPObject* dcopObject();
|
|
|
|
/**
|
|
* @brief Return a DCOP interface for this page
|
|
*/
|
|
KPrDocument * kPresenterDoc() const {return m_doc; }
|
|
|
|
/**
|
|
* @brief Get the manual title
|
|
*
|
|
* @return the manual title
|
|
*/
|
|
QString manualTitle()const;
|
|
|
|
/**
|
|
* @brief Set the manual title
|
|
*
|
|
* @param title which sould be set
|
|
*/
|
|
void insertManualTitle(const QString & title);
|
|
|
|
/**
|
|
* @brief Get the page title.
|
|
*
|
|
* The page title is found out like following:
|
|
* - If a manual title is set the manual title is returned.
|
|
* - If there are text objects on the page the title is generated
|
|
* for the first paragraph of top most text object.
|
|
* - If a title is passed to the function it is returned
|
|
* - Slide %PAGENUMBER or Master Slide
|
|
*/
|
|
QString pageTitle( const QString &_title = QString() ) const;
|
|
|
|
/**
|
|
* @brief Set the note text
|
|
*
|
|
* @param text which should be set
|
|
*/
|
|
void setNoteText( const QString &_text );
|
|
|
|
/**
|
|
* @brief Get the note text
|
|
*
|
|
* @return the text of the note
|
|
*/
|
|
QString noteText( )const;
|
|
|
|
/**
|
|
* @brief Set the master page to masterPage
|
|
*
|
|
* @param masterpage to set
|
|
*/
|
|
void setMasterPage( KPrPage *_masterPage ) { m_masterPage = _masterPage; }
|
|
|
|
/**
|
|
* @brief Get the master page
|
|
*
|
|
* @return the master page, 0 if it is a master page
|
|
*/
|
|
KPrPage * masterPage() const { return m_masterPage; }
|
|
|
|
/**
|
|
* @brief Check if page is a master page
|
|
*
|
|
* @return true if master page
|
|
* @return false otherwise
|
|
*/
|
|
bool isMasterPage() const;
|
|
|
|
/**
|
|
* @brief Get object list
|
|
*
|
|
* @return object list
|
|
*/
|
|
const QPtrList<KPrObject> & objectList() const { return m_objectList; }
|
|
|
|
/**
|
|
* @brief Get object at position
|
|
*
|
|
* @param pos position of object
|
|
*
|
|
* @return object at position num
|
|
*/
|
|
KPrObject *getObject( int num );
|
|
|
|
/**
|
|
* @brief Appends object to page
|
|
*
|
|
* Appends the object to the page. The name of the object
|
|
* is unified.
|
|
*
|
|
* @param obj object to append
|
|
*/
|
|
void appendObject( KPrObject *_obj );
|
|
|
|
/**
|
|
* @brief Appends object to page
|
|
*
|
|
* Appends the objects to the page. The name of the objects
|
|
* is unified.
|
|
*
|
|
* @param obj objects to append
|
|
*/
|
|
void appendObjects( const QValueList<KPrObject *> &objects );
|
|
|
|
/**
|
|
* @brief Replaces an object
|
|
*
|
|
* The object oldObject by the object newObject
|
|
*
|
|
* @param oldObject object which will be removed from the page
|
|
* @param newObject object which will take the place of the oldObject
|
|
*/
|
|
void replaceObject( KPrObject *oldObject, KPrObject *newObject );
|
|
|
|
/**
|
|
* @brief Take object from page
|
|
*
|
|
* @param object to be take from page
|
|
*
|
|
* @return the position of the taken object
|
|
*/
|
|
int takeObject( KPrObject *object );
|
|
|
|
/**
|
|
* @brief Delete selected objects from page
|
|
*
|
|
* The returned command will be executed.
|
|
*
|
|
* @return KCommand the command
|
|
* @return 0 if no object is selected
|
|
*/
|
|
KCommand * deleteSelectedObjects();
|
|
|
|
/**
|
|
* @brief Insert object in page
|
|
*
|
|
* Inserts the object at pos to the page. The name of the object
|
|
* is unified.
|
|
*
|
|
* @param object to insert
|
|
* @param position the object should be insert
|
|
*/
|
|
void insertObject( KPrObject *object, int pos );
|
|
|
|
/**
|
|
* @brief
|
|
*/
|
|
void completeLoading( bool _clean, int lastObj );
|
|
|
|
/**
|
|
* @brief Create a uniq name for an object.
|
|
*
|
|
* Create a uniq name for the object. If no name is set for the object
|
|
* a name according to its type is created. If the name already exists
|
|
* append ' (x)'. // FIXME: not allowed by I18N
|
|
*
|
|
* @param object to work on
|
|
*/
|
|
void unifyObjectName( KPrObject *object );
|
|
|
|
/**
|
|
* @brief Get the page rect
|
|
*
|
|
* @return the page rect
|
|
*/
|
|
KoRect getPageRect() const;
|
|
|
|
/**
|
|
* @brief Get the page rect with applied zoom
|
|
*
|
|
* @return the page rect
|
|
*/
|
|
QRect getZoomPageRect()const;
|
|
|
|
/**
|
|
* @brief Set object for the page
|
|
*
|
|
* @param list of objects
|
|
*/
|
|
void setObjectList( QPtrList<KPrObject> objectLlist ) {
|
|
m_objectList.setAutoDelete( false ); m_objectList = objectLlist; m_objectList.setAutoDelete( false );
|
|
}
|
|
|
|
/**
|
|
* @brief Get the number ob objects on the page
|
|
*
|
|
* @return the number of objects on the page
|
|
*/
|
|
unsigned int objNums() const { return m_objectList.count(); }
|
|
|
|
/**
|
|
* @brief Get the number of text objects
|
|
*
|
|
* The functions in only used by KPrPageIface.
|
|
*
|
|
* @return the number os text object on the page
|
|
*/
|
|
int numTextObject() const;
|
|
/**
|
|
* @brief Get the text object
|
|
*
|
|
* The functions in only used by KPrPageIface.
|
|
*
|
|
* @param num the number of the text object to get
|
|
*
|
|
* @return the text object with the number
|
|
* @return 0 if no such object exists
|
|
*/
|
|
KPrTextObject *textFrameSet( unsigned int _num ) const;
|
|
|
|
/**
|
|
* @brief Get the amount of selected objects
|
|
*
|
|
* @return the amount of select objects
|
|
*/
|
|
int numSelected() const;
|
|
|
|
/**
|
|
* @brief
|
|
*/
|
|
void pasteObjs( const QByteArray & data, int nbCopy = 1, double angle = 0.0 ,
|
|
double _increaseX=0.0, double increaseY = 0.0, double moveX=0.0, double moveY=0.0);
|
|
|
|
/**
|
|
* @brief
|
|
*/
|
|
KCommand * replaceObjs( bool createUndoRedo, double _orastX, double _orastY,
|
|
const QColor & _txtBackCol, const QColor & _otxtBackCol);
|
|
|
|
/**
|
|
* @brief
|
|
*/
|
|
void copyObjs(QDomDocument &doc, QDomElement &presenter, QValueList<KoPictureKey> & lst) const;
|
|
|
|
/**
|
|
* @brief Get the first selected object
|
|
*
|
|
* @return the first selected object of this page
|
|
* @return O if none exists
|
|
*/
|
|
KPrObject* getSelectedObj() const;
|
|
|
|
/**
|
|
* @brief Get a list of all selected objects
|
|
*
|
|
* @param withoutHeaderFooter if true a selected header
|
|
* or footer will not be in the list returned.
|
|
*
|
|
* @return list of selected objets.
|
|
*/
|
|
QPtrList<KPrObject> getSelectedObjects( bool withoutHeaderFooter = false ) const;
|
|
|
|
/**
|
|
* @brief Get the first selected pictur
|
|
*
|
|
* @return first selected picture
|
|
* @return 0 if none is selected
|
|
*/
|
|
KPrPixmapObject* getSelectedImage() const;
|
|
|
|
/**
|
|
* @brief Set the image effect for all selected pictures
|
|
*
|
|
* @param eff image effect
|
|
* @param param1 effect parameter 1
|
|
* @param param1 effect parameter 2
|
|
* @param param1 effect parameter 3
|
|
*/
|
|
KCommand * setImageEffect(ImageEffect eff, QVariant param1, QVariant param2, QVariant param3);
|
|
|
|
/**
|
|
* @brief Group selected objects.
|
|
*
|
|
* This will create a KPrGroupObjCmd, executes it and adds it to the history.
|
|
* If less than 2 objects are selected nothing happens.
|
|
*/
|
|
void groupObjects();
|
|
|
|
/**
|
|
* @brief Ungroup all selected group objects
|
|
*
|
|
* @param macro to store the commands in
|
|
*/
|
|
void ungroupObjects( KMacroCommand ** macro );
|
|
|
|
/**
|
|
* @brief
|
|
*/
|
|
void raiseObjs( bool forward );
|
|
|
|
/**
|
|
* @brief
|
|
*/
|
|
void lowerObjs( bool backward );
|
|
|
|
KCommand* setPen( const KoPen &pen, LineEnd lb, LineEnd le, int flags );
|
|
KCommand* setBrush( const QBrush &brush, FillType ft, const QColor& g1, const QColor &g2,
|
|
BCType gt, bool unbalanced, int xfactor, int yfactor, int flags );
|
|
|
|
/**
|
|
* Insert an object into the page
|
|
*/
|
|
KCommand * insertObject( const QString &name, KPrObject * object, const KoRect &r, bool addCommand = true );
|
|
|
|
virtual KPrPartObject* insertObject( const KoRect&, KoDocumentEntry& );
|
|
|
|
void insertRectangle( const KoRect &r, const KoPen & pen, const QBrush &brush, FillType ft,
|
|
const QColor &g1, const QColor & g2,BCType gt, int rndX, int rndY,
|
|
bool unbalanced, int xfactor, int yfactor );
|
|
|
|
void insertCircleOrEllipse( const KoRect &r, const KoPen &pen, const QBrush &brush, FillType ft,
|
|
const QColor &g1, const QColor &g2, BCType gt, bool unbalanced, int xfactor, int yfactor );
|
|
|
|
void insertPie( const KoRect &r, const KoPen &pen, const QBrush &brush, FillType ft,
|
|
const QColor &g1, const QColor &g2,BCType gt, PieType pt, int _angle, int _len,
|
|
LineEnd lb,LineEnd le,bool unbalanced, int xfactor, int yfactor );
|
|
|
|
KPrTextObject* insertTextObject( const KoRect& r, const QString& text = QString::null, KPrView *_view = 0L );
|
|
void insertLine( const KoRect &r, const KoPen &pen, LineEnd lb, LineEnd le, LineType lt );
|
|
|
|
void insertAutoform( const KoRect &r, const KoPen &pen, const QBrush &brush, LineEnd lb, LineEnd le,
|
|
FillType ft,const QColor &g1, const QColor &g2, BCType gt, const QString &fileName,
|
|
bool unbalanced,int xfactor, int yfactor );
|
|
|
|
void insertFreehand( const KoPointArray &points, const KoRect &r, const KoPen &pen,LineEnd lb, LineEnd le );
|
|
void insertPolyline( const KoPointArray &points, const KoRect &r, const KoPen &pen,LineEnd lb, LineEnd le );
|
|
void insertQuadricBezierCurve( const KoPointArray &points, const KoPointArray &allPoints, const KoRect &r,
|
|
const KoPen &pen,LineEnd lb, LineEnd le );
|
|
void insertCubicBezierCurve( const KoPointArray &points, const KoPointArray &allPoints, const KoRect &r,
|
|
const KoPen &pen,LineEnd lb, LineEnd le );
|
|
|
|
void insertPolygon( const KoPointArray &points, const KoRect &r, const KoPen &pen, const QBrush &brush,
|
|
FillType ft,const QColor &g1, const QColor &g2, BCType gt, bool unbalanced,
|
|
int xfactor, int yfactor, bool _checkConcavePolygon, int _cornersValue, int _sharpnessValue );
|
|
|
|
void insertClosedLine( const KoPointArray &points, const KoRect &r, const KoPen &pen, const QBrush &brush,
|
|
FillType ft,const QColor &g1, const QColor &g2,
|
|
BCType gt, bool unbalanced, int xfactor, int yfactor, ToolEditMode _mode );
|
|
|
|
void slotRepaintVariable();
|
|
void recalcPageNum();
|
|
void changePicture( const KURL & url, QWidget *parent );
|
|
void insertPicture( const QString &filename, const KoPoint &pos );
|
|
void insertPicture( const QString &_file, const KoRect &_rect );
|
|
|
|
void enableEmbeddedParts( bool f );
|
|
|
|
KPrBackGround *background() { return m_kpbackground; }
|
|
|
|
void makeUsedPixmapList();
|
|
|
|
void setBackColor( const QColor &backColor1, const QColor &backColor2, BCType bcType,
|
|
bool unbalanced, int xfactor, int yfactor );
|
|
void setBackPicture( const KoPictureKey & key );
|
|
bool getBackUnbalanced( )const;
|
|
void setBackView( BackView backView );
|
|
void setBackType( BackType backType );
|
|
|
|
void setPageEffect( PageEffect pageEffect );
|
|
void setPageEffectSpeed( EffectSpeed pageEffectSpeed );
|
|
void setPageTimer( int pageTimer );
|
|
void setPageSoundEffect( bool soundEffect );
|
|
void setPageSoundFileName( const QString &fileName );
|
|
BackType getBackType( ) const ;
|
|
BackView getBackView( )const ;
|
|
KoPictureKey getBackPictureKey( )const ;
|
|
KoPicture getBackPicture( )const ;
|
|
QColor getBackColor1( )const ;
|
|
QColor getBackColor2()const ;
|
|
int getBackXFactor()const ;
|
|
int getBackYFactor( )const;
|
|
BCType getBackColorType( )const;
|
|
PageEffect getPageEffect( )const;
|
|
EffectSpeed getPageEffectSpeed() const;
|
|
int getPageTimer( )const;
|
|
bool getPageSoundEffect( )const;
|
|
QString getPageSoundFileName()const;
|
|
|
|
|
|
void setUseMasterBackground( bool useMasterBackground );
|
|
bool useMasterBackground() const;
|
|
|
|
/**
|
|
* return the list of steps where objects appear/disappear.
|
|
*/
|
|
QValueList<int> getEffectSteps() const;
|
|
|
|
bool isSlideSelected() const {return m_selectedSlides;}
|
|
void slideSelected(bool _b){m_selectedSlides=_b;}
|
|
|
|
void setInsPictureFile( const QString &_file ) { m_pictureFile = _file; }
|
|
|
|
QString insPictureFile() const { return m_pictureFile; }
|
|
|
|
void deSelectAllObj();
|
|
void deSelectObj( KPrObject *kpobject );
|
|
QDomElement saveObjects( QDomDocument &doc, QDomElement &objects, double yoffset,
|
|
int saveOnlyPage ) const;
|
|
|
|
bool oneObjectTextExist(bool forceAllTextObject = true) ;
|
|
bool oneObjectTextSelected();
|
|
bool isOneObjectSelected();
|
|
bool haveASelectedPartObj();
|
|
bool haveASelectedGroupObj();
|
|
bool haveASelectedPixmapObj();
|
|
|
|
/**
|
|
* @brief get the rect for the objects
|
|
*
|
|
* @param all true if the rect for all objects shoud be returned
|
|
* false if only the rect for selected objects sould be returned
|
|
*
|
|
* @return rect of the objects
|
|
*/
|
|
KoRect getRealRect( bool all ) const;
|
|
bool chPic( KPrView *_view);
|
|
|
|
//return command when we move object
|
|
KCommand *moveObject(KPrView *_view, double diffx, double diffy);
|
|
KCommand *moveObject(KPrView *m_view,const KoPoint &_move,bool key);
|
|
|
|
KCommand *rotateSelectedObjects(float _newAngle, bool addAngle=false);
|
|
KCommand *shadowObj(ShadowDirection dir,int dist, const QColor &col);
|
|
|
|
QPtrList<KoTextObject> allTextObjects() const;
|
|
void addTextObjects(QPtrList<KoTextObject>& lst) const;
|
|
|
|
void repaintObj();
|
|
|
|
KPrObject * getCursor(const QPoint &pos );
|
|
KPrObject * getCursor(const KoPoint &pos );
|
|
|
|
/**
|
|
* Returns the object at position pos
|
|
* @param pos the position in the document on which to look
|
|
* @param withoutProtected if set to true only unprotecred objects are returned
|
|
* @return the object at position pos
|
|
*/
|
|
KPrObject* getObjectAt( const KoPoint &pos, bool withoutProtected = false ) const;
|
|
KPrPixmapObject * picViewOrigHelper() const;
|
|
void applyStyleChange( KoStyleChangeDefMap changed );
|
|
|
|
void reactivateBgSpellChecking(bool refreshTextObj);
|
|
|
|
bool canMoveOneObject() const;
|
|
KCommand *alignVertical( VerticalAlignmentType _type );
|
|
void changeTabStopValue ( double _tabStop );
|
|
bool savePicture( KPrView *_view ) const;
|
|
bool findTextObject( KPrObject *obj );
|
|
KPrObject *nextTextObject(KPrTextObject *obj);
|
|
|
|
void getAllObjectSelectedList(QPtrList<KPrObject> &lst,bool force = false );
|
|
void getAllEmbeddedObjectSelected(QPtrList<KoDocumentChild> &embeddedObjects );
|
|
|
|
void load( const QDomElement &element );
|
|
void loadOasis( KoOasisContext & context );
|
|
|
|
QDomElement save( QDomDocument &doc );
|
|
|
|
bool saveOasisPage( KoStore *store, KoXmlWriter &xmlWriter, int posPage, KoSavingContext& context,
|
|
int & indexObj, int &partIndexObj, KoXmlWriter* manifestWriter, QMap<QString, int> &pageNames ) const;
|
|
QString saveOasisPageStyle( KoStore *store, KoGenStyles& mainStyles ) const;
|
|
QString saveOasisPageEffect() const;
|
|
QString saveOasisAdditionalPageEffect() const;
|
|
bool saveOasisNote( KoXmlWriter &xmlWriter ) const;
|
|
|
|
bool hasHeader() const { return m_bHasHeader; }
|
|
bool hasFooter() const { return m_bHasFooter; }
|
|
void setHeader( bool b, bool _updateDoc = true );
|
|
void setFooter( bool b, bool _updateDoc = true );
|
|
|
|
void setDisplayObjectFromMasterPage( bool _b );
|
|
bool displayObjectFromMasterPage() const { return m_displayObjectFromMasterPage;}
|
|
|
|
void setDisplayBackground( bool _b );
|
|
bool displayBackground() const { return m_displayBackground; }
|
|
|
|
QString oasisNamePage( int posPage ) const;
|
|
|
|
private:
|
|
void makeUsedPixmapListForGroupObject( KPrObject *_obj );
|
|
void completeLoadingForGroupObject( KPrObject *_obj );
|
|
bool objectNameExists( KPrObject *object, QPtrList<KPrObject> &list );
|
|
void saveOasisObject( KoStore *store, KoXmlWriter &xmlWriter, KoSavingContext& context, int & indexObj, int &partIndexObj, KoXmlWriter* manifestWriter ) const;
|
|
|
|
|
|
// list of objects
|
|
QPtrList<KPrObject> m_objectList;
|
|
KPrDocument *m_doc;
|
|
KPrPage *m_masterPage;
|
|
KPrBackGround *m_kpbackground;
|
|
QString m_manualTitle;
|
|
QString m_noteText;
|
|
DCOPObject *m_dcop;
|
|
bool m_selectedSlides;
|
|
|
|
QString m_pictureFile;
|
|
bool m_bHasHeader, m_bHasFooter;
|
|
bool m_useMasterBackground;
|
|
|
|
|
|
bool m_displayObjectFromMasterPage;
|
|
|
|
bool m_displayBackground;
|
|
|
|
/**
|
|
* The page effect
|
|
*/
|
|
PageEffect m_pageEffect;
|
|
/**
|
|
* The speed of the page effect.
|
|
*/
|
|
EffectSpeed m_pageEffectSpeed;
|
|
|
|
/**
|
|
* true when a sound effect will be played when going to this page
|
|
*/
|
|
// ### This could be simply !soundFileName.isEmpty()...
|
|
bool m_soundEffect;
|
|
/**
|
|
* Sound played when showing this page
|
|
*/
|
|
QString m_soundFileName;
|
|
/**
|
|
* TODO
|
|
*/
|
|
int m_pageTimer;
|
|
};
|
|
#endif //KPRPAGE_H
|