diff options
author | tpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2010-01-20 01:29:50 +0000 |
---|---|---|
committer | tpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2010-01-20 01:29:50 +0000 |
commit | 8362bf63dea22bbf6736609b0f49c152f975eb63 (patch) | |
tree | 0eea3928e39e50fae91d4e68b21b1e6cbae25604 /kpresenter/KPrTextObject.h | |
download | koffice-8362bf63dea22bbf6736609b0f49c152f975eb63.tar.gz koffice-8362bf63dea22bbf6736609b0f49c152f975eb63.zip |
Added old abandoned KDE3 version of koffice
git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/applications/koffice@1077364 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'kpresenter/KPrTextObject.h')
-rw-r--r-- | kpresenter/KPrTextObject.h | 312 |
1 files changed, 312 insertions, 0 deletions
diff --git a/kpresenter/KPrTextObject.h b/kpresenter/KPrTextObject.h new file mode 100644 index 00000000..b30754c7 --- /dev/null +++ b/kpresenter/KPrTextObject.h @@ -0,0 +1,312 @@ +// -*- Mode: c++; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 4; -*- +/* This file is part of the KDE project + Copyright (C) 1998, 1999 Reginald Stadlbauer <[email protected]> + Copyright (C) 2005-2006 Thorsten Zachmann <[email protected]> + + 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 kptextobject_h +#define kptextobject_h + +#include "KPrObject.h" +#include "KoRichText.h" +#include <KoTextView.h> +#include <KoStyleCollection.h> // for KoStyleChangeDefMap +#include <KoStyleStack.h> + +class QDragObject; + +class KoSavingContext; +class KPrView; +class KPrDocument; +class QDomElement; +class TextCmd; +class KPrGradient; + +class KoTextView; +class KoTextObject; +class KPrTextView; +class KCommand; +class KPrCanvas; +class KoPoint; +class KoVariable; +class KPrTextDocument; +class DCOPObject; +class KPrPage; +class KoParagStyle; + +class KPrTextObject : public QObject, public KPr2DObject, public KoTextFlow +{ + Q_OBJECT +public: + KPrTextObject( KPrDocument *doc ); + virtual ~KPrTextObject(); + + virtual DCOPObject* dcopObject(); + + virtual void setSize( double _width, double _height ); + + virtual void setDrawEditRect( bool b ) + { drawEditRect = b; } + virtual void setDrawEmpty( bool b ) + { drawEmpty = b; } + + virtual ObjType getType() const + { return OT_TEXT; } + virtual QString getTypeString() const + { return i18n("Text"); } + + virtual bool getDrawEditRect() const + { return drawEditRect; } + virtual bool getDrawEmpty() const + { return drawEmpty; } + virtual int getSubPresSteps() const; + + virtual QBrush getBrush() const; + + virtual void setShadowParameter(int _distance,ShadowDirection _direction,const QColor &_color); + + virtual QDomDocumentFragment save( QDomDocument& doc, double offset ); + virtual double load(const QDomElement &element); + virtual void loadOasis(const QDomElement &element, KoOasisContext& context, KPrLoadingInfo *info); + virtual void saveOasisMarginElement( KoGenStyle &styleobjectauto ) const; + + virtual void paint( QPainter *_painter, KoTextZoomHandler*_zoomHandler, + int pageNum, bool drawingShadow, bool drawContour ); + void paint( QPainter *_painter, KoTextZoomHandler*_zoomHandler, bool onlyChanged, KoTextCursor* cursor, + bool resetChanged, bool drawContour ); + void paintEdited( QPainter *_painter, KoTextZoomHandler*_zoomHandler, + bool onlyChanged, KoTextCursor* cursor, bool resetChanged ); + + void drawCursor( QPainter *p, KoTextCursor *cursor, bool cursorVisible, KPrCanvas* /*canvas*/ ); + + void recalcPageNum( KPrPage *page ); + /// Return the current text cursor position + QPoint cursorPos(KPrCanvas*, KoTextCursor *) const; + + + /** Return the contained text object */ + KoTextObject * textObject() const { return m_textobj; } + virtual void addTextObjects( QPtrList<KoTextObject> &lst ) const { + if ( !isProtectContent() ) + lst.append( m_textobj ); + } + + KPrTextDocument *textDocument() const; + + KPrDocument* kPresenterDocument() const { return m_doc; } + + KPrTextView * createKPTextView( KPrCanvas *,bool temp=false ); + void applyStyleChange( KoStyleChangeDefMap changed ); + + void removeHighlight(); + void highlightPortion( KoTextParag * parag, int index, int length, KPrCanvas *canvas, bool repaint, KDialogBase* dialog = 0 ); + + KCommand * pasteOasis( KoTextCursor * cursor, const QByteArray & data, bool removeSelected ); + + void saveParagraph( QDomDocument& doc, + KoTextParag * parag, + QDomElement &parentElem, + int from /* default 0 */, + int to /* default length()-2 */ ); + KoParagLayout loadParagLayout( QDomElement & parentElem, KPrDocument *doc, bool useRefStyle); + + static KoTextFormat loadFormat( QDomElement &n, KoTextFormat * refFormat, const QFont & defaultFont, + const QString & defaultLanguage, bool hyphen ); + + void setEditingTextObj( bool _edit ) { editingTextObj = _edit; } + + KCommand *textContentsToHeight(); + KCommand *textObjectToContents(); + void setProtectContent ( bool _protect ) { textObject()->setProtectContent(_protect);} + bool isProtectContent() const { return textObject()->protectContent();} + void loadVariable( QValueList<QDomElement> & listVariable,KoTextParag *lastParag, int offset=0 ); + + void layout(); + + /** Reimplemented from KoTextFlow */ + int availableHeight() const; + + /** set left margin size */ + void setBLeft( double b ) { bleft = b; } + /** set right margin size */ + void setBRight( double b ) { bright = b; } + /** set top margin size */ + void setBTop( double b ) { btop = b; } + /** set bottom margin size */ + void setBBottom( double b ) { bbottom = b; } + + /** get left margin size */ + double bLeft()const { return bleft; } + /** get right margin size */ + double bRight()const { return bright; } + /** get top margin size */ + double bTop()const { return btop; } + /** get bottom margin size */ + double bBottom()const { return bbottom; } + + void setTextMargins( double _left, double _top, double right, double bottom); + + KoRect innerRect() const; + double innerWidth() const; + double innerHeight() const; + void resizeTextDocument( bool widthChanged = true, bool heightChanged = true ); + + VerticalAlignmentType verticalAlignment() const { return m_textVertAlign; } + void setVerticalAligment( VerticalAlignmentType _type) ; + double alignmentValue() const { return alignVertical; } + virtual KPrTextObject *nextTextObject() { return this;} + static void saveFormat( QDomElement & element, KoTextFormat*lastFormat ); + + QPoint viewToInternal( const QPoint & pos, KPrCanvas* canvas ) const; + +signals: + void repaintChanged( KPrTextObject* ); + +protected slots: + void slotFormatChanged(const KoTextFormat &); + void slotAfterFormatting( int, KoTextParag*, bool* ); + void slotParagraphDeleted(KoTextParag*_parag); +protected: + virtual const char * getOasisElementName() const; + virtual bool saveOasisObjectAttributes( KPOasisSaveContext &sc ) const; + + virtual QDomElement saveKTextObject( QDomDocument& doc ); + QDomElement saveHelper(const QString &tmpText,KoTextFormat*lastFormat ,QDomDocument &doc); + + virtual void fillStyle( KoGenStyle& styleObjectAuto, KoGenStyles& mainStyles ) const; + + virtual void loadKTextObject( const QDomElement &e ); + void drawText( QPainter* _painter, KoTextZoomHandler* zoomHandler, bool onlyChanged, KoTextCursor* cursor, bool resetChanged ); + void drawParags( QPainter *p, KoTextZoomHandler* zoomHandler, const QColorGroup& cg, int from, int to ); + void saveParagLayout( const KoParagLayout& layout, QDomElement & parentElem ); + void invalidate(); + void recalcVerticalAlignment(); + virtual KoPen defaultPen() const; +protected slots: + void slotNewCommand( KCommand *cmd ); + void slotAvailableHeightNeeded(); + void slotRepaintChanged(); +private: + KPrTextObject &operator=( const KPrTextObject & ); + void shadowCompatibility(); + static const QString &tagTEXTOBJ, &attrLineSpacing, &attrParagSpacing, + &attrMargin, &attrBulletType1, &attrBulletType2, + &attrBulletType3, &attrBulletType4, &attrBulletColor1, + &attrBulletColor2, &attrBulletColor3, &attrBulletColor4, + &attrObjType, &tagP, &attrAlign, &attrType, + &attrDepth, &tagTEXT, &attrFamily, &attrPointSize, + &attrBold, &attrItalic, & attrUnderline,& attrStrikeOut, + &attrColor, &attrWhitespace, &attrTextBackColor, + &attrVertAlign, &attrLinkName, &attrHrefName; + + /** The contained text object */ + KoTextObject *m_textobj; + KPrDocument *m_doc; + KoParagLayout m_paragLayout; + VerticalAlignmentType m_textVertAlign; + double bleft, bright, btop, bbottom; // margins + double alignVertical; + bool drawEditRect, drawEmpty; + bool editingTextObj; +}; + + +class KPrTextView : public KoTextView +{ + Q_OBJECT +public: + KPrTextView( KPrTextObject * txtObj, KPrCanvas *_canvas, bool temp=false ); + virtual ~KPrTextView(); + + virtual KoTextViewIface* dcopObject(); + + KoTextView * textView() { return this; } + KPrTextObject * kpTextObject() const { return m_kptextobj; } + + void keyPressEvent( QKeyEvent * ); + void keyReleaseEvent( QKeyEvent * ); + void imStartEvent( QIMEvent * ); + void imComposeEvent( QIMEvent * ); + void imEndEvent( QIMEvent * ); + void mousePressEvent( QMouseEvent *, const QPoint &); + void mouseMoveEvent( QMouseEvent *, const QPoint & ); + void mouseReleaseEvent( QMouseEvent *, const QPoint & ); + void mouseDoubleClickEvent( QMouseEvent *, const QPoint &); + void dragEnterEvent( QDragEnterEvent * ); + void dragMoveEvent( QDragMoveEvent *, const QPoint & ); + void dropEvent( QDropEvent * ); + + void clearSelection(); + void selectAll(bool select = true); + virtual void drawCursor( bool b ); + + const KoParagLayout & currentParagLayout() const { return m_paragLayout; } + void showPopup( KPrView *view, const QPoint &point, QPtrList<KAction> &actionList ); + void insertVariable( int type, int subtype = 0 ); + void insertCustomVariable( const QString &name); + void insertLink(const QString &_linkName, const QString & hrefName); + void insertVariable( KoVariable *var, KoTextFormat *format =0, + bool refreshCustomMenu =false /*don't refresh variable custom menu all the time */); + + void terminate(bool removeSelection=true); + void insertComment(const QString &_note); + + /** return true if some text is selected */ + bool hasSelection() const; + + virtual void removeToolTipCompletion(); + bool isLinkVariable(const QPoint &); + void openLink(); + QPoint viewToInternal( const QPoint & pos ) const; + +public slots: + void cut(); + void copy(); + void paste(); + // Reimplemented from KoTextView + virtual void updateUI( bool updateFormat, bool force = false ); + virtual void ensureCursorVisible(); + + +protected slots: + virtual void startDrag(); + +protected: + bool canDecode( QMimeSource *e ); + QDragObject * newDrag( QWidget * parent ); + // Reimplemented from KoTextView + virtual void doAutoFormat( KoTextCursor* cursor, KoTextParag *parag, int index, QChar ch ); + virtual bool doIgnoreDoubleSpace(KoTextParag * parag, int index,QChar ch ); + virtual bool doCompletion( KoTextCursor* cursor, KoTextParag *parag, int index ); + virtual bool doToolTipCompletion( KoTextCursor* , KoTextParag *, int, int ); + virtual void showToolTipBox(KoTextParag *parag, int index, QWidget *widget, const QPoint &pos); + virtual void textIncreaseIndent(); + virtual bool textDecreaseIndent(); + virtual void showFormat( KoTextFormat *format ) ; + + virtual bool pgUpKeyPressed(); + virtual bool pgDownKeyPressed(); + + KPrTextObject *m_kptextobj; + KPrCanvas *m_canvas; + KoParagLayout m_paragLayout; + QPtrList<KAction> m_actionList; // for the kodatatools +}; + + +#endif |