kword

KWFrameStyleManager.cpp
1/* This file is part of the KDE project
2 Copyright (C) 2002 Nash Hoogwater <nrhoogwater@wanadoo.nl>
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; using
7 version 2 of the License.
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 "KWFrameStyleManager.h"
21#include "KWFrameStyleManager.moc"
22#include "KWImportStyleDia.h"
23
24#include "KWDocument.h"
25#include "KWFrameDia.h" // for KWBrushStylePreview
26
27#include <KoParagDia.h>
28
29#include <kcolorbutton.h>
30#include <tdelocale.h>
31#include <kiconloader.h>
32
33#include <tqtabwidget.h>
34#include <tqpushbutton.h>
35#include <tqlabel.h>
36#include <tqbrush.h>
37#include <tqgroupbox.h>
38#include <tqpainter.h>
39#include <tqlayout.h>
40
41/******************************************************************/
42/* Class: KWTableStylePreview */
43/******************************************************************/
44
45#undef ptToPx
46#define ptToPx tqRound
47
48void KWFrameStylePreview::paintEvent( TQPaintEvent * )
49{
50 int wid = ( width() - 20 );
51 int hei = ( height() - 20 );
52
53 TQPainter p;
54 p.begin( this );
55
56 // 1: create borders
57 if (frameStyle->topBorder().width()>0) {
58 p.setPen( KoBorder::borderPen(frameStyle->topBorder(), ptToPx( frameStyle->topBorder().width() ), black) ); // Top border
59 p.drawLine( 10 - int(frameStyle->leftBorder().width()/2), 10,
60 10 + wid + int(frameStyle->rightBorder().width()/2), 10 );
61 }
62 if (frameStyle->leftBorder().width()>0) {
63 p.setPen( KoBorder::borderPen(frameStyle->leftBorder(), ptToPx( frameStyle->leftBorder().width() ), black) ); // Left border
64 p.drawLine( 10, 10 - int(frameStyle->topBorder().width()/2),
65 10 , 10 + hei + int(frameStyle->bottomBorder().width()/2) );
66 }
67 if (frameStyle->bottomBorder().width()>0) {
68 p.setPen( KoBorder::borderPen(frameStyle->bottomBorder(), ptToPx( frameStyle->bottomBorder().width() ), black) ); // Bottom border
69 p.drawLine( 10 + wid + int(ceil(frameStyle->rightBorder().width()/2)), 10 + hei,
70 10 - int(frameStyle->leftBorder().width()/2), 10 + hei );
71 }
72 if (frameStyle->rightBorder().width()>0) {
73 p.setPen( KoBorder::borderPen(frameStyle->rightBorder(), ptToPx( frameStyle->rightBorder().width() ), black) ); // Right border
74 p.drawLine( 10 + wid, 10 - int(frameStyle->topBorder().width()/2) ,
75 10 + wid, 10 + hei + int(frameStyle->bottomBorder().width()/2) );
76 }
77
78 // 2.1: create background
79
80 p.fillRect( TQRect( TQPoint(10 + int(ceil(frameStyle->leftBorder().width()/2)), 10 + int(ceil(frameStyle->topBorder().width()/2))),
81 TQPoint(10 + wid - int(floor(frameStyle->rightBorder().width()/2)+1), 10 + hei - int(floor(frameStyle->bottomBorder().width()/2)+1)) ),
82 frameStyle->backgroundColor() );
83
84 p.end();
85}
86
87void KWFrameStylePreview::setFrameStyle( KWFrameStyle *_frameStyle )
88{
89 if (!frameStyle) frameStyle = new KWFrameStyle("preview");
90
91 frameStyle = _frameStyle;
92
93 repaint( true );
94}
95
96/******************************************************************/
97/* Class: KWFrameStyleListItem */
98/******************************************************************/
99
100KWFrameStyleListItem::~KWFrameStyleListItem()
101{
102 delete m_changedFrameStyle;
103}
104
105void KWFrameStyleListItem::switchStyle()
106{
107 delete m_changedFrameStyle;
108 m_changedFrameStyle = 0;
109
110 if ( m_origFrameStyle )
111 m_changedFrameStyle = new KWFrameStyle( *m_origFrameStyle );
112}
113
114void KWFrameStyleListItem::deleteStyle( KWFrameStyle *current )
115{
116 Q_ASSERT( m_changedFrameStyle == current );
117 delete m_changedFrameStyle;
118 m_changedFrameStyle = 0;
119}
120
121void KWFrameStyleListItem::apply()
122{
123 *m_origFrameStyle = *m_changedFrameStyle;
124}
125
126/******************************************************************/
127/* Class: KWFrameStyleManager */
128/******************************************************************/
129
130KWFrameStyleManager::KWFrameStyleManager( TQWidget *_parent, KWDocument *_doc,
131 const TQString & activeStyleName )
132 : KDialogBase( _parent, "", true,
133 i18n("Frame Style Manager"),
134 KDialogBase::Ok | KDialogBase::Cancel | KDialogBase::Apply| KDialogBase::User1 )
135{
136 m_doc = _doc;
137
138 m_currentFrameStyle = 0;
139 noSignals=true;
140
141 m_frameStyles.setAutoDelete(false);
142
143 setupWidget(); // build the widget with the buttons and the list selector.
144
145 addGeneralTab();
146
147 KWFrameStyleBordersTab *bordersTab = new KWFrameStyleBordersTab( m_tabs );
148 bordersTab->setWidget( new KoParagDecorationWidget( bordersTab ) );
149 addTab( bordersTab );
150
151 KWFrameStyleBackgroundTab *bgTab = new KWFrameStyleBackgroundTab( m_tabs );
152 addTab( bgTab );
153
154 TQListBoxItem * item = m_stylesList->findItem( activeStyleName );
155 m_stylesList->setCurrentItem( item ? m_stylesList->index(item) : 0 );
156
157 noSignals=false;
158 switchStyle();
159 setInitialSize( TQSize( 600, 370 ) );
160 setButtonText( KDialogBase::User1, i18n("Import From File...") );
161 connect(this, TQ_SIGNAL(user1Clicked()), this, TQ_SLOT(importFromFile()));
162}
163
164KWFrameStyleManager::~KWFrameStyleManager()
165{
166 m_frameStyles.setAutoDelete( true );
167 m_frameStyles.clear();
168}
169
170void KWFrameStyleManager::addTab( KWFrameStyleManagerTab * tab )
171{
172 m_tabsList.append( tab );
173 m_tabs->insertTab( tab, tab->tabName() );
174}
175
176void KWFrameStyleManager::setupWidget()
177{
178 TQFrame * frame1 = makeMainWidget();
179 TQGridLayout *frame1Layout = new TQGridLayout( frame1, 0, 0, // auto
180 0, KDialog::spacingHint() );
181 KWFrameStyleCollection* collection = m_doc->frameStyleCollection();
182 numFrameStyles = collection->count();
183 m_stylesList = new TQListBox( frame1, "stylesList" );
184 m_stylesList->insertStringList( collection->displayNameList() );
185 const TQValueList<KoUserStyle*> styleList = collection->styleList();
186 for ( TQValueList<KoUserStyle *>::const_iterator it = styleList.begin(), end = styleList.end();
187 it != end ; ++it )
188 {
189 KWFrameStyle* style = static_cast<KWFrameStyle *>( *it );
190 m_frameStyles.append( new KWFrameStyleListItem( style, new KWFrameStyle(*style) ) );
191 m_styleOrder << style->name();
192 }
193 Q_ASSERT( m_stylesList->count() == m_styleOrder.count() );
194 Q_ASSERT( m_styleOrder.count() == m_frameStyles.count() );
195
196 frame1Layout->addMultiCellWidget( m_stylesList, 0, 0, 0, 1 );
197
198
199 m_moveUpButton = new TQPushButton( frame1, "moveUpButton" );
200 m_moveUpButton->setIconSet( SmallIconSet( "go-up" ) );
201 connect( m_moveUpButton, TQ_SIGNAL( clicked() ), this, TQ_SLOT( moveUpStyle() ) );
202 frame1Layout->addWidget( m_moveUpButton, 1, 1 );
203
204 m_moveDownButton = new TQPushButton( frame1, "moveDownButton" );
205 m_moveDownButton->setIconSet( SmallIconSet( "go-down" ) );
206 connect( m_moveDownButton, TQ_SIGNAL( clicked() ), this, TQ_SLOT( moveDownStyle() ) );
207 frame1Layout->addWidget( m_moveDownButton, 1, 0 );
208
209
210 m_deleteButton = new TQPushButton( frame1, "deleteButton" );
211 m_deleteButton->setText( i18n( "&Delete" ) );
212 connect( m_deleteButton, TQ_SIGNAL( clicked() ), this, TQ_SLOT( deleteStyle() ) );
213
214 frame1Layout->addWidget( m_deleteButton, 2, 1 );
215
216 m_newButton = new TQPushButton( frame1, "newButton" );
217 m_newButton->setText( i18n( "New" ) );
218 connect( m_newButton, TQ_SIGNAL( clicked() ), this, TQ_SLOT( addStyle() ) );
219
220 frame1Layout->addWidget( m_newButton, 2, 0 );
221
222 m_tabs = new TQTabWidget( frame1 );
223 frame1Layout->addMultiCellWidget( m_tabs, 0, 2, 2, 2 );
224
225 connect( m_stylesList, TQ_SIGNAL( selectionChanged() ), this, TQ_SLOT( switchStyle() ) );
226 connect( m_tabs, TQ_SIGNAL( currentChanged ( TQWidget * ) ), this, TQ_SLOT( switchTabs() ) );
227}
228
229void KWFrameStyleManager::addGeneralTab()
230{
231 TQWidget *tab = new TQWidget( m_tabs );
232
233 TQGridLayout *tabLayout = new TQGridLayout( tab );
234 tabLayout->setSpacing( KDialog::spacingHint() );
235 tabLayout->setMargin( KDialog::marginHint() );
236
237 previewBox = new TQGroupBox( 0, TQt::Vertical, i18n( "Preview" ), tab );
238 previewBox->layout()->setSpacing(KDialog::spacingHint());
239 previewBox->layout()->setMargin(KDialog::marginHint());
240 TQGridLayout *previewLayout = new TQGridLayout( previewBox->layout() );
241
242 preview = new KWFrameStylePreview( previewBox );
243 preview->resize(preview->sizeHint());
244
245 previewLayout->addWidget( preview, 0, 0 );
246
247 tabLayout->addMultiCellWidget( previewBox, 1, 1, 0, 1 );
248
249 m_nameString = new TQLineEdit( tab );
250 m_nameString->resize(m_nameString->sizeHint() );
251 connect( m_nameString, TQ_SIGNAL( textChanged( const TQString &) ), this, TQ_SLOT( renameStyle(const TQString &) ) );
252
253 tabLayout->addWidget( m_nameString, 0, 1 );
254
255 TQLabel *nameLabel = new TQLabel( tab );
256 nameLabel->setText( i18n( "Name:" ) );
257 nameLabel->resize(nameLabel->sizeHint());
258 nameLabel->setAlignment( AlignRight | AlignVCenter );
259
260 tabLayout->addWidget( nameLabel, 0, 0 );
261
262 m_tabs->insertTab( tab, i18n( "General" ) );
263}
264
265void KWFrameStyleManager::switchStyle()
266{
267 kdDebug() << "KWFrameStyleManager::switchStyle noSignals=" << noSignals << endl;
268 if(noSignals) return;
269 noSignals=true;
270
271 if(m_currentFrameStyle !=0L)
272 save();
273
274 m_currentFrameStyle = 0L;
275 int num = frameStyleIndex( m_stylesList->currentItem() );
276
277 kdDebug() << "KWFrameStyleManager::switchStyle switching to " << num << endl;
278 if( m_frameStyles.at(num)->origFrameStyle() == m_frameStyles.at(num)->changedFrameStyle() )
279 m_frameStyles.at(num)->switchStyle();
280 else
281 m_currentFrameStyle = m_frameStyles.at(num)->changedFrameStyle();
282
283 updateGUI();
284
285 noSignals=false;
286}
287
288void KWFrameStyleManager::switchTabs()
289{
290 save();
291 updatePreview();
292}
293
294int KWFrameStyleManager::frameStyleIndex( int pos ) {
295 int p = 0;
296 for(unsigned int i=0; i < m_frameStyles.count(); i++) {
297 // Skip deleted styles, they're no in m_stylesList anymore
298 KWFrameStyle * style = m_frameStyles.at(i)->changedFrameStyle();
299 if ( !style ) continue;
300 if ( p == pos )
301 return i;
302 ++p;
303 }
304 kdWarning() << "KWFrameStyleManager::frameStyleIndex no style found at pos " << pos << " count=" << m_frameStyles.count() << endl;
305
306#ifdef __GNUC_
307#warning implement undo/redo
308#endif
309
310 return 0;
311}
312
313void KWFrameStyleManager::updateGUI()
314{
315 kdDebug() << "KWFrameStyleManager::updateGUI m_currentFrameStyle=" << m_currentFrameStyle << " " << m_currentFrameStyle->name() << endl;
316 TQPtrListIterator<KWFrameStyleManagerTab> it( m_tabsList );
317 for ( ; it.current() ; ++it )
318 {
319 it.current()->setStyle( m_currentFrameStyle );
320 it.current()->update();
321 }
322
323 m_nameString->setText(m_currentFrameStyle->displayName());
324
325 // update delete button (can't delete first style);
326 m_deleteButton->setEnabled(m_stylesList->currentItem() != 0);
327
328 m_moveUpButton->setEnabled(m_stylesList->currentItem() != 0);
329 m_moveDownButton->setEnabled(m_stylesList->currentItem()!=(int)m_stylesList->count()-1);
330
331 updatePreview();
332}
333
334void KWFrameStyleManager::updatePreview()
335{
336 preview->setFrameStyle(m_currentFrameStyle);
337}
338
339void KWFrameStyleManager::save() {
340 if(m_currentFrameStyle) {
341 // save changes from UI to object.
342 TQPtrListIterator<KWFrameStyleManagerTab> it( m_tabsList );
343 for ( ; it.current() ; ++it )
344 it.current()->save();
345
346 m_currentFrameStyle->setDisplayName( m_nameString->text() );
347 }
348}
349
350void KWFrameStyleManager::importFromFile()
351{
352 // ## why not just use collection->displayNameList()?
353 TQStringList lst;
354 for ( int i = 0; i<(int)m_stylesList->count();i++)
355 {
356 lst << m_stylesList->text(i);
357 }
358
359 KWImportFrameTableStyleDia dia( m_doc, lst, KWImportFrameTableStyleDia::frameStyle, this, 0 );
360 if ( dia.listOfFrameStyleImported().count() > 0 && dia.exec() ) {
361 addStyles( dia.listOfFrameStyleImported() );
362 }
363}
364
365void KWFrameStyleManager::addStyles( const TQPtrList<KWFrameStyle> &listStyle )
366{
367 save();
368
369 TQPtrListIterator<KWFrameStyle> style( listStyle );
370 for ( ; style.current() ; ++style )
371 {
372 noSignals=true;
373 m_stylesList->insertItem( style.current()->displayName() );
374 m_frameStyles.append( new KWFrameStyleListItem( 0L,new KWFrameStyle(*style.current())) );
375 m_styleOrder<<style.current()->name();
376 noSignals=false;
377
378 }
379 updateGUI();
380}
381
382void KWFrameStyleManager::addStyle()
383{
384 save();
385
386 TQString str = i18n( "New Framestyle Template (%1)" ).arg(numFrameStyles++);
387 if ( m_currentFrameStyle )
388 {
389 m_currentFrameStyle = new KWFrameStyle( *m_currentFrameStyle ); // Create a new style, initializing from the current one
390 m_currentFrameStyle->setDisplayName( str );
391 m_currentFrameStyle->setName( m_doc->frameStyleCollection()->generateUniqueName() );
392 }
393 else
394 m_currentFrameStyle = new KWFrameStyle( str );
395
396 noSignals=true;
397 m_frameStyles.append(new KWFrameStyleListItem(0L,m_currentFrameStyle));
398 m_stylesList->insertItem( str );
399 m_styleOrder<< str;
400 m_stylesList->setCurrentItem( m_stylesList->count() - 1 );
401 noSignals=false;
402
403 updateGUI();
404}
405
406void KWFrameStyleManager::deleteStyle()
407{
408 unsigned int cur = frameStyleIndex( m_stylesList->currentItem() );
409 m_styleOrder.remove( m_stylesList->currentText());
410 if ( !m_frameStyles.at(cur)->origFrameStyle() )
411 m_frameStyles.take(cur );
412 else {
413 m_frameStyles.at( cur )->deleteStyle( m_currentFrameStyle );
414 m_currentFrameStyle = 0L;
415 }
416
417 // Adjust GUI
418 m_stylesList->removeItem(m_stylesList->currentItem());
419 numFrameStyles--;
420 m_stylesList->setSelected( m_stylesList->currentItem(), true );
421}
422
423void KWFrameStyleManager::moveUpStyle()
424{
425 if(m_currentFrameStyle !=0L)
426 save();
427 unsigned int pos = 0;
428 TQString currentStyleName = m_stylesList->currentText();
429 if ( currentStyleName.isEmpty() )
430 return;
431 int pos2 = m_styleOrder.findIndex( currentStyleName );
432 if ( pos2 > 0 ) // neither -1 nor 0
433 {
434 m_styleOrder.remove( m_styleOrder.at(pos2));
435 m_styleOrder.insert( m_styleOrder.at(pos2-1), currentStyleName);
436 }
437
438
439 pos=m_stylesList->currentItem();
440 noSignals=true;
441 m_stylesList->changeItem( m_stylesList->text ( pos-1 ),pos);
442
443 m_stylesList->changeItem( currentStyleName ,pos-1);
444
445 m_stylesList->setCurrentItem( m_stylesList->currentItem() );
446 noSignals=false;
447
448 updateGUI();
449}
450
451void KWFrameStyleManager::moveDownStyle()
452{
453 if(m_currentFrameStyle !=0L)
454 save();
455 unsigned int pos = 0;
456 TQString currentStyleName=m_stylesList->currentText ();
457 if ( currentStyleName.isEmpty() )
458 return;
459
460 int pos2 = m_styleOrder.findIndex( currentStyleName );
461 if ( pos2 != -1 )
462 {
463 m_styleOrder.remove( m_styleOrder.at(pos2));
464 m_styleOrder.insert( m_styleOrder.at(pos2+1), currentStyleName);
465 }
466
467 pos=m_stylesList->currentItem();
468 noSignals=true;
469 m_stylesList->changeItem( m_stylesList->text ( pos+1 ),pos);
470 m_stylesList->changeItem( currentStyleName ,pos+1);
471 m_stylesList->setCurrentItem( m_stylesList->currentItem() );
472 noSignals=false;
473
474 updateGUI();
475}
476
477void KWFrameStyleManager::slotOk()
478{
479 save();
480 apply();
481 KDialogBase::slotOk();
482}
483
484void KWFrameStyleManager::slotApply()
485{
486 save();
487 apply();
488 KDialogBase::slotApply();
489}
490
491void KWFrameStyleManager::apply()
492{
493 // ##### missing: undo/redo support
494 noSignals=true;
495 for (unsigned int i =0 ; i < m_frameStyles.count() ; i++) {
496 if(m_frameStyles.at(i)->origFrameStyle() == 0) { // newly added style
497
498 kdDebug() << "adding new " << m_frameStyles.at(i)->changedFrameStyle()->name() << " (" << i << ")" << endl;
499
500 KWFrameStyle* style = m_doc->frameStyleCollection()->addStyle(m_frameStyles.take(i)->changedFrameStyle());
501 m_frameStyles.insert( i, new KWFrameStyleListItem(0, style) );
502
503 } else if(m_frameStyles.at(i)->changedFrameStyle() == 0) { // deleted style
504
505 kdDebug() << "deleting orig " << m_frameStyles.at(i)->origFrameStyle()->name() << " (" << i << ")" << endl;
506
507 KWFrameStyle *orig = m_frameStyles.at(i)->origFrameStyle();
508 m_doc->frameStyleCollection()->removeStyle( orig );
509
510 } else {
511
512 kdDebug() << "update style " << m_frameStyles.at(i)->changedFrameStyle()->name() << " (" << i << ")" << endl;
513 // TODO check if modified, so that we can do m_doc->setModified(true) only if a style was changed
514 m_frameStyles.at(i)->apply();
515 }
516 }
517 m_doc->frameStyleCollection()->updateStyleListOrder( m_styleOrder );
518 m_doc->updateAllFrameStyleLists();
519 m_doc->setModified( true );
520 noSignals=false;
521}
522
523void KWFrameStyleManager::renameStyle(const TQString &theText) {
524 if(noSignals) return;
525 noSignals=true;
526
527 int index = m_stylesList->currentItem();
528 kdDebug() << "KWFrameStyleManager::renameStyle " << index << " to " << theText << endl;
529
530 // rename only in the GUI, not even in the underlying objects (save() does it).
531 m_stylesList->changeItem( theText, index );
532 m_styleOrder[index]=theText;
533
534 // Check how many styles with that name we have now
535 int synonyms = 0;
536 for ( uint i = 0; i < m_stylesList->count(); i++ ) {
537 if ( m_stylesList->text( i ) == m_stylesList->currentText() )
538 ++synonyms;
539 }
540 Q_ASSERT( synonyms > 0 ); // should have found 'index' at least !
541 noSignals=false;
542 // Can't close the dialog if two styles have the same name
543 bool state=!theText.isEmpty() && (synonyms == 1);
544 enableButtonOK(state );
545 enableButtonApply(state);
546 m_deleteButton->setEnabled(state&&(m_stylesList->currentItem() != 0));
547 m_newButton->setEnabled(state);
548 m_stylesList->setEnabled( state );
549 enableButton( KDialogBase::User1, state );
550
551 if ( state )
552 {
553 m_moveUpButton->setEnabled(m_stylesList->currentItem() != 0);
554 m_moveDownButton->setEnabled(m_stylesList->currentItem()!=(int)m_stylesList->count()-1);
555 }
556 else
557 {
558 m_moveUpButton->setEnabled(false);
559 m_moveDownButton->setEnabled(false);
560 }
561}
562
563/******************************************************************/
564/* Class: KWFrameStyleBackgroundTab */
565/******************************************************************/
566
567KWFrameStyleBackgroundTab::KWFrameStyleBackgroundTab( TQWidget * parent )
568 : KWFrameStyleManagerTab( parent )
569{
570 bgwidget = this;
571 m_backgroundColor.setStyle( TQt::SolidPattern );
572
573 grid = new TQGridLayout( bgwidget, 7, 2, KDialog::marginHint(), KDialog::spacingHint() );
574
575 int row=0;
576
577 brushPreview = new KWBrushStylePreview( bgwidget );
578 grid->addMultiCellWidget(brushPreview,row,5,1,1);
579
580 TQLabel *l = new TQLabel( i18n( "Frame background color:" ), bgwidget );
581
582 grid->addWidget(l,row++,0);
583
584 brushColor = new KColorButton( TQt::white, bgwidget );
585 grid->addWidget(brushColor,row++,0);
586
587 connect( brushColor, TQ_SIGNAL( changed( const TQColor & ) ),
588 this, TQ_SLOT( updateBrushConfiguration( const TQColor & ) ) );
589
590 TQSpacerItem* spacer = new TQSpacerItem( 10, 10, TQSizePolicy::Minimum, TQSizePolicy::Expanding);
591 grid->addItem( spacer,row,0 );
592
593 updateBrushConfiguration( TQt::white );
594}
595
596void KWFrameStyleBackgroundTab::updateBrushConfiguration( const TQColor & _color )
597{
598 m_backgroundColor.setColor( _color );
599 brushPreview->show();
600 brushPreview->setBrush( m_backgroundColor );
601 brushPreview->repaint(true);
602}
603
604TQString KWFrameStyleBackgroundTab::tabName()
605{
606 return i18n("Background");
607}
608
609void KWFrameStyleBackgroundTab::update()
610{
611 brushColor->setColor( m_style->backgroundColor().color() );
612 updateBrushConfiguration( m_style->backgroundColor().color() );
613}
614
615void KWFrameStyleBackgroundTab::save()
616{
617 m_style->setBackgroundColor( m_backgroundColor );
618}
619
620/******************************************************************/
621/* Class: KWFrameStyleBordersTab */
622/******************************************************************/
623
624KWFrameStyleBordersTab::KWFrameStyleBordersTab( TQWidget * parent )
625 : KWFrameStyleManagerTab( parent )
626{
627 m_widget = 0L;
628 m_borders = new KoParagLayout();
629}
630
631KWFrameStyleBordersTab::~KWFrameStyleBordersTab()
632{
633 delete m_borders;
634}
635
636TQString KWFrameStyleBordersTab::tabName()
637{
638 return m_widget->tabName();
639}
640
641void KWFrameStyleBordersTab::update()
642{
643 m_borders->leftBorder = m_style->leftBorder();
644 m_borders->rightBorder = m_style->rightBorder();
645 m_borders->topBorder = m_style->topBorder();
646 m_borders->bottomBorder = m_style->bottomBorder();
647
648
649 m_widget->display( *m_borders );
650}
651
652void KWFrameStyleBordersTab::save()
653{
654 m_widget->save( *m_borders );
655 m_style->setLeftBorder( m_borders->leftBorder );
656 m_style->setRightBorder( m_borders->rightBorder );
657 m_style->setTopBorder( m_borders->topBorder );
658 m_style->setBottomBorder( m_borders->bottomBorder );
659}
660
661void KWFrameStyleBordersTab::setWidget( KoParagLayoutWidget * widget )
662{
663 m_widget = widget;
664}
665
666void KWFrameStyleBordersTab::resizeEvent( TQResizeEvent *e )
667{
668 TQWidget::resizeEvent( e );
669 if ( m_widget ) m_widget->resize( size() );
670}
671
Collection of frame styles.
The user-visible style for frames (borders and background)