25#include "KPrPageIface.h"
27#include "KPrBackground.h"
28#include "KPrLineObject.h"
29#include "KPrRectObject.h"
30#include "KPrEllipseObject.h"
31#include "KPrAutoformObject.h"
32#include "KPrTextObject.h"
33#include "KPrPixmapObject.h"
34#include "KPrPieObject.h"
35#include "KPrPartObject.h"
36#include "KPrGroupObject.h"
37#include "KPrCommand.h"
38#include "KPrFreehandObject.h"
39#include "KPrPolylineObject.h"
40#include "KPrBezierCurveObject.h"
41#include "KPrPolygonObject.h"
42#include "KPrClosedLineObject.h"
45#include <KoQueryTrader.h>
46#include "KPrDocument.h"
49#include <KoStoreDevice.h>
50#include <KoTextZoomHandler.h>
52#include "KoPointArray.h"
53#include "KPrTextDocument.h"
54#include <KoTextObject.h>
55#include <KoTextParag.h>
57#include <tqapplication.h>
58#include <KoStyleCollection.h>
59#include <KoVariable.h>
60#include <KoGenStyles.h>
61#include <KoXmlWriter.h>
62#include <tdetempfile.h>
73typedef TQMap<int, TQPtrList<listAnimation> > lstMap;
76KPrPage::KPrPage(KPrDocument *_doc, KPrPage *masterPage )
78 , m_masterPage( masterPage )
80 , m_selectedSlides( true )
81 , m_bHasHeader( false )
82 , m_bHasFooter( false )
83 , m_useMasterBackground( false )
84 , m_displayObjectFromMasterPage( true )
85 , m_displayBackground( true )
86 , m_pageEffect( PEF_NONE )
87 , m_pageEffectSpeed( ES_MEDIUM )
88 , m_soundEffect( false )
89 , m_soundFileName( TQString() )
92 kdDebug(33001)<<
"create page : KPrPage::KPrPage(KPrDocument *_doc )"<<
this<<endl;
93 m_objectList.setAutoDelete(
false );
95 m_kpbackground=
new KPrBackGround(
this );
103 kdDebug(33001)<<
"Delete page :KPrPage::~KPrPage() :"<<
this<<endl;
105 m_objectList.setAutoDelete(
true );
106 m_objectList.clear();
107 delete m_kpbackground;
111DCOPObject* KPrPage::dcopObject()
116 int pgnum = m_doc->pageList().findRef(
this );
117 m_dcop =
new KPrPageIface(
this, pgnum );
124void KPrPage::saveOasisObject( KoStore *store, KoXmlWriter &xmlWriter, KoSavingContext& context,
int & indexObj,
int &partIndexObj, KoXmlWriter* manifestWriter )
const
127 Q_UNUSED( manifestWriter );
128 KPrObject::KPOasisSaveContext sc( xmlWriter, context, indexObj, partIndexObj, isMasterPage() );
130 KTempFile animationTmpFile;
131 animationTmpFile.setAutoDelete(
true );
132 TQFile* tmpFile = animationTmpFile.file();
133 KoXmlWriter animationTmpWriter( tmpFile );
134 lstMap listObjectAnimation;
135 TQPtrListIterator<KPrObject> it( m_objectList );
136 for ( ; it.current() ; ++it )
138 if ( it.current()== m_doc->header() || it.current()== m_doc->footer())
140 it.current()->saveOasisObject( sc );
142 if ( it.current()->hasAnimation() )
144 if ( it.current()->getEffect() != EF_NONE ||
145 it.current()->getAppearStep() != 0 ||
146 !it.current()->getAppearSoundEffectFileName().isEmpty() )
148 kdDebug(33001) <<
"has animation" << endl;
149 listAnimation *lstappear =
new listAnimation;
150 lstappear->obj = it.current();
151 lstappear->objIndex = indexObj;
152 lstappear->appear =
true;
154 lstMap::Iterator tmp = listObjectAnimation.find( it.current()->getAppearStep() );
155 if ( tmp!= listObjectAnimation.end() )
158 tmp.data().append( lstappear );
163 TQPtrList<listAnimation> tmp2;
164 tmp2.append( lstappear );
165 listObjectAnimation.insert( it.current()->getAppearStep(), tmp2 );
168 if ( it.current()->getDisappear() )
170 listAnimation *lstappear =
new listAnimation;
171 lstappear->obj = it.current();
172 lstappear->objIndex = indexObj;
173 lstappear->appear =
false;
175 lstMap::Iterator tmp = listObjectAnimation.find( it.current()->getDisappearStep() );
176 if ( tmp!= listObjectAnimation.end() )
179 tmp.data().append( lstappear );
184 TQPtrList<listAnimation> tmp2;
185 tmp2.append( lstappear );
186 listObjectAnimation.insert( it.current()->getDisappearStep(), tmp2 );
194 if ( !listObjectAnimation.isEmpty() )
196 kdDebug()<<
"! listObjectAnimation.isEmpty() :"<<listObjectAnimation.count()<<endl;
197 animationTmpWriter.startElement(
"presentation:animations" );
198 lstMap::Iterator it = listObjectAnimation.begin();
199 lstMap::Iterator end = listObjectAnimation.end();
200 for (; it != end; ++it )
202 if ( it.data().count() == 1 )
204 kdDebug()<<
" add unique element \n";
205 if ( it.data().at( 0 )->appear )
206 it.data().at( 0 )->obj->saveOasisObjectStyleShowAnimation( animationTmpWriter, it.data().at( 0 )->objIndex );
208 it.data().at( 0 )->obj->saveOasisObjectStyleHideAnimation( animationTmpWriter, it.data().at( 0 )->objIndex );
210 else if ( it.data().count() > 1 )
212 TQPtrList<listAnimation> list = it.data();
213 animationTmpWriter.startElement(
"presentation:animation-group" );
214 for ( uint i = 0; i < list.count(); ++i )
218 kdDebug()<<
" add group element : "<<i<<endl;
219 if ( list.at(i)->appear )
220 list.at(i)->obj->saveOasisObjectStyleShowAnimation( animationTmpWriter, list.at(i)->objIndex );
222 list.at(i)->obj->saveOasisObjectStyleHideAnimation( animationTmpWriter, list.at(i)->objIndex );
225 animationTmpWriter.endElement();
229 animationTmpWriter.endElement();
231 xmlWriter.addCompleteElement( tmpFile );
236 animationTmpFile.close();
239void KPrPage::load(
const TQDomElement &element )
241 m_kpbackground->load( element );
242 TQDomElement e=element.namedItem(
"PGEFFECT").toElement();
245 if(e.hasAttribute(
"value"))
246 tmp=e.attribute(
"value").toInt();
247 setPageEffect(
static_cast<PageEffect
>(tmp));
248 tmp = (int)ES_MEDIUM;
249 if(e.hasAttribute(
"speed"))
250 tmp=e.attribute(
"speed").toInt();
251 setPageEffectSpeed(
static_cast<EffectSpeed
>(tmp) );
253 e=element.namedItem(
"PGTIMER").toElement();
256 if(e.hasAttribute(
"timer"))
257 timer=e.attribute(
"timer").toInt();
262 e=element.namedItem(
"PGSOUNDEFFECT").toElement();
264 if(e.hasAttribute(
"soundEffect"))
265 m_soundEffect=
static_cast<bool>(e.attribute(
"soundEffect").toInt());
269 if(e.hasAttribute(
"soundFileNmae"))
270 m_soundFileName=e.attribute(
"soundFileNmae");
272 m_soundFileName=e.attribute(
"soundFileName");
275 m_soundFileName=TQString();
278 e=element.namedItem(
"HEADERFOOTER").toElement();
280 if(e.hasAttribute(
"header"))
281 m_bHasHeader =
static_cast<bool>(e.attribute(
"header").toInt());
283 m_bHasHeader =
false;
285 if(e.hasAttribute(
"footer"))
286 m_bHasFooter =
static_cast<bool>(e.attribute(
"footer").toInt());
288 m_bHasFooter =
false;
293void KPrPage::loadOasis(KoOasisContext & context )
295 m_kpbackground->loadOasis( context );
297 KoStyleStack& styleStack = context.styleStack();
298 kdDebug()<<
"KPrPage::loadOasis()\n";
299 styleStack.setTypeProperties(
"drawing-page" );
301 if ( !isMasterPage() )
303 if ( !styleStack.hasAttributeNS( KoXmlNS::draw,
"fill" ) )
306 m_useMasterBackground =
true;
309 if ( styleStack.hasAttributeNS( KoXmlNS::presentation,
"background-objects-visible" ) )
311 const TQString str = styleStack.attributeNS( KoXmlNS::presentation,
"background-objects-visible" );
312 m_displayObjectFromMasterPage = ( str ==
"true" ) ?
true : false;
315 if ( styleStack.hasAttributeNS( KoXmlNS::presentation,
"background-visible" ) )
317 const TQString str = styleStack.attributeNS( KoXmlNS::presentation,
"background-visible" );
318 m_displayBackground = ( str ==
"true" ) ?
true : false;
321 if ( styleStack.hasAttributeNS( KoXmlNS::presentation,
"visibility" ) )
323 const TQString str = styleStack.attributeNS( KoXmlNS::presentation,
"visibility" );
325 slideSelected(
false );
327 kdDebug()<<
" presentation:visibility parameter not implemented :"<<str<<endl;
330 if ( styleStack.hasAttributeNS( KoXmlNS::presentation,
"transition-speed" ) )
334 TQString speed = styleStack.attributeNS( KoXmlNS::presentation,
"transition-speed" );
335 if ( speed ==
"slow" )
337 m_pageEffectSpeed = ES_SLOW;
339 else if ( speed ==
"medium" )
341 m_pageEffectSpeed = ES_MEDIUM;
343 else if ( speed ==
"fast" )
345 m_pageEffectSpeed = ES_FAST;
348 kdDebug()<<
" transition-speed not defined :"<<speed<<endl;
350 if ( styleStack.hasAttributeNS( KoXmlNS::presentation,
"duration" ))
352 m_pageTimer = loadOasisTimer( styleStack.attributeNS( KoXmlNS::presentation,
"duration") );
354 if ( styleStack.hasAttributeNS( KoXmlNS::presentation,
"transition-type" ) )
358 kdDebug()<<
" presentation:transition-type :"<<styleStack.attributeNS( KoXmlNS::presentation,
"transition-type" )<<endl;
360 if ( styleStack.hasAttributeNS( KoXmlNS::presentation,
"display-header" ) )
362 TQString tmp = styleStack.attributeNS( KoXmlNS::presentation,
"display-header" );
363 setHeader( tmp ==
"true" ?
true : false );
365 if ( styleStack.hasAttributeNS( KoXmlNS::presentation,
"display-footer" ) )
367 TQString tmp = styleStack.attributeNS( KoXmlNS::presentation,
"display-footer" );
368 setFooter(tmp ==
"true" ?
true : false);
371 if ( styleStack.hasAttributeNS( KoXmlNS::presentation,
"transition-style"))
374 const TQString effect = styleStack.attributeNS( KoXmlNS::presentation,
"transition-style");
375 TQString additionalEffect;
376 if ( styleStack.hasAttributeNS( KoXmlNS::koffice,
"additional-transition-style" ) )
378 additionalEffect = styleStack.attributeNS( KoXmlNS::koffice,
"additional-transition-style" );
380 kdDebug() <<
"Transition name: " << effect <<
"additional name: " << additionalEffect << endl;
382 if ( effect==
"none" )
384 else if (effect==
"vertical-stripes" || effect==
"vertical-lines")
386 else if (effect==
"horizontal-stripes" || effect==
"horizontal-lines")
388 else if (effect==
"spiralin-left" || effect==
"spiralin-right"
389 || effect==
"spiralout-left" || effect==
"spiralout-right")
391 else if (effect==
"fade-from-top")
393 else if (effect==
"fade-from-bottom")
395 else if (effect==
"fade-from-left")
397 else if (effect==
"fade-from-right")
399 else if (effect==
"fade-from-lowerleft")
401 if ( additionalEffect.isEmpty() )
402 pef=PEF_COVER_RIGHT_UP;
404 pef=PEF_STRIPS_RIGHT_UP;
406 else if (effect==
"fade-from-lowerright")
408 if ( additionalEffect.isEmpty() )
409 pef=PEF_COVER_LEFT_UP;
411 pef=PEF_STRIPS_LEFT_UP;
413 else if (effect==
"fade-from-upperleft")
415 if ( additionalEffect.isEmpty() )
416 pef=PEF_COVER_RIGHT_DOWN;
418 pef=PEF_STRIPS_RIGHT_DOWN;
420 else if (effect==
"fade-from-upperright")
422 if ( additionalEffect.isEmpty() )
423 pef=PEF_COVER_LEFT_DOWN;
425 pef=PEF_STRIPS_LEFT_DOWN;
427 else if (effect==
"fade-to-center")
429 else if (effect==
"fade-from-center")
431 else if (effect==
"open-vertical")
433 else if (effect==
"open-horizontal")
435 else if (effect==
"open")
437 else if (effect==
"close-vertical")
439 else if (effect==
"close-horizontal")
441 else if (effect==
"close")
443 else if (effect==
"dissolve")
445 else if (effect==
"horizontal-checkerboard")
446 pef=PEF_CHECKBOARD_ACROSS;
447 else if (effect==
"vertical-checkerboard")
448 pef=PEF_CHECKBOARD_DOWN;
449 else if (effect==
"uncover-to-right" || effect==
"roll-from-left")
450 pef=PEF_UNCOVER_RIGHT;
451 else if (effect==
"uncover-to-left" || effect==
"roll-from-right")
452 pef=PEF_UNCOVER_LEFT;
453 else if (effect==
"uncover-to-top" || effect==
"roll-from-bottom")
455 else if (effect==
"uncover-to-bottom" || effect==
"roll-from-top")
456 pef=PEF_UNCOVER_DOWN;
457 else if (effect==
"uncover-to-upperleft")
458 pef=PEF_UNCOVER_LEFT_UP;
459 else if (effect==
"uncover-to-upperright")
460 pef=PEF_UNCOVER_RIGHT_UP;
461 else if (effect==
"uncover-to-lowerleft")
462 pef=PEF_UNCOVER_LEFT_DOWN;
463 else if (effect==
"uncover-to-lowerright")
464 pef=PEF_UNCOVER_RIGHT_DOWN;
465 else if (effect==
"interlocking-horizontal-left")
466 pef=PEF_INTERLOCKING_HORZ_1;
467 else if (effect==
"interlocking-horizontal-right")
468 pef=PEF_INTERLOCKING_HORZ_2;
469 else if (effect==
"interlocking-vertical-top")
470 pef=PEF_INTERLOCKING_VERT_1;
471 else if (effect==
"interlocking-vertical-bottom")
472 pef=PEF_INTERLOCKING_VERT_2;
473 else if ( effect==
"melt" )
475 else if ( effect==
"fly-away" )
477 else if ( effect==
"random" )
481 setPageEffect( pef );
483 if ( styleStack.hasChildNodeNS( KoXmlNS::presentation,
"sound"))
486 TQDomElement sound = styleStack.childNodeNS( KoXmlNS::presentation,
"sound");
487 m_soundEffect =
true;
488 m_soundFileName = sound.attributeNS( KoXmlNS::xlink,
"href", TQString() );
493TQDomElement KPrPage::save( TQDomDocument &doc )
495 TQDomElement page = m_kpbackground->save( doc );
496 TQDomElement element;
498 if ( m_pageEffect != PEF_NONE) {
499 element = doc.createElement(
"PGEFFECT");
500 element.setAttribute(
"value",
static_cast<int>( m_pageEffect ));
501 element.setAttribute(
"speed",
static_cast<int>( m_pageEffectSpeed ));
502 page.appendChild(element);
505 if ( m_pageTimer != 1 ) {
506 element = doc.createElement(
"PGTIMER" );
507 element.setAttribute(
"timer", m_pageTimer );
508 page.appendChild( element );
511 if ( m_soundEffect || !m_soundFileName.isEmpty() ) {
512 element = doc.createElement(
"PGSOUNDEFFECT" );
513 element.setAttribute(
"soundEffect",
static_cast<int>(m_soundEffect) );
514 element.setAttribute(
"soundFileName", m_soundFileName );
515 page.appendChild( element );
517 element = doc.createElement(
"HEADERFOOTER" );
518 element.setAttribute(
"header",
static_cast<int>(m_bHasHeader ) );
519 element.setAttribute(
"footer",
static_cast<int>(m_bHasFooter ) );
520 page.appendChild( element );
524TQString KPrPage::oasisNamePage(
int posPage )
const
526 return ( m_manualTitle.isEmpty() ? TQString(
"page%1" ).arg( posPage ) : m_manualTitle );
529bool KPrPage::saveOasisPage( KoStore *store, KoXmlWriter &xmlWriter,
int posPage, KoSavingContext& context,
530 int & indexObj,
int &partIndexObj, KoXmlWriter* manifestWriter, TQMap<TQString, int> &pageNames )
const
532 if ( isMasterPage() )
534 KoGenStyle pageLayout = m_doc->pageLayout().saveOasis();
535 pageLayout.addAttribute(
"style:page-usage",
"all" );
536 TQString pageLayoutName( context.mainStyles().lookup( pageLayout,
"pm" ) );
538 xmlWriter.startElement(
"style:master-page" );
539 xmlWriter.addAttribute(
"style:name",
"Standard" );
540 xmlWriter.addAttribute(
"style:page-layout-name", pageLayoutName );
542 TQString styleName = saveOasisPageStyle( store, context.mainStyles() );
543 if ( !styleName.isEmpty() )
544 xmlWriter.addAttribute(
"draw:style-name", styleName );
546 saveOasisObject( store, xmlWriter, context, indexObj,partIndexObj, manifestWriter );
548 xmlWriter.startElement(
"style:header" );
549 m_doc->header()->textObject()->saveOasisContent( xmlWriter, context );
550 xmlWriter.endElement();
552 xmlWriter.startElement(
"style:footer" );
553 m_doc->footer()->textObject()->saveOasisContent( xmlWriter, context );
554 xmlWriter.endElement();
556 xmlWriter.endElement();
561 xmlWriter.startElement(
"draw:page" );
563 TQString drawName( m_manualTitle );
564 TQRegExp rx(
"^page[0-9]+$" );
565 if ( drawName.isEmpty() || pageNames.contains( drawName ) || rx.search( drawName ) != -1 )
567 drawName =
"page" + TQString::number( posPage );
569 pageNames.insert( drawName, posPage );
570 xmlWriter.addAttribute(
"draw:name", drawName );
571 xmlWriter.addAttribute(
"koffice:name", m_manualTitle );
572 xmlWriter.addAttribute(
"draw:id",
"page" + TQString::number( posPage ) );
573 xmlWriter.addAttribute(
"draw:master-page-name",
"Standard");
575 TQString styleName = saveOasisPageStyle( store, context.mainStyles() );
576 kdDebug()<<
" styleName :"<<styleName<<endl;
577 if ( !styleName.isEmpty() )
578 xmlWriter.addAttribute(
"draw:style-name", styleName );
580 saveOasisObject( store, xmlWriter, context, indexObj,partIndexObj, manifestWriter );
582 saveOasisNote( xmlWriter );
583 xmlWriter.endElement();
588TQString KPrPage::saveOasisPageStyle( KoStore *, KoGenStyles& mainStyles )
const
590 KoGenStyle stylepageauto( isMasterPage() ? KPrDocument::STYLE_BACKGROUNDPAGE : KPrDocument::STYLE_BACKGROUNDPAGEAUTO,
"drawing-page" );
592 if ( ! isMasterPage() )
594 stylepageauto.addProperty(
"presentation:background-visible", ( m_displayBackground ==
true ) ?
"true" :
"false" );
595 stylepageauto.addProperty(
"presentation:background-objects-visible", ( m_displayObjectFromMasterPage ==
true ) ?
"true" :
"false" );
596 TQString transition = saveOasisPageEffect();
597 if ( !transition.isEmpty() )
599 stylepageauto.addProperty(
"presentation:transition-style", transition );
600 TQString additionalTransition = saveOasisAdditionalPageEffect();
601 if ( !additionalTransition.isEmpty() )
603 stylepageauto.addProperty(
"koffice:additional-transition-style", additionalTransition );
606 stylepageauto.addProperty(
"presentation:display-header", hasHeader());
607 stylepageauto.addProperty(
"presentation:display-footer", hasFooter());
609 if ( m_pageTimer != 1 )
611 stylepageauto.addProperty(
"presentation:duration", saveOasisTimer( m_pageTimer ));
614 stylepageauto.addProperty(
"presentation:transition-type",
"automatic" );
616 if ( m_pageEffectSpeed != ES_MEDIUM )
618 if ( m_pageEffectSpeed == ES_FAST )
619 stylepageauto.addProperty(
"presentation:transition-speed",
"fast" );
620 else if ( m_pageEffectSpeed == ES_SLOW )
621 stylepageauto.addProperty(
"presentation:transition-speed",
"slow" );
623 if ( !isSlideSelected() )
624 stylepageauto.addProperty(
"presentation:visibility",
"hidden" );
625 if ( !m_soundFileName.isEmpty() && m_soundEffect )
628 buffer.open( IO_WriteOnly );
629 KoXmlWriter elementWriter( &buffer );
630 elementWriter.startElement(
"presentation:sound" );
631 elementWriter.addAttribute(
"xlink:href", m_soundFileName );
632 elementWriter.addAttribute(
"xlink:type",
"simple" );
633 elementWriter.addAttribute(
"xlink:show",
"new" );
634 elementWriter.addAttribute(
"xlink:actuate",
"onRequest");
636 elementWriter.endElement();
637 TQString elementContents = TQString::fromUtf8( buffer.buffer(), buffer.buffer().size() );
638 stylepageauto.addChildElement(
"sound effect", elementContents );
642 if ( ! m_useMasterBackground )
644 m_kpbackground->saveOasisBackgroundPageStyle( stylepageauto, mainStyles );
648 return mainStyles.lookup( stylepageauto,
"dp" );
651bool KPrPage::saveOasisNote( KoXmlWriter &xmlWriter )
const
653 if ( m_noteText.isEmpty() )
658 xmlWriter.startElement(
"presentation:notes" );
659 xmlWriter.startElement(
"draw:frame" );
662 xmlWriter.startElement(
"draw:text-box" );
663 TQStringList text = TQStringList::split(
"\n", m_noteText );
664 for ( TQStringList::Iterator it = text.begin(); it != text.end(); ++it ) {
665 xmlWriter.startElement(
"text:p" );
666 xmlWriter.addTextNode( *it );
667 xmlWriter.endElement();
669 xmlWriter.endElement();
670 xmlWriter.endElement();
671 xmlWriter.endElement();
676TQString KPrPage::saveOasisPageEffect()
const
679 switch( m_pageEffect )
685 transition=
"close-vertical";
688 transition=
"close-horizontal";
694 transition=
"open-vertical";
697 transition=
"open-horizontal";
702 case PEF_INTERLOCKING_HORZ_1:
703 transition=
"interlocking-horizontal-left";
705 case PEF_INTERLOCKING_HORZ_2:
706 transition=
"interlocking-horizontal-right";
708 case PEF_INTERLOCKING_VERT_1:
709 transition=
"interlocking-vertical-top";
711 case PEF_INTERLOCKING_VERT_2:
712 transition=
"interlocking-vertical-bottom";
715 transition=
"spiralin-left";
718 transition=
"fly-away";
721 transition=
"horizontal-stripes";
724 transition=
"vertical-stripes";
727 transition=
"fade-to-center";
730 transition=
"fade-from-center";
732 case PEF_CHECKBOARD_ACROSS:
733 transition=
"horizontal-checkerboard";
735 case PEF_CHECKBOARD_DOWN:
736 transition=
"vertical-checkerboard";
739 transition=
"fade-from-top";
742 transition=
"fade-from-bottom";
745 transition=
"fade-from-right";
747 case PEF_COVER_RIGHT:
748 transition=
"fade-from-left";
750 case PEF_COVER_LEFT_UP:
751 transition=
"fade-from-lowerright";
753 case PEF_COVER_LEFT_DOWN:
754 transition=
"fade-from-upperright";
756 case PEF_COVER_RIGHT_UP:
757 transition=
"fade-from-lowerleft";
759 case PEF_COVER_RIGHT_DOWN:
760 transition=
"fade-from-upperleft";
762 case PEF_UNCOVER_LEFT:
763 transition=
"uncover-to-left";
766 transition=
"uncover-to-top";
768 case PEF_UNCOVER_RIGHT:
769 transition=
"uncover-to-right";
771 case PEF_UNCOVER_DOWN:
772 transition=
"uncover-to-bottom";
774 case PEF_UNCOVER_LEFT_UP:
775 transition=
"uncover-to-upperleft";
777 case PEF_UNCOVER_LEFT_DOWN:
778 transition=
"uncover-to-lowerleft";
780 case PEF_UNCOVER_RIGHT_UP:
781 transition=
"uncover-to-upperright";
783 case PEF_UNCOVER_RIGHT_DOWN:
784 transition=
"uncover-to-lowerright";
787 transition=
"dissolve";
789 case PEF_STRIPS_LEFT_UP:
790 transition=
"fade-from-lowerright";
792 case PEF_STRIPS_LEFT_DOWN:
793 transition=
"fade-from-upperright";
795 case PEF_STRIPS_RIGHT_UP:
796 transition=
"fade-from-lowerleft";
798 case PEF_STRIPS_RIGHT_DOWN:
799 transition=
"fade-from-upperleft";
804 case PEF_LAST_MARKER:
815TQString KPrPage::saveOasisAdditionalPageEffect()
const
817 TQString additionalEffect;
818 switch( m_pageEffect )
820 case PEF_STRIPS_LEFT_UP:
821 additionalEffect=
"stripe-from-lowerright";
823 case PEF_STRIPS_LEFT_DOWN:
824 additionalEffect=
"stripe-from-upperright";
826 case PEF_STRIPS_RIGHT_UP:
827 additionalEffect=
"stripe-from-lowerleft";
829 case PEF_STRIPS_RIGHT_DOWN:
830 additionalEffect=
"stripe-from-upperleft";
835 return additionalEffect;
839KPrObject *KPrPage::getObject(
int num)
841 Q_ASSERT( num < (
int)m_objectList.count() );
842 return m_objectList.at(num);
848bool KPrPage::objectNameExists( KPrObject *
object, TQPtrList<KPrObject> &list ) {
849 TQPtrListIterator<KPrObject> it( list );
851 for ( it.toFirst(); it.current(); ++it ) {
853 if ( it.current()->getObjectName() ==
object->getObjectName() &&
854 it.current() != object ) {
857 else if ( it.current()->getType() == OT_GROUP ) {
858 TQPtrList<KPrObject> objectList(
static_cast<KPrGroupObject*
>(it.current())->getObjects() );
859 if ( objectNameExists(
object, objectList ) ) {
867void KPrPage::unifyObjectName( KPrObject *
object ) {
868 if ( object->getObjectName().isEmpty() ) {
869 object->setObjectName( object->getTypeString() );
871 TQString objectName( object->getObjectName() );
873 TQPtrList<KPrObject> list( m_objectList );
877 while ( objectNameExists(
object, list ) ) {
879 TQRegExp rx(
" \\(\\d{1,}\\)$" );
880 if ( rx.search( objectName ) != -1 ) {
881 objectName.remove( rx );
883 objectName += TQString(
" (%1)").arg( count );
884 object->setObjectName( objectName );
888void KPrPage::appendObject(KPrObject *_obj)
890 unifyObjectName(_obj);
891 m_objectList.append(_obj);
894void KPrPage::appendObjects(
const TQValueList<KPrObject *> &objects )
896 TQMap <TQString, int> usedPageNames;
897 TQPtrListIterator<KPrObject> it( m_objectList );
899 for ( ; it.current() ; ++it )
901 TQString objectName( it.current()->getObjectName() );
903 TQRegExp rx(
"(.*) \\((\\d{1,})\\)$" );
904 rx.setMinimal(
true );
905 if ( rx.search( objectName ) != -1 && rx.numCaptures() == 2 )
907 int id = rx.cap( 2 ).toInt();
908 if ( usedPageNames[rx.cap( 1 )] <
id )
910 usedPageNames[rx.cap( 1 )] = id;
915 usedPageNames[objectName] = 1;
919 TQValueListConstIterator<KPrObject *> oIt( objects.begin() );
920 for ( ; oIt != objects.end(); ++oIt )
922 TQString objectName( ( *oIt )->getObjectName() );
923 TQRegExp rx(
" \\(\\d{1,}\\)$" );
924 if ( rx.search( objectName ) != -1 )
926 objectName.remove( rx );
929 if ( usedPageNames.contains( objectName ) )
931 usedPageNames[objectName]++;
932 objectName += TQString(
" (%1)").arg( usedPageNames[objectName] );
933 ( *oIt )->setObjectName( objectName );
935 m_objectList.append( *oIt );
939int KPrPage::takeObject( KPrObject *
object )
941 int pos = m_objectList.findRef(
object );
942 m_objectList.take( pos );
946void KPrPage::replaceObject( KPrObject *oldObject, KPrObject *newObject )
949 unsigned int pos = m_objectList.findRef( oldObject );
950 m_objectList.take( pos );
951 m_objectList.insert( pos, newObject );
955void KPrPage::insertObject( KPrObject *
object,
int pos )
957 unifyObjectName(
object );
958 m_objectList.insert( pos,
object );
961KCommand * KPrPage::deleteSelectedObjects()
963 TQPtrList<KPrObject> objects = getSelectedObjects(
true );
965 KPrDeleteCmd *deleteCmd=0L;
967 if ( objects.count() > 0 ) {
968 deleteCmd =
new KPrDeleteCmd( i18n(
"Delete Objects" ), objects, m_doc,
this );
969 deleteCmd->execute();
972 m_doc->setModified(
true);
977void KPrPage::copyObjs(TQDomDocument &doc, TQDomElement &presenter, TQValueList<KoPictureKey> & savePictures)
const
979 if ( !numSelected() )
982 TQPtrListIterator<KPrObject> it( m_objectList );
983 for ( ; it.current() ; ++it )
985 if(it.current()->isSelected())
987 if ( it.current()->getType() == OT_PICTURE )
989 KoPictureKey key =
static_cast<KPrPixmapObject *
>( it.current() )->getKey();
990 if ( !savePictures.contains( key ) )
991 savePictures.append( key );
993 TQDomElement
object=doc.createElement(
"OBJECT");
994 object.setAttribute(
"type",
static_cast<int>( it.current()->getType() ));
995 object.appendChild(it.current()->save( doc,0 ));
996 presenter.appendChild(
object);
1001void KPrPage::pasteObjs(
const TQByteArray & data,
int nbCopy,
double angle,
1002 double increaseX,
double increaseY,
double moveX,
double moveY )
1004 m_doc->deSelectAllObj();
1005 int num = m_objectList.count();
1008 TQBuffer buffer( data );
1009 KoStore* store = KoStore::createStore( &buffer, KoStore::Read );
1010 int nbNewObject = -1 ;
1011 KMacroCommand *macro = 0L;
1012 if ( !store->bad() )
1014 if ( store->open(
"root" ) )
1019 TQDomDocument domDoc;
1020 if ( !domDoc.setContent( store->device(), &errorMsg, &errorLine, &errorColumn ) )
1022 kdError (30003) <<
"Parsing Error! Aborting! (in KPrPage::PasteObj)" << endl
1023 <<
" Line: " << errorLine <<
" Column: " << errorColumn << endl
1024 <<
" Message: " << errorMsg << endl;
1028 TQDomElement topElem = domDoc.documentElement();
1030 for (
int i = 0 ; i < nbCopy ; i++ )
1032 KCommand *cmd = m_doc->loadPastedObjs( domDoc.toString(),
this );
1036 macro =
new KMacroCommand( i18n(
"Paste Objects" ));
1037 macro->addCommand( cmd );
1039 if ( nbNewObject == -1 )
1040 nbNewObject = m_objectList.count() - num;
1043 m_doc->loadPictureMap( topElem );
1045 int nbNewPartObject = -1;
1046 int nbElementBefore = m_objectList.count();
1047 for (
int i = 0 ; i < nbCopy ; i++ )
1049 m_doc->insertEmbedded( store, topElem, macro,
this, num );
1050 if ( nbNewPartObject ==-1 )
1051 nbNewObject = nbNewObject + (m_objectList.count() - nbElementBefore);
1058 KPrObject *_tempObj;
1061 for (_tempObj = m_objectList.at(num); _tempObj; _tempObj = m_objectList.next(), i++ ) {
1062 if ( i >= nbNewObject )
1064 _tempObj->moveBy( moveX*(
double)mod,moveY*(double)mod);
1065 _tempObj->setSelected(
true );
1066 if ( angle == 0.0 || (increaseY == 0.0 && increaseX == 0.0))
1067 m_doc->repaint(_tempObj);
1072 KCommand *cmd = rotateSelectedObjects(angle,
true);
1076 macro =
new KMacroCommand( i18n(
"Paste Objects" ));
1077 macro->addCommand( cmd );
1080 if ( increaseX != 0.0 || increaseY != 0.0 )
1082 TQPtrListIterator<KPrObject> it( m_objectList );
1083 for ( ; it.current() ; ++it )
1085 if(it.current()->isSelected())
1087 KCommand *cmd =
new KPrResizeCmd( i18n(
"Resize"), KoPoint(0, 0),
1088 KoSize(increaseX, increaseY), it.current(), m_doc );
1093 macro =
new KMacroCommand( i18n(
"Paste Objects" ));
1094 macro->addCommand( cmd );
1101 m_doc->addCommand(macro);
1103 if ( angle == 0.0 || (increaseY == 0.0 && increaseX == 0.0) )
1105 m_doc->updateSideBarItem(
this );
1108 m_doc->setModified(
true);
1111KPrTextObject * KPrPage::textFrameSet (
unsigned int _num )
const
1114 TQPtrListIterator<KPrObject> it( m_objectList );
1115 for ( ; it.current() ; ++it )
1117 if(it.current()->getType()==OT_TEXT)
1120 return static_cast<KPrTextObject*
>(it.current());
1127int KPrPage::numSelected()
const
1131 TQPtrListIterator<KPrObject> it( m_objectList );
1132 for ( ; it.current() ; ++it )
1134 if(it.current()->isSelected())
1141int KPrPage::numTextObject()
const
1145 TQPtrListIterator<KPrObject> it( m_objectList );
1146 for ( ; it.current() ; ++it )
1148 if(it.current()->getType()==OT_TEXT)
1155KPrObject* KPrPage::getSelectedObj()
const
1157 TQPtrListIterator<KPrObject> it( m_objectList );
1158 for ( ; it.current() ; ++it )
1160 if(it.current()->isSelected())
1161 return it.current();
1167TQPtrList<KPrObject> KPrPage::getSelectedObjects(
bool withoutHeaderFooter )
const
1169 TQPtrList<KPrObject> objects;
1170 TQPtrListIterator<KPrObject> it( m_objectList );
1171 for ( ; it.current() ; ++it )
1173 if( it.current()->isSelected()
1174 && ( !withoutHeaderFooter
1175 || it.current() != m_doc->header() && it.current()!= m_doc->footer() ) )
1177 objects.append( it.current() );
1184void KPrPage::groupObjects()
1186 TQPtrList<KPrObject> objects( getSelectedObjects(
true ) );
1188 if ( objects.count() > 1 ) {
1189 KPrGroupObjCmd *groupObjCmd =
new KPrGroupObjCmd( i18n(
"Group Objects" ), objects, m_doc,
this );
1190 m_doc->addCommand( groupObjCmd );
1191 groupObjCmd->execute();
1195void KPrPage::ungroupObjects( KMacroCommand ** macro )
1197 TQPtrList<KPrObject> objects( getSelectedObjects(
true ) );
1198 TQPtrListIterator<KPrObject> it( objects );
1199 for ( ; it.current() ; ++it )
1201 KPrObject *
object = it.current();
1202 if ( object->getType() == OT_GROUP )
1204 UnGroupObjCmd *cmd =
new UnGroupObjCmd( i18n(
"Ungroup Objects" ),
1205 (KPrGroupObject*)
object, m_doc,
this );
1209 *macro =
new KMacroCommand(i18n(
"Ungroup Objects" ));
1210 (*macro)->addCommand( cmd );
1215void KPrPage::lowerObjs(
bool backward)
1217 KPrObject *kpobject = 0;
1219 TQPtrList<KPrObject> _new;
1221 for (
unsigned int j = 0; j < m_objectList.count(); j++ )
1222 _new.append( m_objectList.at( j ) );
1224 _new.setAutoDelete(
false );
1225 bool createCmd =
false;
1227 for (
int i = 0; i < static_cast<int>( _new.count() ); i++ ) {
1228 kpobject = _new.at( i );
1229 if ( kpobject->isSelected() ) {
1230 if ( i == insertPos )
1238 _new.insert(TQMAX(i-1,0) , kpobject);
1240 _new.insert( insertPos++, kpobject );
1245 KPrLowerRaiseCmd *lrCmd =
new KPrLowerRaiseCmd( i18n(
"Lower Objects" ), m_objectList, _new, m_doc,
this );
1247 m_doc->addCommand( lrCmd );
1252void KPrPage::raiseObjs(
bool forward)
1254 KPrObject *kpobject = 0;
1256 TQPtrList<KPrObject> _new;
1258 for (
unsigned int j = 0; j < m_objectList.count(); j++ )
1259 _new.append( m_objectList.at( j ) );
1261 _new.setAutoDelete(
false );
1262 bool createCmd =
false;
1263 int size = int( _new.count() );
1264 int insertPos = size - 1;
1265 for (
int i = size - 1; i >= 0; i-- )
1267 kpobject = _new.at( i );
1268 if ( kpobject->isSelected() )
1270 if ( i == insertPos )
1278 _new.insert( TQMIN( i+1, size - 1), kpobject);
1280 _new.insert( insertPos--, kpobject );
1285 KPrLowerRaiseCmd *lrCmd =
new KPrLowerRaiseCmd( i18n(
"Raise Objects" ), m_objectList, _new, m_doc,
this );
1287 m_doc->addCommand( lrCmd );
1291KCommand *KPrPage::insertObject(
const TQString &name, KPrObject *
object,
const KoRect &r,
bool addCommand )
1293 object->setOrig( r.x(), r.y() );
1294 object->setSize( r.width(), r.height() );
1295 object->setSelected(
true );
1297 KPrInsertCmd *insertCmd =
new KPrInsertCmd( name,
object, m_doc,
this );
1298 insertCmd->execute();
1301 m_doc->addCommand( insertCmd );
1307void KPrPage::insertLine(
const KoRect &r,
const KoPen & pen, LineEnd lb, LineEnd le, LineType lt )
1309 KPrLineObject *kplineobject =
new KPrLineObject( pen, lb, le, lt );
1310 insertObject( i18n(
"Insert Line" ), kplineobject, r );
1313void KPrPage::insertRectangle(
const KoRect &r,
const KoPen & pen,
const TQBrush &brush, FillType ft,
1314 const TQColor &g1,
const TQColor &g2,
1315 BCType gt,
int rndX,
int rndY,
bool unbalanced,
int xfactor,
int yfactor )
1317 KPrRectObject *kprectobject =
new KPrRectObject( pen, brush, ft, g1, g2, gt, rndX, rndY,
1318 unbalanced, xfactor, yfactor );
1319 insertObject( i18n(
"Insert Rectangle" ), kprectobject, r );
1322void KPrPage::insertCircleOrEllipse(
const KoRect &r,
const KoPen &pen,
const TQBrush & brush, FillType ft,
1323 const TQColor &g1,
const TQColor &g2,
1324 BCType gt,
bool unbalanced,
int xfactor,
int yfactor )
1326 KPrEllipseObject *kpellipseobject =
new KPrEllipseObject( pen, brush, ft, g1, g2, gt,
1327 unbalanced, xfactor, yfactor );
1328 insertObject( i18n(
"Insert Ellipse" ), kpellipseobject, r );
1331void KPrPage::insertPie(
const KoRect &r,
const KoPen &pen,
const TQBrush &brush, FillType ft,
1332 const TQColor &g1,
const TQColor &g2,
1333 BCType gt, PieType pt,
int _angle,
int _len, LineEnd lb, LineEnd le,
1334 bool unbalanced,
int xfactor,
int yfactor )
1336 KPrPieObject *kppieobject =
new KPrPieObject( pen, brush, ft, g1, g2, gt, pt, _angle,
1337 _len, lb, le, unbalanced, xfactor, yfactor );
1338 insertObject( i18n(
"Insert Pie/Arc/Chord" ), kppieobject, r );
1341KPrTextObject* KPrPage::insertTextObject(
const KoRect& r,
const TQString& text , KPrView * _view )
1343 KPrTextObject *kptextobject =
new KPrTextObject( m_doc );
1344 insertObject( i18n(
"Insert Textbox" ), kptextobject, r );
1347 if ( !text.isEmpty() )
1349 KPrTextView *view = kptextobject->createKPTextView( _view ? _view->getCanvas() : 0L );
1350 view->insertText( text );
1353 m_doc->repaint( kptextobject );
1355 return kptextobject;
1358void KPrPage::insertAutoform(
const KoRect &r,
const KoPen &pen,
const TQBrush &brush, LineEnd lb, LineEnd le, FillType ft,
1359 const TQColor &g1,
const TQColor &g2, BCType gt,
const TQString &fileName,
bool unbalanced,
1360 int xfactor,
int yfactor ){
1361 KPrAutoformObject *kpautoformobject =
new KPrAutoformObject( pen, brush, fileName, lb, le, ft,
1362 g1, g2, gt, unbalanced, xfactor, yfactor );
1363 insertObject( i18n(
"Insert Autoform" ), kpautoformobject, r );
1366void KPrPage::insertFreehand(
const KoPointArray &points,
const KoRect &r,
const KoPen &pen,
1367 LineEnd lb, LineEnd le )
1369 KoSize size( r.width(), r.height() );
1370 KPrFreehandObject *kpfreehandobject =
new KPrFreehandObject( points, size, pen, lb, le );
1371 insertObject( i18n(
"Insert Freehand" ), kpfreehandobject, r );
1374void KPrPage::insertPolyline(
const KoPointArray &points,
const KoRect &r,
const KoPen &pen,
1375 LineEnd lb, LineEnd le )
1377 KoSize size( r.width(), r.height() );
1378 KPrPolylineObject *kppolylineobject =
new KPrPolylineObject( points, size, pen, lb, le );
1379 insertObject( i18n(
"Insert Polyline" ), kppolylineobject, r );
1382void KPrPage::insertQuadricBezierCurve(
const KoPointArray &points,
const KoPointArray &allPoints,
1383 const KoRect &r,
const KoPen &pen,
1384 LineEnd lb, LineEnd le )
1386 KoSize size( r.width(), r.height() );
1388 KPrQuadricBezierCurveObject *kpQuadricBezierCurveObject =
new KPrQuadricBezierCurveObject(
1389 points, allPoints, size, pen, lb, le );
1390 insertObject( i18n(
"Insert Quadric Bezier Curve" ), kpQuadricBezierCurveObject, r );
1393void KPrPage::insertCubicBezierCurve(
const KoPointArray &points,
const KoPointArray &allPoints,
1394 const KoRect &r,
const KoPen &pen,
1395 LineEnd lb, LineEnd le )
1397 KoSize size( r.width(), r.height() );
1399 KPrCubicBezierCurveObject *kpCubicBezierCurveObject =
new KPrCubicBezierCurveObject( points, allPoints, size, pen, lb, le );
1400 insertObject( i18n(
"Insert Cubic Bezier Curve" ), kpCubicBezierCurveObject, r );
1403void KPrPage::insertPolygon(
const KoPointArray &points,
const KoRect &r,
const KoPen &pen,
const TQBrush &brush, FillType ft,
1404 const TQColor &g1,
const TQColor &g2, BCType gt,
bool unbalanced,
int xfactor,
int yfactor,
1405 bool _checkConcavePolygon,
int _cornersValue,
int _sharpnessValue )
1407 KoSize size( r.width(), r.height() );
1409 KPrPolygonObject *kpPolygonObject =
new KPrPolygonObject( points, size, pen, brush, ft,
1410 g1, g2, gt, unbalanced, xfactor, yfactor,
1411 _checkConcavePolygon, _cornersValue, _sharpnessValue );
1412 insertObject( i18n(
"Insert Polygon" ), kpPolygonObject, r );
1415void KPrPage::insertClosedLine(
const KoPointArray &points,
const KoRect &r,
const KoPen &pen,
const TQBrush &brush,
1416 FillType ft,
const TQColor &g1,
const TQColor &g2,
1417 BCType gt,
bool unbalanced,
int xfactor,
int yfactor, ToolEditMode _mode )
1421 if ( _mode == INS_CLOSED_FREEHAND ) {
1422 _type = i18n(
"Closed Freehand" );
1423 _name = i18n(
"Insert Closed Freehand" );
1425 else if ( _mode == INS_CLOSED_POLYLINE ) {
1426 _type = i18n(
"Closed Polyline" );
1427 _name = i18n(
"Insert Closed Polyline" );
1429 else if ( _mode == INS_CLOSED_QUADRICBEZIERCURVE ) {
1430 _type = i18n(
"Closed Quadric Bezier Curve" );
1431 _name = i18n(
"Insert Closed Quadric Bezier Curve" );
1433 else if ( _mode == INS_CLOSED_CUBICBEZIERCURVE ) {
1434 _type = i18n(
"Closed Cubic Bezier Curve" );
1435 _name = i18n(
"Insert Closed Cubic Bezier Curve" );
1438 KoSize size( r.width(), r.height() );
1440 KPrClosedLineObject *kpClosedLineObject =
new KPrClosedLineObject( points, size, pen, brush, ft,
1441 g1, g2, gt, unbalanced, xfactor, yfactor, _type );
1442 insertObject( _name, kpClosedLineObject, r );
1445KPrPartObject* KPrPage::insertObject(
const KoRect& _rect, KoDocumentEntry& _e )
1447 KoDocument* doc = _e.createDoc( m_doc );
1451 if ( !doc->showEmbedInitDialog( 0 ) )
1454 TQRect r = TQRect( (
int)_rect.left(), (
int)_rect.top(),
1455 (
int)_rect.width(), (
int)_rect.height() );
1456 KPrChild* ch =
new KPrChild( m_doc, doc, r );
1457 m_doc->insertObject( ch );
1459 KPrPartObject *kppartobject =
new KPrPartObject( ch );
1460 insertObject( i18n(
"Embed Object" ), kppartobject, _rect );
1463 m_doc->repaint(
false );
1465 return kppartobject;
1468KCommand* KPrPage::setPen(
const KoPen &pen, LineEnd lb, LineEnd le,
int flags )
1470 KoPenCmd * cmd = NULL;
1472 KoPenCmd::Pen _newPen( pen, lb, le);
1474 TQPtrList<KPrObject> _objects;
1475 _objects.setAutoDelete(
false );
1477 TQPtrListIterator<KPrObject> it( m_objectList );
1478 for ( ; it.current() ; ++it )
1480 if( it.current()->isSelected() )
1482 _objects.append( it.current() );
1486 if ( !_objects.isEmpty() && flags ) {
1487 cmd =
new KoPenCmd( i18n(
"Apply Styles" ), _objects, _newPen, m_doc,
this, flags );
1494KCommand * KPrPage::setBrush(
const TQBrush &brush, FillType ft,
const TQColor &g1,
const TQColor &g2,
1495 BCType gt,
bool unbalanced,
int xfactor,
int yfactor,
int flags )
1497 KPrBrushCmd * cmd = NULL;
1499 KPrBrushCmd::Brush _newBrush;
1501 _newBrush.brush = TQBrush( brush );
1502 _newBrush.fillType = ft;
1503 _newBrush.gColor1 = g1;
1504 _newBrush.gColor2 = g2;
1505 _newBrush.gType = gt;
1506 _newBrush.unbalanced = unbalanced;
1507 _newBrush.xfactor = xfactor;
1508 _newBrush.yfactor = yfactor;
1510 TQPtrList<KPrObject> _objects;
1511 _objects.setAutoDelete(
false );
1513 TQPtrListIterator<KPrObject> it( m_objectList );
1514 for ( ; it.current() ; ++it )
1516 if( it.current()->isSelected() )
1518 _objects.append( it.current() );
1522 if ( !_objects.isEmpty() && flags ) {
1523 cmd =
new KPrBrushCmd( i18n(
"Apply Styles" ), _objects, _newBrush, m_doc,
this, flags );
1530void KPrPage::slotRepaintVariable()
1532 TQPtrListIterator<KPrObject> it( m_objectList );
1533 for ( ; it.current() ; ++it )
1535 if ( it.current()->getType() == OT_TEXT )
1536 m_doc->repaint( it.current() );
1540void KPrPage::recalcPageNum()
1542 TQPtrListIterator<KPrObject> it( m_objectList );
1543 for ( ; it.current() ; ++it )
1545 if ( it.current()->getType() == OT_TEXT ) {
1546 ( (KPrTextObject*)it.current() )->recalcPageNum(
this );
1547 m_doc->repaint( it.current() );
1552void KPrPage::changePicture(
const KURL & url, TQWidget *parent )
1556 KoPicture image = m_doc->pictureCollection()->downloadPicture( url, parent );
1558 TQPtrListIterator<KPrObject> it( m_objectList );
1559 for ( ; it.current() ; ++it )
1561 if(it.current()->isSelected() && it.current()->getType()==OT_PICTURE)
1563 KPrPixmapObject* obj=
dynamic_cast<KPrPixmapObject*
>( it.current() );
1566 KPrPixmapObject *pix =
new KPrPixmapObject( m_doc->pictureCollection(), image.getKey() );
1567 KPrChgPixCmd *chgPixCmd =
new KPrChgPixCmd( i18n(
"Change Pixmap" ),obj,pix, m_doc,
this );
1568 chgPixCmd->execute();
1569 m_doc->addCommand( chgPixCmd );
1576void KPrPage::insertPicture(
const TQString &filename,
const KoPoint &pos )
1578 KoPictureKey key = m_doc->pictureCollection()->loadPicture( filename ).getKey();
1579 KPrPixmapObject *kppixmapobject =
new KPrPixmapObject(m_doc->pictureCollection() , key );
1581 kppixmapobject->setOrig( pos );
1582 kppixmapobject->setSelected(
true );
1584 kppixmapobject->setSize( m_doc->zoomHandler()->pixelXToPt( kppixmapobject->originalSize().width() ),
1585 m_doc->zoomHandler()->pixelYToPt( kppixmapobject->originalSize().height() ) );
1586 kppixmapobject->setKeepRatio(
true );
1588 KPrInsertCmd *insertCmd =
new KPrInsertCmd( i18n(
"Insert Picture" ), kppixmapobject, m_doc,
this );
1589 insertCmd->execute();
1590 m_doc->addCommand( insertCmd );
1592 KoRect s = getPageRect();
1594 if ( kppixmapobject->getSize().width() > s.width() )
1595 fakt = (float)s.width() / (float)kppixmapobject->getSize().width();
1596 if ( kppixmapobject->getSize().height() > s.height() )
1597 fakt = TQMIN( fakt, (
float)s.height() / (float)kppixmapobject->getSize().height() );
1602 int w = (int)( fakt * (
float)kppixmapobject->getSize().width() );
1603 int h = (int)( fakt * (
float)kppixmapobject->getSize().height() );
1605 kppixmapobject->setOrig(0,0);
1606 kppixmapobject->setSize(w, h);
1607 m_doc->repaint(
false );
1611void KPrPage::insertPicture(
const TQString &_file,
const KoRect &_rect )
1613 KoPictureKey key = m_doc->pictureCollection()->loadPicture( _file ).getKey();
1614 KPrPixmapObject *kppixmapobject =
new KPrPixmapObject( m_doc->pictureCollection(), key );
1615 kppixmapobject->setKeepRatio(
true );
1616 insertObject( i18n(
"Insert Picture" ), kppixmapobject, _rect );
1619void KPrPage::enableEmbeddedParts(
bool f )
1621 KPrPartObject *obj=0L;
1622 TQPtrListIterator<KPrObject> it( m_objectList );
1623 for ( ; it.current() ; ++it )
1625 if(it.current()->getType()==OT_PART)
1627 obj=
dynamic_cast<KPrPartObject*
>( it.current() );
1629 obj->enableDrawing( f );
1635void KPrPage::setBackColor(
const TQColor &backColor1,
const TQColor &backColor2, BCType bcType,
1636 bool unbalanced,
int xfactor,
int yfactor )
1638 m_kpbackground->setBackColor1( backColor1 );
1639 m_kpbackground->setBackColor2( backColor2 );
1640 m_kpbackground->setBackColorType( bcType );
1641 m_kpbackground->setBackUnbalanced( unbalanced );
1642 m_kpbackground->setBackXFactor( xfactor );
1643 m_kpbackground->setBackYFactor( yfactor );
1646void KPrPage::setBackPicture(
const KoPictureKey & key )
1648 m_kpbackground->setBackPicture( key );
1651bool KPrPage::getBackUnbalanced()
const
1653 return m_kpbackground->getBackUnbalanced();
1656void KPrPage::setBackView( BackView backView )
1658 m_kpbackground->setBackView( backView );
1661void KPrPage::setBackType( BackType backType )
1663 m_kpbackground->setBackType( backType );
1666void KPrPage::setPageEffectSpeed( EffectSpeed pageEffectSpeed )
1668 m_pageEffectSpeed = pageEffectSpeed;
1671void KPrPage::setPageEffect( PageEffect pageEffect )
1673 m_pageEffect = pageEffect;
1676void KPrPage::setPageTimer(
int pageTimer )
1678 m_pageTimer = pageTimer;
1681void KPrPage::setPageSoundEffect(
bool soundEffect )
1683 m_soundEffect = soundEffect;
1686void KPrPage::setPageSoundFileName(
const TQString &fileName )
1688 m_soundFileName = fileName;
1691BackType KPrPage::getBackType()
const
1693 return m_kpbackground->getBackType();
1696BackView KPrPage::getBackView()
const
1698 return m_kpbackground->getBackView();
1701KoPictureKey KPrPage::getBackPictureKey()
const
1703 return m_kpbackground->getBackPictureKey();
1706KoPicture KPrPage::getBackPicture()
const
1708 return m_kpbackground->getBackPicture();
1711TQColor KPrPage::getBackColor1()
const
1713 return m_kpbackground->getBackColor1();
1716TQColor KPrPage::getBackColor2()
const
1718 return m_kpbackground->getBackColor2();
1721int KPrPage::getBackXFactor()
const
1723 return m_kpbackground->getBackXFactor();
1726int KPrPage::getBackYFactor()
const
1728 return m_kpbackground->getBackYFactor();
1731BCType KPrPage::getBackColorType()
const
1733 return m_kpbackground->getBackColorType();
1736EffectSpeed KPrPage::getPageEffectSpeed()
const
1738 return m_pageEffectSpeed;
1741PageEffect KPrPage::getPageEffect()
const
1743 return m_pageEffect;
1746int KPrPage::getPageTimer()
const
1751bool KPrPage::getPageSoundEffect()
const
1753 return m_soundEffect;
1756TQString KPrPage::getPageSoundFileName()
const
1758 return m_soundFileName;
1761KoRect KPrPage::getPageRect()
const
1763 const KoPageLayout& p = m_doc->pageLayout();
1764 return KoRect( p.ptLeft, p.ptTop, p.ptWidth - p.ptRight - p.ptLeft, p.ptHeight - p.ptTop - p.ptBottom );
1767TQRect KPrPage::getZoomPageRect()
const
1769 return m_doc->zoomHandler()->zoomRect(getPageRect());
1772void KPrPage::completeLoading(
bool _clean,
int lastObj )
1774 TQPtrListIterator<KPrObject> it( m_objectList );
1775 for ( ; it.current() ; ++it )
1779 if ( ( it.current()->getType() == OT_PICTURE )
1780 || ( it.current()->getType() == OT_CLIPART ) ) {
1781 if ( _clean || m_objectList.findRef( it.current() ) > lastObj )
1783 KPrPixmapObject* obj=
dynamic_cast<KPrPixmapObject*
>( it.current());
1788 else if ( it.current()->getType() == OT_TEXT )
1790 KPrTextObject*obj=
dynamic_cast<KPrTextObject*
>( it.current() );
1792 obj->recalcPageNum(
this );
1794 else if ( it.current()->getType() == OT_GROUP )
1795 completeLoadingForGroupObject( it.current() );
1797 m_kpbackground->reload();
1800void KPrPage::completeLoadingForGroupObject( KPrObject *_obj )
1802 KPrGroupObject *_groupObj =
static_cast<KPrGroupObject*
>( _obj );
1805 TQPtrListIterator<KPrObject> it( _groupObj->objectList() );
1806 for ( ; it.current(); ++it ) {
1807 if ( ( it.current()->getType() == OT_PICTURE )
1808 || ( it.current()->getType() == OT_CLIPART ) ) {
1809 KPrPixmapObject *_pixObj =
dynamic_cast<KPrPixmapObject*
>( it.current() );
1813 else if ( it.current()->getType() == OT_TEXT ) {
1814 KPrTextObject *_textObj=
dynamic_cast<KPrTextObject*
>( it.current() );
1816 _textObj->recalcPageNum(
this );
1818 else if ( it.current()->getType() == OT_GROUP )
1819 completeLoadingForGroupObject( it.current() );
1824KCommand * KPrPage::replaceObjs(
bool createUndoRedo,
double _orastX,
double _orastY,
const TQColor & _txtBackCol,
1825 const TQColor & _otxtBackCol )
1827 KPrObject *kpobject = 0;
1829 TQPtrList<KPrObject> _objects;
1830 TQValueList<KoPoint> _diffs;
1831 _objects.setAutoDelete(
false );
1833 for (
int i = 0; i < static_cast<int>( m_objectList.count() ); i++ ) {
1834 kpobject = m_objectList.at( i );
1835 ox = kpobject->getOrig().x();
1836 oy = kpobject->getOrig().y();
1837 ox =
static_cast<int>(ox / m_doc->getGridX() * m_doc->getGridX());
1838 oy =
static_cast<int>(oy / m_doc->getGridY() * m_doc->getGridY());
1840 _diffs.append( KoPoint( ox - kpobject->getOrig().x(), oy - kpobject->getOrig().y() ) );
1841 _objects.append( kpobject );
1844 KPrSetOptionsCmd *setOptionsCmd =
new KPrSetOptionsCmd( i18n(
"Set New Options" ), _diffs, _objects, m_doc->getGridX(),
1845 m_doc->getGridY(),_orastX, _orastY, _txtBackCol, _otxtBackCol, m_doc );
1846 if ( createUndoRedo )
1847 return setOptionsCmd;
1849 delete setOptionsCmd;
1853TQString KPrPage::manualTitle()
const
1855 return m_manualTitle;
1858void KPrPage::insertManualTitle(
const TQString & title)
1860 m_manualTitle=title;
1863TQString KPrPage::pageTitle(
const TQString &_title )
const
1866 if ( !m_manualTitle.isEmpty() )
1867 return m_manualTitle;
1869 TQPtrList<KPrTextObject> objs;
1873 TQPtrListIterator<KPrObject> it( m_objectList );
1874 for ( ; it.current() ; ++it )
1876 if(it.current()->getType()==OT_TEXT)
1877 objs.append(
static_cast<KPrTextObject*
>( it.current() ) );
1881 if ( _title.isNull() )
1885 title = i18n(
"Slide %1" ).arg( m_doc->pageList().findRef(
this ) + 1 );
1887 title = i18n(
"Slide Master" );
1894 if ( objs.isEmpty() )
1898 KPrTextObject *tmp = objs.first();
1899 KPrTextObject *textobject=tmp;
1900 for ( tmp = objs.next(); tmp; tmp = objs.next() )
1901 if ( tmp->getOrig().y() < textobject->getOrig().y() )
1906 return TQString( title );
1909 if ( textobject->textDocument()->firstParag() )
1910 txt = textobject->textDocument()->firstParag()->toString();
1911 if ( txt.stripWhiteSpace().isEmpty() || txt==
"\n" )
1916void KPrPage::setNoteText(
const TQString &_text )
1919 m_doc->setModified(
true);
1922TQString KPrPage::noteText()
const
1927void KPrPage::makeUsedPixmapList()
1929 TQPtrListIterator<KPrObject> it( m_objectList );
1930 for ( ; it.current() ; ++it )
1932 if( it.current()->getType()==OT_PICTURE || it.current()->getType()==OT_CLIPART)
1933 m_doc->insertPixmapKey(
static_cast<KPrPixmapObject*
>( it.current() )->getKey() );
1934 else if ( it.current()->getType() == OT_GROUP )
1935 makeUsedPixmapListForGroupObject( it.current() );
1938 if( m_kpbackground->getBackType()==BT_PICTURE || m_kpbackground->getBackType()==BT_CLIPART)
1939 m_doc->insertPixmapKey(m_kpbackground->getBackPictureKey());
1942void KPrPage::makeUsedPixmapListForGroupObject( KPrObject *_obj )
1944 KPrGroupObject *_groupObj =
static_cast<KPrGroupObject*
>( _obj );
1947 TQPtrListIterator<KPrObject> it( _groupObj->objectList() );
1948 for ( ; it.current(); ++it ) {
1949 if ( ( it.current()->getType() == OT_PICTURE )
1950 || ( it.current()->getType() == OT_CLIPART ) )
1951 m_doc->insertPixmapKey(
static_cast<KPrPixmapObject*
>( it.current() )->getKey() );
1952 else if ( it.current()->getType() == OT_GROUP )
1953 makeUsedPixmapListForGroupObject( it.current() );
1959TQValueList<int> KPrPage::getEffectSteps()
const
1961 TQMap<int,bool> stepmap;
1964 TQPtrListIterator<KPrObject> it( m_objectList );
1965 for ( ; it.current(); ++it )
1967 stepmap[it.current()->getAppearStep()] =
true;
1969 if ( it.current()->getDisappear() )
1971 stepmap[it.current()->getDisappearStep()] =
true;
1975 return stepmap.keys();
1979void KPrPage::deSelectAllObj()
1981 TQPtrListIterator<KPrObject> sIt( m_objectList );
1982 for ( ; sIt.current() ; ++sIt )
1984 if(sIt.current()->isSelected())
1985 deSelectObj(sIt.current() );
1989void KPrPage::deSelectObj( KPrObject *kpobject )
1991 kpobject->setSelected(
false );
1992 m_doc->repaint( kpobject );
1995TQDomElement KPrPage::saveObjects( TQDomDocument &doc, TQDomElement &objects,
double yoffset,
1996 int saveOnlyPage )
const
1998 TQPtrListIterator<KPrObject> oIt(m_objectList);
1999 for (; oIt.current(); ++oIt )
2002 if ( oIt.current()==m_doc->header()
2003 || oIt.current()==m_doc->footer()
2004 || oIt.current()->getType() == OT_PART)
2006 TQDomElement
object=doc.createElement(
"OBJECT");
2007 object.setAttribute(
"type",
static_cast<int>( oIt.current()->getType() ));
2008 bool _sticky = ( this->m_masterPage == 0 );
2010 object.setAttribute(
"sticky",
static_cast<int>(_sticky));
2011 if ( saveOnlyPage != -1 )
2014 object.appendChild(oIt.current()->save( doc, yoffset ));
2016 objects.appendChild(
object);
2021bool KPrPage::oneObjectTextExist(
bool forceAllTextObject)
2023 TQPtrList<KPrObject> lst;
2024 getAllObjectSelectedList(lst,forceAllTextObject );
2025 TQPtrListIterator<KPrObject> it( lst );
2026 for ( ; it.current() ; ++it )
2028 if ( (it.current() == m_doc->header() && !hasHeader())
2029 || (it.current() == m_doc->footer() && !hasFooter()) )
2031 if (it.current()->getType()==OT_TEXT)
2037bool KPrPage::oneObjectTextSelected()
2039 return oneObjectTextExist(
false);
2043bool KPrPage::isOneObjectSelected()
2045 return 0 != getSelectedObj();
2048bool KPrPage::haveASelectedPartObj()
2050 TQPtrList<KPrObject> lst;
2051 getAllObjectSelectedList(lst );
2052 TQPtrListIterator<KPrObject> it( lst );
2053 for ( ; it.current(); ++it ) {
2054 if (it.current()->getType() == OT_PART )
2060bool KPrPage::haveASelectedGroupObj()
2062 TQPtrList<KPrObject> objects( getSelectedObjects(
true ) );
2063 TQPtrListIterator<KPrObject> it( objects );
2064 for ( ; it.current(); ++it ) {
2065 if ( it.current()->getType() == OT_GROUP )
2071bool KPrPage::haveASelectedPixmapObj()
2073 TQPtrList<KPrObject> lst;
2074 getAllObjectSelectedList(lst );
2075 TQPtrListIterator<KPrObject> it( lst );
2076 for ( ; it.current() ; ++it ) {
2077 if (( it.current()->getType() == OT_PICTURE )
2078 || ( it.current()->getType() == OT_CLIPART ) )
2084KoRect KPrPage::getRealRect(
bool all )
const
2088 TQPtrListIterator<KPrObject> it( m_objectList );
2089 for ( ; it.current() ; ++it )
2091 if ( it.current()== m_doc->header() || it.current()== m_doc->footer())
2094 if ( all || ( it.current()->isSelected() && ! it.current()->isProtect() ) )
2095 rect |= it.current()->getRealRect();
2102bool KPrPage::chPic( KPrView *_view)
2104 TQPtrListIterator<KPrObject> it( m_objectList );
2105 for ( ; it.current() ; ++it )
2107 if ( it.current()->isSelected() &&
2108 ( ( it.current()->getType() == OT_PICTURE )
2109 || ( it.current()->getType() == OT_CLIPART ) ) )
2111 KPrPixmapObject* obj=
dynamic_cast<KPrPixmapObject*
>( it.current() );
2114 _view->changePicture( obj->getFileName() );
2122bool KPrPage::savePicture( KPrView *_view )
const
2124 TQPtrListIterator<KPrObject> it( m_objectList );
2125 for ( ; it.current() ; ++it )
2127 if ( it.current()->isSelected() &&
2128 ( ( it.current()->getType() == OT_PICTURE )
2129 || ( it.current()->getType() == OT_CLIPART ) ) )
2131 KPrPixmapObject* obj=
dynamic_cast<KPrPixmapObject*
>( it.current() );
2134 _view->savePicture( obj );
2143KCommand *KPrPage::moveObject(KPrView *_view,
double diffx,
double diffy)
2145 bool createCommand=
false;
2146 KPrMoveByCmd *moveByCmd=0L;
2147 TQPtrList<KPrObject> _objects;
2148 _objects.setAutoDelete(
false );
2149 TQPtrListIterator<KPrObject> it( m_objectList );
2150 for ( ; it.current() ; ++it )
2153 if ( it.current() == m_doc->header() || it.current() == m_doc->footer())
2155 if ( it.current()->isSelected() && !it.current()->isProtect())
2157 _objects.append( it.current() );
2158 TQRect br = _view->zoomHandler()->zoomRect( it.current()->getRepaintRect() );
2159 br.moveBy( _view->zoomHandler()->zoomItX( diffx ), _view->zoomHandler()->zoomItY( diffy ) );
2160 m_doc->repaint( br );
2161 m_doc->repaint( it.current() );
2166 moveByCmd =
new KPrMoveByCmd( i18n(
"Move Objects" ), KoPoint( diffx, diffy ),
2167 _objects, m_doc,
this );
2169 m_doc->updateSideBarItem(
this );
2174KCommand *KPrPage::moveObject(KPrView *m_view,
const KoPoint &_move,
bool key)
2176 TQPtrList<KPrObject> _objects;
2177 _objects.setAutoDelete(
false );
2178 KPrMoveByCmd *moveByCmd=0L;
2179 TQPtrListIterator<KPrObject> it( m_objectList );
2180 for ( ; it.current() ; ++it )
2183 if ( it.current()== m_doc->header() || it.current()== m_doc->footer())
2185 if ( it.current()->isSelected() && !it.current()->isProtect()) {
2187 TQRect oldBoundingRect = m_view->zoomHandler()->zoomRect( it.current()->getRepaintRect() );
2189 it.current()->moveBy( _move );
2190 _objects.append( it.current() );
2191 m_doc->repaint( oldBoundingRect );
2192 m_doc->repaint( it.current() );
2196 if ( key && !_objects.isEmpty())
2197 moveByCmd =
new KPrMoveByCmd( i18n(
"Move Objects" ),
2199 _objects, m_doc,
this );
2204void KPrPage::repaintObj()
2206 TQPtrListIterator<KPrObject> it( m_objectList );
2207 for ( ; it.current() ; ++it )
2209 if(it.current()->isSelected())
2210 m_doc->repaint(it.current() );
2214KCommand *KPrPage::rotateSelectedObjects(
float _newAngle,
bool addAngle )
2216 KPrRotateCmd * cmd = NULL;
2218 TQPtrList<KPrObject> _objects;
2219 _objects.setAutoDelete(
false );
2221 TQPtrListIterator<KPrObject> it( m_objectList );
2222 for ( ; it.current() ; ++it )
2224 if ( it.current()== m_doc->header() || it.current()== m_doc->footer() )
2226 if( it.current()->isSelected() && !it.current()->isProtect())
2228 _objects.append( it.current() );
2232 if ( !_objects.isEmpty() ) {
2233 cmd =
new KPrRotateCmd( i18n(
"Change Rotation" ), _newAngle, _objects, m_doc, addAngle );
2241KCommand *KPrPage::shadowObj(ShadowDirection dir,
int dist,
const TQColor &col)
2243 KPrShadowCmd *shadowCmd=0L;
2244 bool newShadow=
false;
2245 TQPtrList<KPrObject> _objects;
2246 TQPtrList<KPrShadowCmd::ShadowValues> _oldShadow;
2247 KPrShadowCmd::ShadowValues _newShadow, *tmp;
2249 _objects.setAutoDelete(
false );
2250 _oldShadow.setAutoDelete(
false );
2252 _newShadow.shadowDirection = dir;
2253 _newShadow.shadowDistance = dist;
2254 _newShadow.shadowColor = col;
2256 TQPtrListIterator<KPrObject> it( m_objectList );
2257 for ( ; it.current() ; ++it )
2260 if ( it.current()== m_doc->header() || it.current()== m_doc->footer())
2263 if ( it.current()->isSelected() ) {
2264 tmp =
new KPrShadowCmd::ShadowValues;
2265 tmp->shadowDirection = it.current()->getShadowDirection();
2266 tmp->shadowDistance =it.current()->getShadowDistance();
2267 tmp->shadowColor = it.current()->getShadowColor();
2269 if(!newShadow &&( tmp->shadowDirection!=_newShadow.shadowDirection
2270 || tmp->shadowDistance!=_newShadow.shadowDistance
2271 || tmp->shadowColor!=_newShadow.shadowColor))
2274 _oldShadow.append( tmp );
2275 _objects.append( it.current() );
2279 if ( !_objects.isEmpty() && newShadow ) {
2280 shadowCmd =
new KPrShadowCmd( i18n(
"Change Shadow" ),
2281 _oldShadow, _newShadow, _objects, m_doc );
2282 shadowCmd->execute();
2286 _oldShadow.setAutoDelete(
true );
2292TQPtrList<KoTextObject> KPrPage::allTextObjects()
const
2294 TQPtrList<KoTextObject> lst;
2295 addTextObjects( lst );
2299void KPrPage::addTextObjects(TQPtrList<KoTextObject>& lst)
const
2301 TQPtrListIterator<KPrObject> it( m_objectList );
2302 for ( ; it.current() ; ++it )
2303 it.current()->addTextObjects( lst );
2306KPrObject * KPrPage::getCursor(
const TQPoint &pos )
2308 return getCursor( m_doc->zoomHandler()->unzoomPoint( pos ) );
2311KPrObject * KPrPage::getCursor(
const KoPoint &pos )
2313 TQPtrListIterator<KPrObject> it( m_objectList );
2314 KPrObject *kpobject = it.toLast();
2315 while ( kpobject ) {
2316 if ( kpobject->contains( pos ) && kpobject->isSelected() )
2323KPrObject* KPrPage::getObjectAt(
const KoPoint &pos,
bool withoutProtected )
const
2325 TQPtrListIterator<KPrObject> it( m_objectList );
2328 for (
int i = 0; i < 2; ++i )
2332 if ( o != m_doc->footer() ||
2333 o != m_doc->header() ||
2334 ( m_bHasFooter && o == m_doc->footer() ) ||
2335 ( m_bHasHeader && o == m_doc->header() ) )
2337 if ( ( o->isSelected() || i > 0 ) &&
2338 o->contains( pos ) && !( o->isProtect() && withoutProtected ) )
2347KPrPixmapObject * KPrPage::picViewOrigHelper()
const
2349 KPrPixmapObject *obj=0L;
2350 TQPtrListIterator<KPrObject> it( m_objectList );
2351 for ( ; it.current() ; ++it )
2353 if ( it.current()->isSelected() &&
2354 ( ( it.current()->getType() == OT_PICTURE )
2355 || ( it.current()->getType() == OT_CLIPART ) ) )
2357 obj=(KPrPixmapObject*)it.current();
2364void KPrPage::applyStyleChange( KoStyleChangeDefMap changed )
2366 TQPtrList<KPrObject> lst;
2367 getAllObjectSelectedList(lst,
true );
2368 TQPtrListIterator<KPrObject> it( lst );
2370 for ( ; it.current() ; ++it )
2372 KPrTextObject *obj=
dynamic_cast<KPrTextObject*
>(it.current());
2374 obj->applyStyleChange( changed );
2378void KPrPage::reactivateBgSpellChecking(
bool refreshTextObj)
2380 TQPtrList<KPrObject> lst;
2381 getAllObjectSelectedList(lst,
true );
2382 TQPtrListIterator<KPrObject> oIt( lst );
2384 for ( ; oIt.current() ; ++oIt )
2386 if(oIt.current()->getType()==OT_TEXT)
2388 static_cast<KPrTextObject*
>( oIt.current() )->textObject()->setNeedSpellCheck(
true);
2390 m_doc->repaint( oIt.current() );
2395bool KPrPage::canMoveOneObject()
const
2397 TQPtrListIterator<KPrObject> it( m_objectList );
2398 for ( ; it.current() ; ++it )
2401 if ( it.current()== m_doc->header() || it.current()== m_doc->footer())
2403 if(it.current()->isSelected()&& !it.current()->isProtect())
2409KCommand *KPrPage::alignVertical(VerticalAlignmentType _type )
2411 KMacroCommand *macro = 0L;
2412 TQPtrList<KPrObject> lst;
2413 getAllObjectSelectedList(lst );
2414 TQPtrListIterator<KPrObject> it( lst );
2415 for ( ; it.current() ; ++it )
2417 if(it.current()->getType()==OT_TEXT)
2419 KPrTextObject *obj =
dynamic_cast<KPrTextObject *
>(it.current());
2420 if ( obj && !obj->isProtectContent())
2422 KPrChangeVerticalAlignmentCommand * cmd =
new KPrChangeVerticalAlignmentCommand( i18n(
"Change Vertical Alignment"),
2423 obj, obj->verticalAlignment(),_type, m_doc);
2425 macro =
new KMacroCommand( i18n(
"Change Vertical Alignment"));
2426 macro->addCommand( cmd );
2434void KPrPage::changeTabStopValue (
double _tabStop )
2436 TQPtrList<KPrObject> lst;
2437 getAllObjectSelectedList(lst,
true );
2438 TQPtrListIterator<KPrObject> it( lst );
2439 for ( ; it.current() ; ++it )
2441 if(it.current()->getType()==OT_TEXT)
2443 KPrTextObject *obj =
dynamic_cast<KPrTextObject *
>(it.current());
2446 obj->textDocument()->setTabStops( m_doc->zoomHandler()->ptToLayoutUnitPixX( _tabStop ));
2448 m_doc->repaint( obj );
2454KPrObject *KPrPage::nextTextObject(KPrTextObject *obj)
2456 if ( m_objectList.count()==0 )
2460 pos = m_objectList.findNextRef(obj);
2465 for ( frm=m_objectList.at(pos); frm != 0; frm=m_objectList.next() )
2467 KPrTextObject *newObj = frm->nextTextObject();
2468 if(newObj && newObj->nextTextObject()->textObject()->needSpellCheck())
2475 for ( frm=m_objectList.at(0); frm != 0; frm=m_objectList.next() )
2477 KPrTextObject *newObj = frm->nextTextObject();
2478 if(newObj && newObj->nextTextObject()->textObject()->needSpellCheck())
2485bool KPrPage::findTextObject( KPrObject *obj )
2487 return (m_objectList.findRef( obj )>=0 );
2490void KPrPage::getAllObjectSelectedList(TQPtrList<KPrObject> &lst,
bool force )
2492 TQPtrListIterator<KPrObject> it( m_objectList );
2493 for ( ; it.current() ; ++it )
2494 it.current()->getAllObjectSelectedList( lst,force );
2497void KPrPage::getAllEmbeddedObjectSelected(TQPtrList<KoDocumentChild> &embeddedObjects )
2499 TQPtrListIterator<KPrObject> it( m_objectList );
2500 for ( ; it.current() ; ++it )
2502 if ( it.current()->isSelected() && it.current()->getType() == OT_PART )
2503 embeddedObjects.append(
static_cast<KPrPartObject *
>(it.current())->getChild() );
2507KPrPixmapObject* KPrPage::getSelectedImage()
const
2509 KPrPixmapObject *obj=0L;
2510 TQPtrListIterator<KPrObject> it( m_objectList );
2511 for ( ; it.current() ; ++it )
2513 if ( it.current()->isSelected() && it.current()->getType() == OT_PICTURE )
2515 obj=
dynamic_cast<KPrPixmapObject*
>(it.current());
2522KCommand * KPrPage::setImageEffect(ImageEffect eff, TQVariant param1, TQVariant param2, TQVariant param3)
2524 bool changed =
false;
2525 KPrImageEffectCmd *imageEffectCmd = 0L;
2526 TQPtrList<KPrObject> _objects;
2527 TQPtrList<KPrImageEffectCmd::ImageEffectSettings> _oldSettings;
2528 KPrImageEffectCmd::ImageEffectSettings _newSettings, *tmp;
2530 _objects.setAutoDelete(
false );
2531 _oldSettings.setAutoDelete(
false );
2533 _newSettings.effect = eff;
2534 _newSettings.param1 = param1;
2535 _newSettings.param2 = param2;
2536 _newSettings.param3 = param3;
2538 TQPtrListIterator<KPrObject> it( m_objectList );
2539 for ( ; it.current(); ++it ) {
2540 if ( it.current()->getType() == OT_PICTURE && it.current()->isSelected()) {
2541 tmp =
new KPrImageEffectCmd::ImageEffectSettings;
2542 tmp->effect =
static_cast<KPrPixmapObject*
>(it.current())->getImageEffect();
2543 tmp->param1 =
static_cast<KPrPixmapObject*
>(it.current())->getIEParam1();
2544 tmp->param2 =
static_cast<KPrPixmapObject*
>(it.current())->getIEParam2();
2545 tmp->param3 =
static_cast<KPrPixmapObject*
>(it.current())->getIEParam3();
2546 _oldSettings.append( tmp );
2547 _objects.append( it.current() );
2549 if( !changed && ( tmp->effect != _newSettings.effect
2550 || tmp->param1 != _newSettings.param1
2551 || tmp->param2 != _newSettings.param2
2552 || tmp->param3 != _newSettings.param3 ) )
2557 if ( !_objects.isEmpty() && changed ) {
2558 imageEffectCmd =
new KPrImageEffectCmd( i18n(
"Change Image Effect" ), _oldSettings, _newSettings,
2560 imageEffectCmd->execute();
2563 _oldSettings.setAutoDelete(
true );
2564 _oldSettings.clear();
2567 m_doc->setModified(
true );
2569 return imageEffectCmd;
2572void KPrPage::setHeader(
bool b,
bool _updateDoc )
2576 m_doc->setHeader(b);
2579void KPrPage::setFooter(
bool b,
bool _updateDoc )
2583 m_doc->setFooter( b );
2586void KPrPage::setUseMasterBackground(
bool useMasterBackground )
2588 m_useMasterBackground = useMasterBackground;
2591bool KPrPage::useMasterBackground()
const
2593 return m_useMasterBackground;
2596bool KPrPage::isMasterPage()
const
2598 return ( m_masterPage==0 );
2601void KPrPage::setDisplayObjectFromMasterPage(
bool _b )
2603 m_displayObjectFromMasterPage = _b;
2604 m_doc->setDisplayObjectMasterPage( _b );
2607void KPrPage::setDisplayBackground(
bool _b )
2609 m_displayBackground = _b;
2610 m_doc->setDisplayBackground( _b );