kpresenter

KPrPageIface.cpp
1/* This file is part of the KDE project
2 Copyright (C) 2002,2003,2004 Laurent MONTEL <montel@kde.org>
3
4 This library is free software; you can redistribute it and/or
5 modify it under the terms of the GNU Library General Public
6 License as published by the Free Software Foundation; either
7 version 2 of the License, or (at your option) any later version.
8
9 This library is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 Library General Public License for more details.
13
14 You should have received a copy of the GNU Library General Public License
15 along with this library; see the file COPYING.LIB. If not, write to
16 the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
17 * Boston, MA 02110-1301, USA.
18*/
19
20#include "KPrPageIface.h"
21
22#include "KPrPage.h"
23#include "KPrTextObject.h"
24#include "KPrView.h"
25#include "KPrBackground.h"
26#include <tdeapplication.h>
27#include <dcopclient.h>
28#include "KPrDocument.h"
29#include "KPrCanvas.h"
30#include <kdebug.h>
31#include <kcommand.h>
32#include "KPrCommand.h"
33#include <KoPoint.h>
34#include <KoRect.h>
35
36KPrPageIface::KPrPageIface( KPrPage *_page, int pgnum )
37 // Make up a nice DCOPObject name like "Document-0 Page-1".
38 // ### But the page number will be stale if pages are added/removed/moved around....
39 : DCOPObject( TQCString( _page->kPresenterDoc()->dcopObject()->objId() ) + " Page-" + TQString::number( pgnum ).latin1() )
40{
41 m_page = _page;
42}
43
44DCOPRef KPrPageIface::textObject( int num )
45{
46 KPrTextObject * textObj=m_page->textFrameSet(num);
47 if(textObj)
48 return DCOPRef( kapp->dcopClient()->appId(),
49 textObj->dcopObject()->objId() );
50 return DCOPRef();
51}
52
53//return a reference to selected object
54DCOPRef KPrPageIface::selectedObject( )
55{
56 KPrObject * obj=m_page->getSelectedObj();
57 if(obj)
58 return DCOPRef( kapp->dcopClient()->appId(),
59 obj->dcopObject()->objId() );
60 return DCOPRef();
61}
62
63
64int KPrPageIface::numTextObject() const
65{
66 return m_page->numTextObject();
67}
68
69DCOPRef KPrPageIface::object( int num )
70{
71 if( num >= (int)m_page->objNums())
72 return DCOPRef();
73 return DCOPRef( kapp->dcopClient()->appId(),
74 m_page->getObject(num)->dcopObject()->objId() );
75}
76
77TQString KPrPageIface::manualTitle()const
78{
79 return m_page->manualTitle();
80}
81
82void KPrPageIface::insertManualTitle(const TQString & title)
83{
84 m_page->insertManualTitle(title);
85 m_page->kPresenterDoc()->updateSideBarItem( m_page );
86}
87
88TQString KPrPageIface::pageTitle( const TQString &_title ) const
89{
90 return m_page->pageTitle(_title);
91}
92
93void KPrPageIface::setNoteText( const TQString &_text )
94{
95 m_page->setNoteText(_text);
96}
97
98TQString KPrPageIface::noteText( )const
99{
100 return m_page->noteText();
101}
102
103unsigned int KPrPageIface::objNums() const
104{
105 return m_page->objNums();
106}
107
108int KPrPageIface::numSelected() const
109{
110 return m_page->numSelected();
111}
112
113DCOPRef KPrPageIface::groupObjects()
114{
115 m_page->groupObjects();
116 return selectedObject();
117}
118
119void KPrPageIface::ungroupObjects()
120{
121 //FIXME
122 //m_page->ungroupObjects();
123}
124
125void KPrPageIface::raiseObjs()
126{
127 m_page->raiseObjs(false);
128}
129
130void KPrPageIface::lowerObjs()
131{
132 m_page->lowerObjs(false);
133}
134
135void KPrPageIface::sendBackward()
136{
137 m_page->lowerObjs(true);
138}
139
140void KPrPageIface::bringForward()
141{
142 m_page->raiseObjs(true);
143}
144
145void KPrPageIface::copyObjs()
146{
147 //FIXME
148 //m_page->copyObjs();
149}
150
151void KPrPageIface::slotRepaintVariable()
152{
153 m_page->slotRepaintVariable();
154}
155
156void KPrPageIface::recalcPageNum()
157{
158 m_page->recalcPageNum();
159}
160
161void KPrPageIface::setPageTimer( int pageTimer )
162{
163 m_page->setPageTimer(pageTimer);
164}
165
166void KPrPageIface::setPageSoundEffect( bool soundEffect )
167{
168 m_page->setPageSoundEffect(soundEffect);
169}
170
171void KPrPageIface::setPageSoundFileName( const TQString &fileName )
172{
173 m_page->setPageSoundFileName(fileName);
174}
175
176int KPrPageIface::backXFactor() const
177{
178 return m_page->getBackXFactor();
179}
180
181int KPrPageIface::backYFactor( ) const
182{
183 return m_page->getBackYFactor();
184}
185
186int KPrPageIface::pageTimer( ) const
187{
188 return m_page->getPageTimer();
189}
190
191bool KPrPageIface::pageSoundEffect( ) const
192{
193 return m_page->getPageSoundEffect();
194}
195
196int KPrPageIface::backType() const
197{
198 return (int)m_page->getBackType();
199}
200
201int KPrPageIface::backView() const
202{
203 return (int)m_page->getBackView();
204}
205
206TQColor KPrPageIface::backColor1() const
207{
208 return m_page->getBackColor1();
209}
210
211TQColor KPrPageIface::backColor2() const
212{
213 return m_page->getBackColor2();
214}
215
216int KPrPageIface::backColorType() const
217{
218 return (int)m_page->getBackColorType();
219}
220
221TQString KPrPageIface::backPixFilename() const
222{
223 return m_page->getBackPictureKey().filename();
224}
225
226TQString KPrPageIface::backClipFilename() const
227{
228 return m_page->getBackPictureKey().filename();
229}
230
231int KPrPageIface::pageEffect() const
232{
233 return (int)m_page->getPageEffect();
234}
235
236void KPrPageIface::setPageEffect(const TQString &effect )
237{
238 if(effect=="NONE")
239 m_page->setPageEffect(PEF_NONE);
240 else if(effect=="CLOSE_HORZ")
241 m_page->setPageEffect(PEF_CLOSE_HORZ);
242 else if(effect=="CLOSE_VERT")
243 m_page->setPageEffect(PEF_CLOSE_VERT);
244 else if(effect=="CLOSE_ALL")
245 m_page->setPageEffect(PEF_CLOSE_ALL);
246 else if(effect=="OPEN_HORZ")
247 m_page->setPageEffect(PEF_OPEN_HORZ);
248 else if(effect=="OPEN_VERT")
249 m_page->setPageEffect(PEF_OPEN_VERT);
250 else if(effect=="OPEN_ALL")
251 m_page->setPageEffect(PEF_OPEN_ALL);
252 else if(effect=="INTERLOCKING_HORZ_1")
253 m_page->setPageEffect(PEF_INTERLOCKING_HORZ_1);
254 else if(effect=="INTERLOCKING_HORZ_2")
255 m_page->setPageEffect(PEF_INTERLOCKING_HORZ_2);
256 else if(effect=="INTERLOCKING_VERT_1")
257 m_page->setPageEffect(PEF_INTERLOCKING_VERT_1);
258 else if(effect=="INTERLOCKING_VERT_2")
259 m_page->setPageEffect(PEF_INTERLOCKING_VERT_2);
260 else if(effect=="SURROUND1")
261 m_page->setPageEffect(PEF_SURROUND1);
262 else if(effect=="FLY1")
263 m_page->setPageEffect(PEF_FLY1);
264 else if(effect=="BLINDS_HOR")
265 m_page->setPageEffect(PEF_BLINDS_HOR);
266 else if(effect=="BLINDS_VER")
267 m_page->setPageEffect(PEF_BLINDS_VER);
268 else if(effect=="BOX_IN")
269 m_page->setPageEffect(PEF_BOX_IN);
270 else if(effect=="BOX_OUT")
271 m_page->setPageEffect(PEF_BOX_OUT);
272 else if(effect=="CHECKBOARD_ACROSS")
273 m_page->setPageEffect(PEF_CHECKBOARD_ACROSS);
274 else if(effect=="CHECKBOARD_DOWN")
275 m_page->setPageEffect(PEF_CHECKBOARD_DOWN);
276 else if(effect=="COVER_DOWN")
277 m_page->setPageEffect(PEF_COVER_DOWN);
278 else if(effect=="UNCOVER_DOWN")
279 m_page->setPageEffect(PEF_UNCOVER_DOWN);
280 else if(effect=="COVER_UP")
281 m_page->setPageEffect(PEF_COVER_UP);
282 else if(effect=="UNCOVER_UP")
283 m_page->setPageEffect(PEF_UNCOVER_UP);
284 else if(effect=="COVER_LEFT")
285 m_page->setPageEffect(PEF_COVER_LEFT);
286 else if(effect=="UNCOVER_LEFT")
287 m_page->setPageEffect(PEF_UNCOVER_LEFT);
288 else if(effect=="COVER_RIGHT")
289 m_page->setPageEffect(PEF_COVER_RIGHT);
290 else if(effect=="UNCOVER_RIGHT")
291 m_page->setPageEffect(PEF_UNCOVER_RIGHT);
292 else if(effect=="COVER_LEFT_UP")
293 m_page->setPageEffect(PEF_COVER_LEFT_UP);
294 else if(effect=="UNCOVER_LEFT_UP")
295 m_page->setPageEffect(PEF_UNCOVER_LEFT_UP);
296 else if(effect=="COVER_LEFT_DOWN")
297 m_page->setPageEffect(PEF_COVER_LEFT_DOWN);
298 else if(effect=="UNCOVER_LEFT_DOWN")
299 m_page->setPageEffect(PEF_UNCOVER_LEFT_DOWN);
300 else if(effect=="COVER_RIGHT_UP")
301 m_page->setPageEffect(PEF_COVER_RIGHT_UP);
302 else if(effect=="UNCOVER_RIGHT_UP")
303 m_page->setPageEffect(PEF_UNCOVER_RIGHT_UP);
304 else if(effect=="COVER_RIGHT_DOWN")
305 m_page->setPageEffect(PEF_COVER_RIGHT_DOWN);
306 else if(effect=="UNCOVER_RIGHT_DOWN")
307 m_page->setPageEffect(PEF_UNCOVER_RIGHT_DOWN);
308 else if(effect=="DISSOLVE")
309 m_page->setPageEffect(PEF_DISSOLVE);
310 else if(effect=="STRIPS_LEFT_UP")
311 m_page->setPageEffect(PEF_STRIPS_LEFT_UP);
312 else if(effect=="STRIPS_LEFT_DOWN")
313 m_page->setPageEffect(PEF_STRIPS_LEFT_DOWN);
314 else if(effect=="STRIPS_RIGHT_UP")
315 m_page->setPageEffect(PEF_STRIPS_RIGHT_UP);
316 else if(effect=="STRIPS_RIGHT_DOWN")
317 m_page->setPageEffect(PEF_STRIPS_RIGHT_DOWN);
318 else if(effect=="MELTING")
319 m_page->setPageEffect(PEF_MELTING);
320 else if(effect=="RANDOM")
321 m_page->setPageEffect(PEF_RANDOM);
322 else
323 kdDebug(33001) << "Error in setPageEffect" << endl;
324}
325
326TQString KPrPageIface::pageEffectString( )const
327{
328 switch(m_page->getPageEffect( ))
329 {
330 case PEF_NONE:
331 return TQString("NONE");
332 break;
333 case PEF_CLOSE_HORZ:
334 return TQString("CLOSE_HORZ");
335 break;
336 case PEF_CLOSE_VERT:
337 return TQString("CLOSE_VERT");
338 break;
339 case PEF_CLOSE_ALL:
340 return TQString("CLOSE_ALL");
341 break;
342 case PEF_OPEN_HORZ:
343 return TQString("OPEN_HORZ");
344 break;
345 case PEF_OPEN_VERT:
346 return TQString("OPEN_VERT");
347 break;
348 case PEF_OPEN_ALL:
349 return TQString("OPEN_ALL");
350 break;
351 case PEF_INTERLOCKING_HORZ_1:
352 return TQString("INTERLOCKING_HORZ_1");
353 break;
354 case PEF_INTERLOCKING_HORZ_2:
355 return TQString("INTERLOCKING_HORZ_2");
356 break;
357 case PEF_INTERLOCKING_VERT_1:
358 return TQString("INTERLOCKING_VERT_1");
359 break;
360 case PEF_INTERLOCKING_VERT_2:
361 return TQString("INTERLOCKING_VERT_2");
362 break;
363 case PEF_SURROUND1:
364 return TQString("SURROUND1");
365 break;
366 case PEF_BLINDS_HOR:
367 return TQString("BLINDS_HOR");
368 break;
369 case PEF_BLINDS_VER:
370 return TQString("BLINDS_VER");
371 break;
372 case PEF_BOX_IN:
373 return TQString("BOX_IN");
374 break;
375 case PEF_BOX_OUT:
376 return TQString("BOX_OUT");
377 break;
378 case PEF_CHECKBOARD_ACROSS:
379 return TQString("CHECKBOARD_ACROSS");
380 break;
381 case PEF_COVER_DOWN:
382 return TQString("COVER_DOWN");
383 break;
384 case PEF_UNCOVER_DOWN:
385 return TQString("UNCOVER_DOWN");
386 break;
387 case PEF_COVER_UP:
388 return TQString("COVER_UP");
389 break;
390 case PEF_UNCOVER_UP:
391 return TQString("UNCOVER_UP");
392 break;
393 case PEF_COVER_LEFT:
394 return TQString("COVER_LEFT");
395 break;
396 case PEF_UNCOVER_LEFT:
397 return TQString("UNCOVER_LEFT");
398 break;
399 case PEF_COVER_RIGHT:
400 return TQString("COVER_RIGHT");
401 break;
402 case PEF_UNCOVER_RIGHT:
403 return TQString("UNCOVER_RIGHT");
404 break;
405 case PEF_COVER_LEFT_UP:
406 return TQString("COVER_LEFT_UP");
407 break;
408 case PEF_UNCOVER_LEFT_UP:
409 return TQString("UNCOVER_LEFT_UP");
410 break;
411 case PEF_COVER_LEFT_DOWN:
412 return TQString("COVER_LEFT_DOWN");
413 break;
414 case PEF_UNCOVER_LEFT_DOWN:
415 return TQString("UNCOVER_LEFT_DOWN");
416 break;
417 case PEF_COVER_RIGHT_UP:
418 return TQString("COVER_RIGHT_UP");
419 break;
420 case PEF_UNCOVER_RIGHT_UP:
421 return TQString("UNCOVER_RIGHT_UP");
422 break;
423 case PEF_COVER_RIGHT_DOWN:
424 return TQString("COVER_RIGHT_DOWN");
425 break;
426 case PEF_UNCOVER_RIGHT_DOWN:
427 return TQString("UNCOVER_RIGHT_DOWN");
428 break;
429 case PEF_DISSOLVE:
430 return TQString("DISSOLVE");
431 break;
432 case PEF_STRIPS_LEFT_UP:
433 return TQString("STRIPS_LEFT_UP");
434 break;
435 case PEF_STRIPS_LEFT_DOWN:
436 return TQString("STRIPS_LEFT_DOWN");
437 break;
438 case PEF_STRIPS_RIGHT_UP:
439 return TQString("STRIPS_RIGHT_UP");
440 break;
441 case PEF_STRIPS_RIGHT_DOWN:
442 return TQString("STRIPS_RIGHT_DOWN");
443 break;
444 case PEF_MELTING:
445 return TQString("MELTING");
446 break;
447 case PEF_RANDOM:
448 return TQString("RANDOM");
449 break;
450 default:
451 kdDebug(33001) << "Page effect not defined!" << endl;
452 break;
453 }
454 return TQString("");
455}
456
457bool KPrPageIface::backUnbalanced() const
458{
459 return (int)m_page->getBackUnbalanced();
460}
461
462TQString KPrPageIface::pageSoundFileName() const
463{
464 return m_page->getPageSoundFileName();
465}
466
467TQRect KPrPageIface::pageRect() const
468{
469 return m_page->getZoomPageRect();
470}
471
472bool KPrPageIface::isSlideSelected()
473{
474 return m_page->isSlideSelected();
475}
476
477void KPrPageIface::slideSelected(bool _b)
478{
479 m_page->slideSelected(_b);
480 m_page->kPresenterDoc()->updateSideBarItem( m_page );
481 m_page->kPresenterDoc()->updatePresentationButton();
482}
483
484void KPrPageIface::changePicture( const TQString & filename )
485{
486 // TODO: find a better parent
487 m_page->changePicture(filename, 0);
488}
489
490//create a rectangle and return a dcop reference!
491DCOPRef KPrPageIface::insertRectangle(double x, double y, double h, double w)
492{
493 KPrView *view=m_page->kPresenterDoc()->firstView();
494 m_page->kPresenterDoc()->deSelectAllObj();
495 if ( !view )
496 return DCOPRef();
497 view->getCanvas()->insertRect( KoRect( x, y, h, w ) );
498 return selectedObject();
499}
500
501DCOPRef KPrPageIface::insertEllipse( double x, double y, double h, double w )
502{
503 KPrView *view=m_page->kPresenterDoc()->firstView();
504 m_page->kPresenterDoc()->deSelectAllObj();
505 if ( !view )
506 return DCOPRef();
507
508 view->getCanvas()->insertEllipse( KoRect( x, y, h, w ) );
509 return selectedObject();
510}
511
512DCOPRef KPrPageIface::insertPie( double x, double y, double h, double w )
513{
514 KPrView *view=m_page->kPresenterDoc()->firstView();
515 m_page->kPresenterDoc()->deSelectAllObj();
516 if ( !view )
517 return DCOPRef();
518
519 view->getCanvas()->insertPie( KoRect( x, y, h, w ) );
520 return selectedObject();
521}
522
523DCOPRef KPrPageIface::insertLine( double x1, double y1, double x2, double y2 )
524{
525 KPrView *view=m_page->kPresenterDoc()->firstView();
526 m_page->kPresenterDoc()->deSelectAllObj();
527 if ( !view )
528 return DCOPRef();
529
530 view->getCanvas()->insertLine( KoPoint( x1, y1), KoPoint( x2, y2 ) );
531 return selectedObject();
532}
533
534DCOPRef KPrPageIface::insertTextObject( double x, double y, double h, double w )
535{
536 KPrView *view=m_page->kPresenterDoc()->firstView();
537 m_page->kPresenterDoc()->deSelectAllObj();
538 if ( !view )
539 return DCOPRef();
540
541 view->getCanvas()->insertTextObject( KoRect( x, y, h, w ) );
542 return selectedObject();
543}
544
545DCOPRef KPrPageIface::insertPicture( const TQString & file, double x, double y, double h, double w )
546{
547 m_page->setInsPictureFile(file);
548 KPrView *view=m_page->kPresenterDoc()->firstView();
549 m_page->kPresenterDoc()->deSelectAllObj();
550 if ( !view )
551 return DCOPRef();
552
553 view->getCanvas()->insertPicture( KoRect( x, y, h, w ) );
554 return selectedObject();
555}
556
557void KPrPageIface::setBackGroundColor1(const TQColor &col)
558{
559 const TQColor col2=backColor2();
560 m_page->setBackColor( col, col2, m_page->getBackColorType(),
561 m_page->getBackUnbalanced(), backXFactor(), backYFactor() );
562}
563
564void KPrPageIface::setBackGroundColor2(const TQColor &col)
565{
566 const TQColor col1=backColor1();
567 m_page->setBackColor( col1, col, m_page->getBackColorType(),
568 m_page->getBackUnbalanced(), backXFactor(), backYFactor() );
569}
570
571void KPrPageIface::setBackGroundColorType(const TQString &type)
572{
573 BCType bctype;
574 if(type=="PLAIN")
575 bctype=BCT_PLAIN;
576 else if(type=="GHORZ")
577 bctype=BCT_GHORZ;
578 else if(type=="GVERT")
579 bctype=BCT_GVERT;
580 else if(type=="GDIAGONAL1")
581 bctype=BCT_GDIAGONAL1;
582 else if(type=="GDIAGONAL2")
583 bctype=BCT_GDIAGONAL2;
584 else if(type=="GCIRCLE")
585 bctype=BCT_GCIRCLE;
586 else if(type=="GRECT")
587 bctype=BCT_GRECT;
588 else if(type=="GPIPECROSS")
589 bctype=BCT_GPIPECROSS;
590 else if(type=="GPYRAMID")
591 bctype=BCT_GPYRAMID;
592 else
593 {
594 kdDebug(33001)<<"Error KPrPageIface::setBackGroundColorType" << endl;
595 return;
596 }
597
598 m_page->setBackColor( backColor1(), backColor2(), bctype,m_page->getBackUnbalanced(),
599 backXFactor(), backYFactor() );
600}
601
602void KPrPageIface::deSelectAllObj()
603{
604 m_page->deSelectAllObj();
605}
606
607bool KPrPageIface::oneObjectTextExist() const
608{
609 return m_page->oneObjectTextExist();
610}
611
612bool KPrPageIface::isOneObjectSelected() const
613{
614 return m_page->isOneObjectSelected();
615}
616
617bool KPrPageIface::haveASelectedPartObj() const
618{
619 return m_page->haveASelectedPartObj();
620}
621
622bool KPrPageIface::haveASelectedGroupObj() const
623{
624 return m_page->haveASelectedGroupObj();
625}
626
627void KPrPageIface::rotateAllObjSelected(float _newAngle)
628{
629 KCommand *cmd= m_page->rotateSelectedObjects( _newAngle);
630 delete cmd;
631}
632
633void KPrPageIface::moveAllObjectSelected( int diffx,int diffy)
634{
635 KPrView *_view=m_page->kPresenterDoc()->firstView();
636 if(_view)
637 {
638 KCommand *cmd=m_page->moveObject(_view, diffx,diffy);
639 delete cmd;
640 }
641}
642
643void KPrPageIface::deleteAllObjectSelected()
644{
645 KCommand * cmd=m_page->deleteSelectedObjects();
646 delete cmd;
647}
648
649bool KPrPageIface::hasHeader()const
650{
651 return m_page->hasHeader();
652}
653
654bool KPrPageIface::hasFooter()const
655{
656 return m_page->hasFooter();
657}
658
659void KPrPageIface::setHeader( bool b )
660{
661 m_page->setHeader( b );
662}
663
664void KPrPageIface::setFooter( bool b )
665{
666 m_page->setFooter( b );
667}
668
669
670void KPrPageIface::setUseMasterBackground( bool useMasterBackground )
671{
672 m_page->setUseMasterBackground( useMasterBackground );
673}
674
675bool KPrPageIface::useMasterBackground() const
676{
677 return m_page->useMasterBackground();
678}
679
680void KPrPageIface::setDisplayObjectFromMasterPage( bool _b )
681{
682 m_page->setDisplayObjectFromMasterPage( _b );
683}
684
685bool KPrPageIface::displayObjectFromMasterPage() const
686{
687 return m_page->displayObjectFromMasterPage();
688}
689
690void KPrPageIface::setDisplayBackground( bool _b )
691{
692 m_page->setDisplayBackground( _b );
693}
694
695bool KPrPageIface::displayBackground() const
696{
697 return m_page->displayBackground();
698}
void insertLine(const KoPoint &startPoint, const KoPoint &endPoint)
Add a line.
void insertEllipse(const KoRect &rect)
Add a ellipse.
void insertRect(const KoRect &rect)
Add a rectangle.
KPrTextObject * insertTextObject(const KoRect &rect)
Add a text object.
void insertPicture(const KoRect &rect)
Add a picture.
void insertPie(const KoRect &rect)
Add a pie/arc/chord.