kpresenter

KPrEffectDia.cpp
1/* This file is part of the KDE project
2 Copyright (C) 1998, 1999 Reginald Stadlbauer <reggie@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 "KPrView.h"
21#include "KPrDocument.h"
22#include "KPrEffectDia.h"
23#include "KPrCommand.h"
24#include "KPrObject.h"
25#include "KPrSoundPlayer.h"
26
27#include <tqpushbutton.h>
28#include <tqcombobox.h>
29#include <tqlabel.h>
30#include <tqgroupbox.h>
31#include <tqcheckbox.h>
32#include <tqlineedit.h>
33#include <tqvaluelist.h>
34#include <tqlayout.h>
35#include <tqspinbox.h>
36#include <tqstringlist.h>
37#include <tqdir.h>
38#include <tqtooltip.h>
39#include <tqwhatsthis.h>
40
41#include <tdelocale.h>
42#include <tdeglobal.h>
43#include <kbuttonbox.h>
44#include <knuminput.h>
45#include <kurlrequester.h>
46#include <kurl.h>
47#include <kstandarddirs.h>
48#include <tdefiledialog.h>
49
50KPrEffectDia::KPrEffectDia( TQWidget* parent, const char* name, const TQPtrList<KPrObject>& _objs,
51 KPrView *_view )
52 : KDialogBase( parent, name, true ), objs( _objs )
53{
54 view = _view;
55 KPrObject *obj = objs.at( 0 );
56 soundPlayer1 = 0;
57 soundPlayer2 = 0;
58
59 TQWidget *page = new TQWidget( this );
60 setMainWidget(page);
61 topLayout = new TQVBoxLayout( page, 0, spacingHint() );
62
63 TQGroupBox *grp1 = new TQGroupBox(0, TQt::Vertical, i18n( "Appear" ), page );
64 grp1->layout()->setSpacing(KDialog::spacingHint());
65 grp1->layout()->setMargin(KDialog::marginHint());
66 topLayout->addWidget(grp1);
67 TQGridLayout *upperRow = new TQGridLayout(grp1->layout(), 6, 4);
68
69 lAppear = new TQLabel( i18n( "Order of appearance:" ), grp1 );
70 lAppear->setAlignment( AlignVCenter );
71 upperRow->addWidget(lAppear, 0, 0);
72
73 eAppearStep = new TQSpinBox( 0, 100, 1, grp1 );
74 eAppearStep->setValue( obj->getAppearStep() );
75 upperRow->addWidget(eAppearStep, 0, 1);
76
77 //( void )new TQWidget( grp1 );
78 //( void )new TQWidget( grp1 );
79
80 lEffect = new TQLabel( i18n( "Effect (appearing):" ), grp1 );
81 lEffect->setAlignment( AlignVCenter );
82 upperRow->addWidget(lEffect, 1, 0);
83
84 cEffect = new TQComboBox( false, grp1, "cEffect" );
85 cEffect->insertItem( i18n( "No Effect" ) );
86 cEffect->insertItem( i18n( "Come From Right" ) );
87 cEffect->insertItem( i18n( "Come From Left" ) );
88 cEffect->insertItem( i18n( "Come From Top" ) );
89 cEffect->insertItem( i18n( "Come From Bottom" ) );
90 cEffect->insertItem( i18n( "Come From Right/Top" ) );
91 cEffect->insertItem( i18n( "Come From Right/Bottom" ) );
92 cEffect->insertItem( i18n( "Come From Left/Top" ) );
93 cEffect->insertItem( i18n( "Come From Left/Bottom" ) );
94 cEffect->insertItem( i18n( "Wipe From Left" ) );
95 cEffect->insertItem( i18n( "Wipe From Right" ) );
96 cEffect->insertItem( i18n( "Wipe From Top" ) );
97 cEffect->insertItem( i18n( "Wipe From Bottom" ) );
98 cEffect->setCurrentItem( static_cast<int>( obj->getEffect() ) );
99 upperRow->addWidget(cEffect, 1, 1);
100
101 connect( cEffect, TQ_SIGNAL( activated( int ) ), this, TQ_SLOT( appearEffectChanged( int ) ) );
102
103 lAppearSpeed = new TQLabel( i18n( "Speed:" ), grp1 );
104 lAppearSpeed->setAlignment( AlignVCenter );
105 upperRow->addWidget(lAppearSpeed, 2, 0);
106
107 cAppearSpeed = new TQComboBox( false, grp1, "cEffect" );
108 cAppearSpeed->insertItem( i18n( "Slow" ) );
109 cAppearSpeed->insertItem( i18n( "Medium" ) );
110 cAppearSpeed->insertItem( i18n( "Fast" ) );
111 cAppearSpeed->setCurrentItem( static_cast<int>( obj->getAppearSpeed() ) );
112 upperRow->addWidget(cAppearSpeed, 2, 1);
113 appearEffectChanged( cEffect->currentItem() );
114
115 lEffect2 = new TQLabel( i18n( "Effect (object specific):" ), grp1 );
116 lEffect2->setAlignment( AlignVCenter );
117 upperRow->addWidget(lEffect2, 3, 0);
118
119 cEffect2 = new TQComboBox( false, grp1, "cEffect2" );
120 cEffect2->insertItem( i18n( "No Effect" ) );
121 upperRow->addWidget(cEffect2, 3, 1);
122
123 switch ( obj->getType() ) {
124 case OT_TEXT: {
125 cEffect2->insertItem( i18n( "Paragraph After Paragraph" ) );
126 } break;
127 default:
128 lEffect2->setEnabled(false);
129 cEffect2->setEnabled(false);
130 break;
131 }
132
133 if ( obj->getEffect2() == EF2_NONE )
134 cEffect2->setCurrentItem( static_cast<int>( obj->getEffect2() ) );
135 else {
136 switch ( obj->getType() )
137 {
138 case OT_TEXT:
139 cEffect2->setCurrentItem( static_cast<int>( obj->getEffect2() + TxtObjOffset ) );
140 break;
141 default: break;
142 }
143 }
144
145 TQLabel *lTimerOfAppear = new TQLabel( i18n( "Timer of the object:" ), grp1 );
146 lTimerOfAppear->setAlignment( AlignVCenter );
147 upperRow->addWidget( lTimerOfAppear, 4, 0 );
148
149 timerOfAppear = new KIntNumInput( obj->getAppearTimer(), grp1 );
150 timerOfAppear->setRange( 1, 600, 1 );
151 timerOfAppear->setSuffix( i18n( " seconds" ) );
152 upperRow->addWidget( timerOfAppear, 4, 1 );
153
154 if ( view->kPresenterDoc()->spManualSwitch() )
155 timerOfAppear->setEnabled( false );
156
157
158 // setup the Sound Effect stuff
159 appearSoundEffect = new TQCheckBox( i18n( "Sound effect" ), grp1 );
160 appearSoundEffect->setChecked( obj->getAppearSoundEffect() );
161 upperRow->addWidget( appearSoundEffect, 5, 0 );
162
163 connect( appearSoundEffect, TQ_SIGNAL( clicked() ), this, TQ_SLOT( appearSoundEffectChanged() ) );
164
165 lSoundEffect1 = new TQLabel( i18n( "File name:" ), grp1 );
166 lSoundEffect1->setAlignment( AlignVCenter );
167 upperRow->addWidget( lSoundEffect1, 6, 0 );
168
169 requester1 = new KURLRequester( grp1 );
170 requester1->setURL( obj->getAppearSoundEffectFileName() );
171 upperRow->addWidget( requester1, 6, 1 );
172
173 connect( requester1, TQ_SIGNAL( openFileDialog( KURLRequester * ) ),
174 this, TQ_SLOT( slotRequesterClicked( KURLRequester * ) ) );
175
176 connect( requester1, TQ_SIGNAL( textChanged( const TQString& ) ),
177 this, TQ_SLOT( slotAppearFileChanged( const TQString& ) ) );
178
179 buttonTestPlaySoundEffect1 = new TQPushButton( grp1 );
180 buttonTestPlaySoundEffect1->setIconSet( SmallIconSet("1rightarrow") );
181 TQToolTip::add( buttonTestPlaySoundEffect1, i18n("Play") );
182 upperRow->addWidget( buttonTestPlaySoundEffect1, 6, 2 );
183
184 connect( buttonTestPlaySoundEffect1, TQ_SIGNAL( clicked() ), this, TQ_SLOT( playSound1() ) );
185
186 buttonTestStopSoundEffect1 = new TQPushButton( grp1 );
187 buttonTestStopSoundEffect1->setIconSet( SmallIconSet("media-playback-stop") );
188 TQToolTip::add( buttonTestStopSoundEffect1, i18n("Stop") );
189 upperRow->addWidget( buttonTestStopSoundEffect1, 6, 3 );
190
191 connect( buttonTestStopSoundEffect1, TQ_SIGNAL( clicked() ), this, TQ_SLOT( stopSound1() ) );
192
193
194 disappear = new TQCheckBox( i18n( "Disappear" ), page );
195 disappear->setChecked( obj->getDisappear() );
196 topLayout->addWidget(disappear);
197
198 TQGroupBox *grp2 = new TQGroupBox(0, TQt::Vertical, i18n( "Disappear" ), page);
199 grp2->layout()->setSpacing(KDialog::spacingHint());
200 grp2->layout()->setMargin(KDialog::marginHint());
201 topLayout->addWidget(grp2);
202 TQGridLayout *lowerRow = new TQGridLayout(grp2->layout(), 5, 4);
203
204 lDisappear = new TQLabel( i18n( "Order of disappearance:" ), grp2 );
205 lDisappear->setAlignment( AlignVCenter );
206 lowerRow->addWidget(lDisappear, 0, 0);
207
208 eDisappearStep = new TQSpinBox( 0, 100, 1, grp2 );
209 eDisappearStep->setValue( obj->getDisappearStep() );
210 lowerRow->addWidget(eDisappearStep, 0, 1);
211
212 lDEffect = new TQLabel( i18n( "Effect (disappearing):" ), grp2 );
213 lDEffect->setAlignment( AlignVCenter );
214 lowerRow->addWidget(lDEffect, 1, 0);
215
216 cDisappear = new TQComboBox( false, grp2, "cDisappear" );
217 cDisappear->insertItem( i18n( "No Effect" ) );
218 cDisappear->insertItem( i18n( "Disappear to Right" ) );
219 cDisappear->insertItem( i18n( "Disappear to Left" ) );
220 cDisappear->insertItem( i18n( "Disappear to Top" ) );
221 cDisappear->insertItem( i18n( "Disappear to Bottom" ) );
222 cDisappear->insertItem( i18n( "Disappear to Right/Top" ) );
223 cDisappear->insertItem( i18n( "Disappear to Right/Bottom" ) );
224 cDisappear->insertItem( i18n( "Disappear to Left/Top" ) );
225 cDisappear->insertItem( i18n( "Disappear to Left/Bottom" ) );
226 cDisappear->insertItem( i18n( "Wipe to Left" ) );
227 cDisappear->insertItem( i18n( "Wipe to Right" ) );
228 cDisappear->insertItem( i18n( "Wipe to Top" ) );
229 cDisappear->insertItem( i18n( "Wipe to Bottom" ) );
230 cDisappear->setCurrentItem( static_cast<int>( obj->getEffect3() ) );
231 lowerRow->addWidget(cDisappear, 1, 1);
232
233 connect( cDisappear, TQ_SIGNAL( activated( int ) ), this, TQ_SLOT( disappearEffectChanged( int ) ) );
234
235 lDisappearSpeed = new TQLabel( i18n( "Speed:" ), grp2 );
236 lDisappearSpeed->setAlignment( AlignVCenter );
237 lowerRow->addWidget(lDisappearSpeed, 2, 0);
238
239 cDisappearSpeed = new TQComboBox( false, grp2, "cEffect" );
240 cDisappearSpeed->insertItem( i18n( "Slow" ) );
241 cDisappearSpeed->insertItem( i18n( "Medium" ) );
242 cDisappearSpeed->insertItem( i18n( "Fast" ) );
243 cDisappearSpeed->setCurrentItem( static_cast<int>( obj->getDisappearSpeed() ) );
244 lowerRow->addWidget(cDisappearSpeed, 2, 1);
245
246 //appearEffectChanged( cEffect->currentItem() );
247
248 TQLabel *lTimerOfDisappear = new TQLabel( i18n( "Timer of the object:" ), grp2 );
249 lTimerOfDisappear->setAlignment( AlignVCenter );
250 lowerRow->addWidget( lTimerOfDisappear, 3, 0 );
251
252 timerOfDisappear = new KIntNumInput( obj->getDisappearTimer(), grp2 );
253 timerOfDisappear->setRange( 1, 600, 1 );
254 timerOfDisappear->setSuffix( i18n( " seconds" ) );
255 lowerRow->addWidget( timerOfDisappear, 3, 1 );
256
257 if ( view->kPresenterDoc()->spManualSwitch() )
258 timerOfDisappear->setEnabled( false );
259
260
261 // setup the Sound Effect stuff
262 disappearSoundEffect = new TQCheckBox( i18n( "Sound effect" ), grp2 );
263 disappearSoundEffect->setChecked( obj->getDisappearSoundEffect() );
264 lowerRow->addWidget( disappearSoundEffect, 4, 0 );
265 disappearSoundEffect->setEnabled( disappear->isChecked() );
266
267 connect( disappearSoundEffect, TQ_SIGNAL( clicked() ), this, TQ_SLOT( disappearSoundEffectChanged() ) );
268
269 lSoundEffect2 = new TQLabel( i18n( "File name:" ), grp2 );
270 lSoundEffect2->setAlignment( AlignVCenter );
271 lowerRow->addWidget( lSoundEffect2, 5, 0 );
272
273 requester2 = new KURLRequester( grp2 );
274 requester2->setURL( obj->getDisappearSoundEffectFileName() );
275 lowerRow->addWidget( requester2, 5, 1 );
276
277 connect( requester2, TQ_SIGNAL( openFileDialog( KURLRequester * ) ),
278 this, TQ_SLOT( slotRequesterClicked( KURLRequester * ) ) );
279
280 connect( requester2, TQ_SIGNAL( textChanged( const TQString& ) ),
281 this, TQ_SLOT( slotDisappearFileChanged( const TQString& ) ) );
282
283 buttonTestPlaySoundEffect2 = new TQPushButton( grp2 );
284 buttonTestPlaySoundEffect2->setIconSet( SmallIconSet("1rightarrow") );
285 TQToolTip::add( buttonTestPlaySoundEffect2, i18n("Play") );
286 lowerRow->addWidget( buttonTestPlaySoundEffect2, 5, 2 );
287
288 connect( buttonTestPlaySoundEffect2, TQ_SIGNAL( clicked() ), this, TQ_SLOT( playSound2() ) );
289
290 buttonTestStopSoundEffect2 = new TQPushButton( grp2 );
291 buttonTestStopSoundEffect2->setIconSet( SmallIconSet("media-playback-stop") );
292 TQToolTip::add( buttonTestStopSoundEffect2, i18n("Stop") );
293 lowerRow->addWidget( buttonTestStopSoundEffect2, 5, 3 );
294
295 connect( buttonTestStopSoundEffect2, TQ_SIGNAL( clicked() ), this, TQ_SLOT( stopSound2() ) );
296
297
298 topLayout->activate();
299
300 connect( this, TQ_SIGNAL( okClicked() ), this, TQ_SLOT( slotEffectDiaOk() ) );
301 connect( this, TQ_SIGNAL( okClicked() ), this, TQ_SLOT( accept() ) );
302 connect( disappear, TQ_SIGNAL( clicked() ), this, TQ_SLOT( disappearChanged() ) );
303 disappearChanged();
304 appearSoundEffectChanged();
305}
306
307KPrEffectDia::~KPrEffectDia()
308{
309 stopSound1();
310 stopSound2();
311
312 delete soundPlayer1;
313 delete soundPlayer2;
314}
315
316void KPrEffectDia::slotEffectDiaOk()
317{
318 TQValueList<KPrEffectCmd::EffectStruct> oldEffects;
319 for ( unsigned int i = 0; i < objs.count(); ++i ) {
320 KPrObject *o = objs.at( i );
321 KPrEffectCmd::EffectStruct e;
322 e.appearStep = o->getAppearStep();
323 e.disappearStep = o->getDisappearStep();
324 e.effect = o->getEffect();
325 e.effect2 = o->getEffect2();
326 e.effect3 = o->getEffect3();
327 e.m_appearSpeed = o->getAppearSpeed();
328 e.m_disappearSpeed = o->getDisappearSpeed();
329 e.disappear = o->getDisappear();
330 e.appearTimer = o->getAppearTimer();
331 e.disappearTimer = o->getDisappearTimer();
332 e.appearSoundEffect = o->getAppearSoundEffect();
333 e.disappearSoundEffect = o->getDisappearSoundEffect();
334 e.a_fileName = o->getAppearSoundEffectFileName();
335 e.d_fileName = o->getDisappearSoundEffectFileName();
336 oldEffects << e;
337 }
338
339 KPrEffectCmd::EffectStruct eff;
340 eff.appearStep = eAppearStep->value();
341 eff.disappearStep = eDisappearStep->value();
342 eff.effect = ( Effect )cEffect->currentItem();
343 eff.effect2 = ( Effect2 )cEffect2->currentItem();
344 eff.effect3 = ( Effect3 )cDisappear->currentItem();
345 eff.m_appearSpeed = ( EffectSpeed )cAppearSpeed->currentItem();
346 eff.m_disappearSpeed = ( EffectSpeed )cDisappearSpeed->currentItem();
347 eff.disappear = disappear->isChecked();
348 eff.appearTimer = timerOfAppear->value();
349 eff.disappearTimer = timerOfDisappear->value();
350 eff.appearSoundEffect = (requester1->url().isEmpty() ? false : appearSoundEffect->isChecked());
351 eff.disappearSoundEffect = (requester2->url().isEmpty() ? false : disappearSoundEffect->isChecked());
352 eff.a_fileName = requester1->url();
353 eff.d_fileName = requester2->url();
354
355 KPrEffectCmd *effectCmd = new KPrEffectCmd( i18n( "Assign Object Effects" ), objs, oldEffects, eff );
356 effectCmd->execute();
357 view->kPresenterDoc()->addCommand( effectCmd );
358 accept();
359}
360
361void KPrEffectDia::resizeEvent( TQResizeEvent *e )
362{
363 TQDialog::resizeEvent( e );
364 //topLayout->resize( size() );
365}
366
367void KPrEffectDia::disappearChanged()
368{
369 cDisappear->setEnabled( disappear->isChecked() );
370 eDisappearStep->setEnabled( disappear->isChecked() );
371 disappearSoundEffect->setEnabled( disappear->isChecked() );
372 disappearSoundEffectChanged();
373 disappearEffectChanged( cDisappear->currentItem() );
374
375 if ( !view->kPresenterDoc()->spManualSwitch() )
376 timerOfDisappear->setEnabled( disappear->isChecked() );
377}
378
379void KPrEffectDia::appearEffectChanged( int /*num*/ )
380{
381 bool b = ( cEffect->currentItem() != 0 );
382 lAppearSpeed->setEnabled( b );
383 cAppearSpeed->setEnabled( b );
384}
385
386void KPrEffectDia::disappearEffectChanged( int /*num*/ )
387{
388 bool b = ( cDisappear->currentItem() !=0 && disappear->isChecked() );
389 lDisappearSpeed->setEnabled( b );
390 cDisappearSpeed->setEnabled( b );
391}
392
393void KPrEffectDia::appearSoundEffectChanged()
394{
395 lSoundEffect1->setEnabled( appearSoundEffect->isChecked() );
396 requester1->setEnabled( appearSoundEffect->isChecked() );
397
398 if ( !requester1->url().isEmpty() ) {
399 buttonTestPlaySoundEffect1->setEnabled( appearSoundEffect->isChecked() );
400 buttonTestStopSoundEffect1->setEnabled( appearSoundEffect->isChecked() );
401 }
402 else {
403 buttonTestPlaySoundEffect1->setEnabled( false );
404 buttonTestStopSoundEffect1->setEnabled( false );
405 }
406}
407
408void KPrEffectDia::disappearSoundEffectChanged()
409{
410 lSoundEffect2->setEnabled( disappear->isChecked() && disappearSoundEffect->isChecked() );
411 requester2->setEnabled( disappear->isChecked() && disappearSoundEffect->isChecked() );
412
413 if ( !requester2->url().isEmpty() ) {
414 buttonTestPlaySoundEffect2->setEnabled( disappear->isChecked() && disappearSoundEffect->isChecked() );
415 buttonTestStopSoundEffect2->setEnabled( disappear->isChecked() && disappearSoundEffect->isChecked() );
416 }
417 else {
418 buttonTestPlaySoundEffect2->setEnabled( false );
419 buttonTestStopSoundEffect2->setEnabled( false );
420 }
421}
422
423void KPrEffectDia::slotRequesterClicked( KURLRequester *requester )
424{
425 TQString filter = getSoundFileFilter();
426 requester->fileDialog()->setFilter( filter );
427
428 // find the first "sound"-resource that contains files
429 TQStringList soundDirs = TDEGlobal::dirs()->resourceDirs( "sound" );
430 if ( !soundDirs.isEmpty() ) {
431 KURL soundURL;
432 TQDir dir;
433 dir.setFilter( TQDir::Files | TQDir::Readable );
434 TQStringList::ConstIterator it = soundDirs.begin();
435 while ( it != soundDirs.end() ) {
436 dir = *it;
437 if ( dir.isReadable() && dir.count() > 2 ) {
438 soundURL.setPath( *it );
439 requester->fileDialog()->setURL( soundURL );
440 break;
441 }
442 ++it;
443 }
444 }
445}
446
447void KPrEffectDia::slotAppearFileChanged( const TQString &text )
448{
449 buttonTestPlaySoundEffect1->setEnabled( !text.isEmpty() );
450 buttonTestStopSoundEffect1->setEnabled( !text.isEmpty() );
451}
452
453void KPrEffectDia::slotDisappearFileChanged( const TQString &text )
454{
455 buttonTestPlaySoundEffect2->setEnabled( !text.isEmpty() );
456 buttonTestStopSoundEffect2->setEnabled( !text.isEmpty() );
457}
458
459void KPrEffectDia::playSound1()
460{
461 delete soundPlayer1;
462 soundPlayer1 = new KPrSoundPlayer( requester1->url() );
463 soundPlayer1->play();
464
465 buttonTestPlaySoundEffect1->setEnabled( false );
466 buttonTestStopSoundEffect1->setEnabled( true );
467}
468
469void KPrEffectDia::playSound2()
470{
471 delete soundPlayer2;
472 soundPlayer2 = new KPrSoundPlayer( requester2->url() );
473 soundPlayer2->play();
474
475 buttonTestPlaySoundEffect2->setEnabled( false );
476 buttonTestStopSoundEffect2->setEnabled( true );
477}
478
479void KPrEffectDia::stopSound1()
480{
481 if ( soundPlayer1 ) {
482 soundPlayer1->stop();
483 delete soundPlayer1;
484 soundPlayer1 = 0;
485
486 buttonTestPlaySoundEffect1->setEnabled( true );
487 buttonTestStopSoundEffect1->setEnabled( false );
488 }
489}
490
491void KPrEffectDia::stopSound2()
492{
493 if ( soundPlayer2 ) {
494 soundPlayer2->stop();
495 delete soundPlayer2;
496 soundPlayer2 = 0;
497
498 buttonTestPlaySoundEffect2->setEnabled( true );
499 buttonTestStopSoundEffect2->setEnabled( false );
500 }
501}
502
503TQString KPrEffectDia::getSoundFileFilter() const
504{
505 TQStringList fileList;
506 fileList << "wav" << "au" << "mp3" << "mp1" << "mp2" << "mpg" << "dat"
507 << "mpeg" << "ogg" << "cdda" << "cda " << "vcd" << "null";
508 fileList.sort();
509
510 bool comma = false;
511 TQString full, str;
512 for ( TQStringList::ConstIterator it = fileList.begin(); it != fileList.end(); ++it ) {
513 if ( comma )
514 str += '\n';
515 comma = true;
516 str += TQString( i18n( "*.%1|%2 Files" ) ).arg( *it ).arg( (*it).upper() );
517
518 full += TQString( "*.") + (*it) + ' ';
519 }
520
521 str = full + '|' + i18n( "All Supported Files" ) + '\n' + str;
522 str += "\n*|" + i18n( "All Files" );
523
524 return str;
525}
526
527#include "KPrEffectDia.moc"