/* This file is part of the KDE project Copyright (C) 2002 David Faure Copyright (C) 2005 Thomas Zander This program is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License version 2, as published by the Free Software Foundation. This program 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 program; see the file COPYING. If not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301, USA. */ #ifndef KWPARTFRAMESET_H #define KWPARTFRAMESET_H #include "KWFrameSet.h" class KWDocumentChild; class KWFramePartMoveCommand; /** * @short A frameset that contains an embedded object (a KWDocumentChild) */ class KWPartFrameSet : public KWFrameSet { TQ_OBJECT public: KWPartFrameSet( KWDocument *_doc, KWDocumentChild *_child, const TQString & name ); /// Used for OASIS loading KWPartFrameSet( KWDocument* doc, const TQDomElement& frameTag, const TQDomElement& objectTag, KoOasisContext& context ); virtual ~KWPartFrameSet(); virtual KWordFrameSetIface* dcopObject(); /** The type of frameset. Use this to differentiate between different instantiations of * the framesets. Each implementation will return a different frameType. */ virtual FrameSetType type() const { return FT_PART; } virtual KWFrameSetEdit * createFrameSetEdit( KWCanvas * ); KWDocumentChild *getChild() const { return m_child; } void setChild( KWDocumentChild* child ); /** * Update the geometry of m_child based on the geometry of the frame. */ void updateChildGeometry(); virtual void drawFrameContents( KWFrame * frame, TQPainter *painter, const TQRect & fcrect, const TQColorGroup &cg, bool onlyChanged, bool resetChanged, KWFrameSetEdit * edit, KWViewMode *viewMode ); virtual void createEmptyRegion( const TQRect &crect, TQRegion &emptyRegion, KWViewMode *viewMode ); virtual TQDomElement save( TQDomElement &parentElem, bool saveFrames = true ); virtual void load( TQDomElement &attributes, bool loadFrames = true ); virtual void saveOasis( KoXmlWriter& writer, KoSavingContext& context, bool saveFrames ) const; /** * Called by KWView when the object is being edited (activated). * Allows to store the initial position. */ void startEditing(); /** * Called by KWView when the object is not being edited anymore (deactivated). * Allows to create a frame-move command if the frame was moved. */ void endEditing(); /** * Move the frame 'frameNum' to the given position and * move the document child window with it * This is called when the frame is anchored and the anchor moves (see KWAnchor). */ virtual void moveFloatingFrame( int frameNum, const KoPoint &position ); #ifndef NDEBUG virtual void printDebug(); #endif /** * Delete a frame from the set of frames this frameSet has. * @param num The frameNumber to be removed. * @param remove passing true means that there can not be an undo of the action. * @param recalc do an updateFrames() */ void deleteFrame( unsigned int num, bool remove = true, bool recalc = true ); void setDeleted( bool on = true ); virtual void storeInternal(); virtual void setProtectContent ( bool protect ) { m_protectContent = protect; } virtual bool protectContent() const { return m_protectContent; } private slots: void slotChildChanged(); private: KWDocumentChild *m_child; KWFramePartMoveCommand *m_cmdMoveChild; bool m_protectContent; }; #if 0 class KWPartFrameSetEdit : public TQObject, public KWFrameSetEdit { //TQ_OBJECT public: KWPartFrameSetEdit( KWPartFrameSet * fs, KWCanvas * canvas ); virtual ~KWPartFrameSetEdit(); virtual DCOPObject* dcopObject(); KWPartFrameSet * partFrameSet() const { return static_cast(frameSet()); } // Events forwarded by the canvas (when being in "edit" mode) //virtual void mousePressEvent( TQMouseEvent *, const TQPoint &, const KoPoint & ); //virtual void mouseDoubleClickEvent( TQMouseEvent *, const TQPoint &, const KoPoint & ); //private slots: void slotChildActivated(bool); private: DCOPObject *m_dcop; }; #endif #include class KWDocument; /******************************************************************/ /* Class: KWDocumentChild */ /******************************************************************/ class KWDocumentChild : public KoDocumentChild { public: KWDocumentChild( KWDocument *_wdoc, const TQRect& _rect, KoDocument *_doc ); KWDocumentChild( KWDocument *_wdoc ); ~KWDocumentChild(); KWDocument* parent()const { return m_pKWordDoc; } virtual void setDocument( KoDocument *doc, const TQRect &geometry ); void setPartFrameSet( KWPartFrameSet* fs ) { m_partFrameSet = fs; } KWPartFrameSet * partFrameSet() const { return m_partFrameSet; } virtual KoDocument* hitTest( const TQPoint& p, const TQWMatrix& _matrix = TQWMatrix() ); private: KWDocument *m_pKWordDoc; KWPartFrameSet *m_partFrameSet; }; #endif // KWPARTFRAMESET_H