21#include "KWFrameDia.h"
22#include "KWTextFrameSet.h"
23#include "KWDocument.h"
24#include "KWFrameDia.moc"
26#include "KWTableFrameSet.h"
27#include "KWPageManager.h"
29#include "KWPictureFrameSet.h"
31#include <KoSetPropCommand.h>
32#include <KoParagDia_p.h>
36#include <kiconloader.h>
37#include <tdemessagebox.h>
38#include <knumvalidator.h>
39#include <kcolorbutton.h>
42#include <tqwhatsthis.h>
43#include <tqlineedit.h>
44#include <tqcheckbox.h>
45#include <tqcombobox.h>
46#include <tqhbuttongroup.h>
48#include <tqradiobutton.h>
49#include <tqlistview.h>
50#include <tqbuttongroup.h>
61KWBrushStylePreview::KWBrushStylePreview( TQWidget* parent )
66void KWBrushStylePreview::drawContents( TQPainter* painter )
69 painter->translate( contentsRect().x(), contentsRect().y() );
70 painter->fillRect( contentsRect(), colorGroup().base() );
71 painter->fillRect( contentsRect(), brush );
95KWFrameDia::KWFrameDia( TQWidget* parent,
KWFrame *frame)
96 : KDialogBase( Tabbed, TQString(), Ok | Apply| Cancel, Ok, parent,
"framedialog", true)
102 kdDebug() <<
"ERROR: KWFrameDia::constructor no frame.."<<endl;
105 setCaption( i18n(
"Frame Properties for %1" ).arg( m_frame->frameSet()->name() ) );
107 if(fs==0L) fs=m_frame->frameSet();
108 m_frameType = fs->
type();
110 m_frameSetProtectedSize = fs->isProtectSize();
111 m_mainFrameSetIncluded = fs->isMainFrameset();
112 m_defaultFrameSetIncluded = fs->isMainFrameset() || fs->isHeaderOrFooter() || fs->isFootEndNote();
113 if ( m_mainFrameSetIncluded )
114 m_mainFrame = m_frame;
121KWFrameDia::KWFrameDia( TQWidget* parent,
KWFrame *frame, KWDocument *doc, FrameSetType ft )
122 : KDialogBase( Tabbed, i18n(
"Frame Properties for New Frame"), Ok | Cancel, Ok, parent,
"framedialog", true)
128 m_frameSetFloating =
false;
129 m_frameSetProtectedSize =
false;
130 m_mainFrameSetIncluded =
false;
131 m_defaultFrameSetIncluded =
false;
133 kdDebug() <<
"ERROR: KWFrameDia::constructor no m_frame.."<<endl;
140KWFrameDia::KWFrameDia( TQWidget *parent, TQPtrList<KWFrame> listOfFrames) : KDialogBase( Tabbed, i18n(
"Frames Properties"), Ok | Apply | Cancel, Ok, parent,
"framedialog", true) , m_allFrames() {
143 m_mainFrame = m_frame = 0L;
144 m_tab1 = m_tab2 = m_tab3 = m_tab4 = m_tab5 = m_tab6 = 0;
146 KWFrame *f=listOfFrames.first();
148 kdDebug() <<
"ERROR: KWFrameDia::constructor no frames.."<<endl;
151 if ( listOfFrames.count() == 1 )
152 setCaption( i18n(
"Frame Settings for %1" ).arg( f->
frameSet()->
name() ) );
156 m_frameType = fs->
type();
157 bool frameTypeUnset=
true;
158 m_doc = fs->kWordDocument();
160 if( !fs->isMainFrameset() ) {
161 m_allFrames.append(f);
162 frameTypeUnset=false;
167 f=listOfFrames.next();
169 fs = f->frameSet()->groupmanager();
170 if(fs==0L) fs=f->frameSet();
171 if(m_doc->processingType() != KWDocument::WP || m_doc->frameSet(0) != fs) {
172 if(!frameTypeUnset && m_frameType != fs->type()) m_frameType= FT_TEXT;
174 m_frameType = fs->type();
175 frameTypeUnset = false;
176 } else if(m_frameType != fs->type()) m_frameType= FT_TEXT;
177 m_allFrames.append(f);
179 f=listOfFrames.next();
181 if(m_allFrames.count()==0)
182 m_allFrames.append(listOfFrames.first());
185 m_mainFrameSetIncluded =
false;
186 m_defaultFrameSetIncluded =
false;
187 for ( f = m_allFrames.first(); f; f = m_allFrames.next() ) {
189 if ( !m_mainFrameSetIncluded )
191 m_mainFrameSetIncluded = fs->isMainFrameset();
192 if ( m_mainFrameSetIncluded )
195 if ( !m_defaultFrameSetIncluded )
196 m_defaultFrameSetIncluded = fs->isMainFrameset() || fs->isHeaderOrFooter() || fs->isFootEndNote();
203void KWFrameDia::init() {
205 m_tab1 = m_tab2 = m_tab3 = m_tab4 = m_tab5 = m_tab6 = 0;
210 fs = m_frame->frameSet();
211 KoRect r = m_frame->normalize();
212 m_frame->setRect( r.x(), r.y(), r.width(), r.height() );
216 m_doc = fs->kWordDocument();
220 kdDebug() <<
"ERROR: KWFrameDia::init frame has no reference to m_doc.."<<endl;
223 if( fs && fs->isMainFrameset() )
229 else if ( fs && (fs->isHeaderOrFooter() || fs->isFootEndNote()) )
232 if ( !fs->isMainFrameset() && !fs->isHeaderOrFooter() && !fs->isFootEndNote())
238 else if(m_frameType == FT_TEXT)
241 if ( fs && !fs->isMainFrameset() && !fs->isHeaderOrFooter() && !fs->isFootEndNote())
252 else if(m_frameType == FT_PICTURE)
255 if ( m_frameType == FT_PICTURE )
262 else if(m_frameType == FT_PART)
269 else if(m_frameType == FT_FORMULA)
278 else if(m_frameType == FT_TABLE)
284 setInitialSize( TQSize(550, 400) );
287void KWFrameDia::setupTab1(){
289 m_tab1 = addPage( i18n(
"Options") );
291 if(m_frameType == FT_FORMULA || m_frameType == FT_PICTURE)
293 else if(m_frameType == FT_TEXT)
296 m_grid1 =
new TQGridLayout( m_tab1, 0 , columns, 0, KDialog::spacingHint() );
299 m_cbCopy =
new TQCheckBox( i18n(
"Frame is a copy of the previous frame"),m_tab1 );
300 m_grid1->addWidget(m_cbCopy,1,0);
303 m_cbCopy->setChecked( m_frame->isCopy() );
304 m_cbCopy->setEnabled( m_frame->frameSet() && m_frame->frameSet()->frame( 0 ) != m_frame );
306 KWFrame *f=m_allFrames.first();
310 f=m_allFrames.next();
313 if(checked != f->
isCopy()) show=
false;
314 f=m_allFrames.next();
317 m_cbCopy->setTristate();
318 m_cbCopy->setNoChange();
320 else m_cbCopy->setChecked(checked);
321 m_cbCopy->setEnabled( enabled );
325 if(m_frameType!=FT_TEXT)
326 m_cbCopy->setEnabled(
false );
332 if(m_frameType==FT_PICTURE)
334 m_cbAspectRatio =
new TQCheckBox (i18n(
"Retain original aspect ratio"),m_tab1);
335 connect( m_cbAspectRatio, TQ_SIGNAL(toggled(
bool)),
336 this, TQ_SLOT(slotKeepRatioToggled(
bool)));
340 if ( m_frame->frameSet() )
341 on=
static_cast<KWPictureFrameSet *
>( m_frame->frameSet() )->keepAspectRatio();
343 KWFrame *f=m_allFrames.first();
344 KWPictureFrameSet *fs =
dynamic_cast<KWPictureFrameSet *
> (f->
frameSet());
346 on=fs->keepAspectRatio();
347 f=m_allFrames.next();
349 KWPictureFrameSet *fs =
dynamic_cast<KWPictureFrameSet *
> (f->
frameSet());
351 if(on != fs->keepAspectRatio()) {
355 f=m_allFrames.next();
358 m_cbAspectRatio->setChecked( on );
360 m_cbAspectRatio->setTristate();
361 m_cbAspectRatio->setNoChange();
363 m_grid1->addWidget(m_cbAspectRatio, row, 0);
367 m_cbAspectRatio = 0L;
370 if(m_frameType==FT_TEXT)
373 m_endOfFrame =
new TQGroupBox(i18n(
"If Text is Too Long for Frame"), m_tab1 );
374 m_grid1->addWidget( m_endOfFrame, row, 0 );
376 m_eofGrid=
new TQGridLayout (m_endOfFrame, 4, 1, KDialog::marginHint(), KDialog::spacingHint());
377 m_rAppendFrame =
new TQRadioButton( i18n(
"Create a new page" ), m_endOfFrame );
378 TQWhatsThis::add( m_rAppendFrame,
"<b>Create a new page:</b><br/> if there is too "
379 "much text for this text frame, a new page will be created and, "
380 "since \"Reconnect frame to current flow\" is the only possible "
381 "option together with this one, "
382 "the new page will have a frame for showing the additional text." );
383 m_eofGrid->addWidget( m_rAppendFrame, 1, 0 );
385 m_rResizeFrame =
new TQRadioButton( i18n(
"Resize last frame" ), m_endOfFrame );
386 TQWhatsThis::add( m_rResizeFrame,
"<b>Resize last frame:</b><br/> "
387 "if there is too much text for this text frame, "
388 "the frame will resize itself (increasing its height) as much as it needs, "
389 "to be able to contain all the text. More precisely, when the frameset has "
390 "multiple chained frames, it's always the last one which will be resized." );
391 m_eofGrid->addWidget( m_rResizeFrame, 2, 0 );
393 m_rNoShow =
new TQRadioButton( i18n(
"Don't show the extra text" ), m_endOfFrame );
394 TQWhatsThis::add( m_rNoShow,
"<b>Don't show the extra text:</b><br/> "
395 "if there is too much text for this text frame, nothing happens "
396 "automatically. Initially the extra text won't appear. One possibility "
397 "then is to resize the frame manually. The other possibility is, with the option "
398 "\"Reconnect frame to current flow\" selected, to create a new page "
399 "which will then have a followup frame with the extra text." );
400 m_eofGrid->addWidget( m_rNoShow, 3, 0 );
401 TQButtonGroup *grp =
new TQButtonGroup( m_endOfFrame );
403 grp->setExclusive(
true );
404 grp->insert( m_rAppendFrame );
405 grp->insert( m_rResizeFrame );
406 grp->insert( m_rNoShow );
408 m_eofGrid->addRowSpacing( 0, KDialog::marginHint() + 5 );
412 fb = m_frame->frameBehavior();
414 KWFrame *f=m_allFrames.first();
415 fb = f->frameBehavior();
416 f=m_allFrames.next();
418 if(fb != f->frameBehavior()) {
422 f=m_allFrames.next();
426 if(fb == KWFrame::AutoExtendFrame) {
427 m_rResizeFrame->setChecked(
true);
428 }
else if (fb == KWFrame::AutoCreateNewFrame) {
429 m_rAppendFrame->setChecked(
true);
431 m_rNoShow->setChecked(
true);
442 m_onNewPage =
new TQGroupBox(i18n(
"On New Page Creation"),m_tab1);
443 m_grid1->addWidget( m_onNewPage, row, column );
445 m_onpGrid =
new TQGridLayout( m_onNewPage, 4, 1, KDialog::marginHint(), KDialog::spacingHint() );
446 m_reconnect =
new TQRadioButton (i18n (
"Reconnect frame to current flow"), m_onNewPage);
447 TQWhatsThis::add(m_reconnect, i18n(
"<b>Reconnect frame to current flow:</b><br/>"
448 "When a new page is created, a new frame will be created for this "
449 "frameset, so that the text can flow from one page to the next if necessary. "
450 "This is what happens for the \"main text frameset\", but this option makes it possible "
451 "to choose the same behavior for other framesets, for instance in magazine layouts."));
452 if ( m_rResizeFrame )
453 connect( m_reconnect, TQ_SIGNAL( clicked() ),
this, TQ_SLOT( setFrameBehaviorInputOn() ) );
454 m_onpGrid->addRowSpacing( 0, KDialog::marginHint() + 5 );
455 m_onpGrid->addWidget( m_reconnect, 1, 0 );
457 m_noFollowup =
new TQRadioButton (i18n (
"Do not create a followup frame"), m_onNewPage);
458 TQWhatsThis::add(m_noFollowup, i18n(
"<b>Do not create a followup frame:</b><br/>"
459 "When a new page is created, no frame will be created for this frameset."));
460 if ( m_rResizeFrame )
461 connect( m_noFollowup, TQ_SIGNAL( clicked() ),
this, TQ_SLOT( setFrameBehaviorInputOn() ) );
462 m_onpGrid->addWidget( m_noFollowup, 2, 0 );
464 m_copyRadio=
new TQRadioButton (i18n (
"Place a copy of this frame"), m_onNewPage);
465 TQWhatsThis::add(m_copyRadio, i18n(
"<b>Place a copy of this frame:</b><br/>"
466 "When a new page is created, a frame will be created for this frameset, "
467 "which will always show the exact same thing as the frame on the previous "
468 "page. This is what happens for headers and footers, but this option "
469 "makes it possible to choose the same behavior for other framesets, for "
470 "instance a company logo and/or title that should appear exactly the same on every page."));
471 if ( m_rResizeFrame )
472 connect( m_copyRadio, TQ_SIGNAL( clicked() ),
this, TQ_SLOT( setFrameBehaviorInputOff() ) );
473 m_onpGrid->addWidget( m_copyRadio, 3, 0);
475 enableOnNewPageOptions();
477 TQButtonGroup *grp2 =
new TQButtonGroup( m_onNewPage );
479 grp2->setExclusive(
true );
480 grp2->insert( m_reconnect );
481 grp2->insert( m_noFollowup );
482 grp2->insert( m_copyRadio );
483 m_grid1->addRowSpacing( row, m_onNewPage->height());
487 nfb = m_frame->newFrameBehavior();
489 KWFrame *f=m_allFrames.first();
490 nfb = f->newFrameBehavior();
491 f=m_allFrames.next();
493 if(nfb != f->newFrameBehavior()) {
497 f=m_allFrames.next();
501 if(nfb == KWFrame::Reconnect) {
502 m_reconnect->setChecked(
true);
503 }
else if(nfb == KWFrame::NoFollowup) {
504 m_noFollowup->setChecked(
true);
506 m_copyRadio->setChecked(
true);
507 setFrameBehaviorInputOff();
513 if(
false && m_frameType == FT_TEXT )
516 m_sideHeads =
new TQGroupBox(i18n(
"SideHead Definition"),m_tab1);
517 m_sideHeads->setEnabled(
false);
518 m_grid1->addWidget(m_sideHeads, row, 0);
520 m_sideGrid =
new TQGridLayout( m_sideHeads, 4, 2, KDialog::marginHint(), KDialog::spacingHint() );
521 sideTitle1 =
new TQLabel ( i18n(
"Size (%1):").arg(m_doc->unitName()),m_sideHeads);
522 sideTitle1->resize(sideTitle1->sizeHint());
523 m_sideGrid->addWidget(sideTitle1,1,0);
524 m_sideWidth=
new TQLineEdit(m_sideHeads,
"");
525 m_sideWidth->setMaxLength(6);
526 m_sideGrid->addWidget(m_sideWidth,1,1);
527 sideTitle2 =
new TQLabel( i18n(
"Gap size (%1):").arg(m_doc->unitName()),m_sideHeads);
528 sideTitle2->resize(sideTitle2->sizeHint());
529 m_sideGrid->addWidget(sideTitle2,2,0);
530 m_sideGap =
new TQLineEdit(m_sideHeads,
"");
531 m_sideGap->setMaxLength(6);
532 m_sideGrid->addWidget(m_sideGap,2,1);
533 m_sideAlign =
new TQComboBox (
false,m_sideHeads);
534 m_sideAlign->setAutoResize(
false);
535 m_sideAlign->insertItem ( i18n(
"Left"));
536 m_sideAlign->insertItem ( i18n(
"Right"));
537 m_sideAlign->insertItem ( i18n(
"Closest to Binding"));
538 m_sideAlign->insertItem ( i18n(
"Closest to Page Edge"));
539 m_sideAlign->resize(m_sideAlign->sizeHint());
540 m_sideGrid->addMultiCellWidget(m_sideAlign,3,3,0,1);
541 m_sideGrid->addRowSpacing( 0, KDialog::marginHint() + 5 );
544 m_sideWidth->setText(
"0");
545 m_sideWidth->setValidator(
new KFloatValidator(0,9999,
true, m_sideWidth) );
547 m_sideGap->setText(
"0");
548 m_sideGap->setValidator(
new KFloatValidator(0,9999,
true, m_sideGap) );
552 m_cbAllFrames =
new TQCheckBox (i18n(
"Changes will be applied to all frames in frameset"),m_tab1);
553 m_cbAllFrames->setChecked(m_frame!=0L);
555 m_grid1->addMultiCellWidget(m_cbAllFrames,row,row, 0, 1);
556 m_cbProtectContent =
new TQCheckBox( i18n(
"Protect content"), m_tab1);
557 TQWhatsThis::add(m_cbProtectContent, i18n(
"<b>Protect content:</b><br/>"
558 "Disallow changes to be made to the contents of the frame(s)."));
559 connect( m_cbProtectContent, TQ_SIGNAL(toggled (
bool ) ),
this, TQ_SLOT(slotProtectContentChanged(
bool )));
561 m_grid1->addMultiCellWidget(m_cbProtectContent,row,row, 0, 1);
562 if( m_frameType != FT_TEXT || m_frame!=0 && m_frame->frameSet()==0) {
563 m_cbAllFrames->setChecked(
false);
564 m_cbAllFrames->hide();
565 m_cbProtectContent->setChecked(
false );
566 m_cbProtectContent->hide();
568 else if ( m_frameType == FT_TEXT )
574 if ( m_frame->frameSet() )
575 on=
static_cast<KWTextFrameSet *
>(m_frame->frameSet() )->textObject()->protectContent();
579 KWFrame *f=m_allFrames.first();
580 KWTextFrameSet *fs =
dynamic_cast<KWTextFrameSet *
> (f->
frameSet());
583 f=m_allFrames.next();
585 KWTextFrameSet *fs =
dynamic_cast<KWTextFrameSet *
> (f->
frameSet());
594 f=m_allFrames.next();
597 m_cbProtectContent->setChecked( on );
599 m_cbProtectContent->setTristate();
600 m_cbProtectContent->setNoChange();
604 for(
int i=0;i < row;i++)
605 m_grid1->setRowStretch( i, 0 );
606 m_grid1->setRowStretch( row + 1, 1 );
609void KWFrameDia::setupTab2() {
610 m_tab2 = addPage( i18n(
"Text Run Around" ) );
612 TQVBoxLayout *tabLayout =
new TQVBoxLayout( m_tab2, 0, KDialog::spacingHint(),
"tabLayout");
615 m_runGroup =
new TQButtonGroup( i18n(
"Layout of Text in Other Frames" ), m_tab2);
616 m_runGroup->setColumnLayout( 0, TQt::Vertical );
617 m_runGroup->layout()->setSpacing( KDialog::spacingHint() );
618 TQGridLayout *groupBox1Layout =
new TQGridLayout( m_runGroup->layout() );
619 groupBox1Layout->setAlignment( TQt::AlignTop );
621 m_rRunNo =
new TQRadioButton( i18n(
"Text will run &through this frame" ), m_runGroup );
622 groupBox1Layout->addWidget( m_rRunNo, 0, 1 );
624 m_rRunBounding =
new TQRadioButton( i18n(
"Text will run &around the frame" ), m_runGroup );
625 groupBox1Layout->addWidget( m_rRunBounding, 1, 1 );
627 m_rRunSkip =
new TQRadioButton( i18n(
"Text will ¬ run around this frame" ), m_runGroup );
628 groupBox1Layout->addWidget( m_rRunSkip, 2, 1 );
630 TQPixmap pixmap = KWBarIcon(
"run_not" );
631 TQLabel *lRunNo =
new TQLabel( m_runGroup );
632 lRunNo->setBackgroundPixmap( pixmap );
633 lRunNo->setFixedSize( pixmap.size() );
634 groupBox1Layout->addWidget( lRunNo, 0, 0 );
636 pixmap = KWBarIcon(
"run_bounding" );
637 TQLabel *lRunBounding =
new TQLabel( m_runGroup );
638 lRunBounding->setBackgroundPixmap( pixmap );
639 lRunBounding->setFixedSize( pixmap.size() );
640 groupBox1Layout->addWidget( lRunBounding, 1, 0 );
642 pixmap = KWBarIcon(
"run_skip" );
643 TQLabel *lRunSkip =
new TQLabel( m_runGroup );
644 lRunSkip->setBackgroundPixmap( pixmap );
645 lRunSkip->setFixedSize( pixmap.size() );
646 groupBox1Layout->addWidget( lRunSkip, 2, 0 );
648 tabLayout->addWidget( m_runGroup );
651 m_runSideGroup =
new TQButtonGroup( i18n(
"Run Around Side" ), m_tab2);
652 m_runSideGroup->setColumnLayout( 0, TQt::Vertical );
653 m_runSideGroup->layout()->setSpacing( KDialog::spacingHint() );
654 m_runSideGroup->layout()->setMargin( KDialog::marginHint() );
655 TQGridLayout *runSideLayout =
new TQGridLayout( m_runSideGroup->layout() );
656 runSideLayout->setAlignment( TQt::AlignTop );
658 m_rRunLeft =
new TQRadioButton( i18n(
"Run Around",
"&Left" ), m_runSideGroup );
659 runSideLayout->addWidget( m_rRunLeft, 0, 0 );
661 m_rRunRight =
new TQRadioButton( i18n(
"Run Around",
"&Right" ), m_runSideGroup );
662 runSideLayout->addWidget( m_rRunRight, 1, 0 );
664 m_rRunBiggest =
new TQRadioButton( i18n(
"Run Around",
"Lon&gest side" ), m_runSideGroup );
665 runSideLayout->addWidget( m_rRunBiggest, 2, 0 );
668 TQPixmap pixmap = KWBarIcon(
"run_left" );
669 TQLabel *label =
new TQLabel( m_runSideGroup );
670 label->setBackgroundPixmap( pixmap );
671 label->setFixedSize( pixmap.size() );
672 runSideLayout->addWidget( label, 0, 0 );
674 pixmap = KWBarIcon(
"run_right" );
675 label =
new TQLabel( m_runSideGroup );
676 label->setBackgroundPixmap( pixmap );
677 label->setFixedSize( pixmap.size() );
678 runSideLayout->addWidget( label, 1, 0 );
680 pixmap = KWBarIcon(
"run_biggest" );
681 label =
new TQLabel( m_runSideGroup );
682 label->setBackgroundPixmap( pixmap );
683 label->setFixedSize( pixmap.size() );
684 runSideLayout->addWidget( label, 2, 0 );
687 tabLayout->addWidget( m_runSideGroup );
689 m_raDistConfigWidget =
new KWFourSideConfigWidget( m_doc, i18n(
"Distance Between Frame && Text"), m_tab2 );
691 m_raDistConfigWidget->setValues( TQMAX(0.00, m_frame->runAroundLeft()),
692 TQMAX(0.00, m_frame->runAroundRight()),
693 TQMAX(0.00, m_frame->runAroundTop()),
694 TQMAX(0.00, m_frame->runAroundBottom()) );
695 tabLayout->addWidget( m_raDistConfigWidget );
705 ra = m_frame->runAround();
707 KWFrame *f=m_allFrames.first();
709 f=m_allFrames.next();
711 if(ra != f->runAround()) show=
false;
712 f=m_allFrames.next();
718 case KWFrame::RA_NO: m_rRunNo->setChecked(
true );
break;
719 case KWFrame::RA_BOUNDINGRECT: m_rRunBounding->setChecked(
true );
break;
720 case KWFrame::RA_SKIP: m_rRunSkip->setChecked(
true );
break;
728 rs = m_frame->runAroundSide();
730 KWFrame *f=m_allFrames.first();
731 rs = f->runAroundSide();
732 f = m_allFrames.next();
734 if(rs != f->runAroundSide()) show=
false;
735 f=m_allFrames.next();
741 case KWFrame::RA_LEFT: m_rRunLeft->setChecked(
true );
break;
742 case KWFrame::RA_RIGHT: m_rRunRight->setChecked(
true );
break;
743 case KWFrame::RA_BIGGEST: m_rRunBiggest->setChecked(
true );
break;
749 double ragapLeft = 0;
750 double ragapRight = 0;
752 double ragapBottom = 0;
754 ragapLeft = m_frame->runAroundLeft();
755 ragapRight = m_frame->runAroundRight();
756 ragapTop = m_frame->runAroundTop();
757 ragapBottom = m_frame->runAroundBottom();
760 KWFrame *f = m_allFrames.first();
761 ragapLeft = f->runAroundLeft();
762 ragapRight = f->runAroundRight();
763 ragapTop = f->runAroundTop();
764 ragapBottom = f->runAroundBottom();
765 for( f = m_allFrames.next() ; f ; f = m_allFrames.next() ) {
766 if( ragapLeft != f->runAroundLeft() ||
767 ragapRight != f->runAroundRight() ||
768 ragapTop != f->runAroundTop() ||
769 ragapBottom != f->runAroundBottom() )
771 f = m_allFrames.next();
776 m_raDistConfigWidget->setValues( ragapLeft, ragapRight, ragapTop, ragapBottom );
781 connect( m_runGroup, TQ_SIGNAL( clicked(
int) ),
this, TQ_SLOT( enableRunAround() ) );
784void KWFrameDia::setupTab3(){
793 m_tab3 = addPage( i18n(
"Connect Text Frames" ) );
795 TQVBoxLayout *tabLayout =
new TQVBoxLayout( m_tab3, 0, KDialog::spacingHint());
797 TQButtonGroup *myGroup =
new TQButtonGroup(
this);
800 m_rExistingFrameset =
new TQRadioButton( m_tab3,
"m_rExistingFrameset" );
801 m_rExistingFrameset->setText( i18n(
"Select existing frameset to connect frame to:") );
802 tabLayout->addWidget( m_rExistingFrameset );
803 myGroup->insert(m_rExistingFrameset,1);
804 connect (m_rExistingFrameset, TQ_SIGNAL( toggled(
bool)),
this, TQ_SLOT(ensureValidFramesetSelected()));
806 TQHBoxLayout *layout2 =
new TQHBoxLayout( 0, 0, 6);
807 TQSpacerItem* spacer =
new TQSpacerItem( 20, 20, TQSizePolicy::Minimum, TQSizePolicy::Expanding );
808 layout2->addItem( spacer );
810 m_lFrameSList =
new TQListView( m_tab3,
"m_lFrameSList" );
811 m_lFrameSList->addColumn( i18n(
"No.") );
812 m_lFrameSList->addColumn( i18n(
"Frameset Name") );
813 m_lFrameSList->setAllColumnsShowFocus(
true );
814 m_lFrameSList->header()->setMovingEnabled(
false );
815 connect( m_lFrameSList, TQ_SIGNAL(selectionChanged ()),
this,TQ_SLOT(selectExistingFrameset ()) );
816 connect (m_lFrameSList, TQ_SIGNAL( selectionChanged()),
this, TQ_SLOT(ensureValidFramesetSelected()));
818 layout2->addWidget( m_lFrameSList );
819 tabLayout->addLayout( layout2 );
821 m_rNewFrameset =
new TQRadioButton( m_tab3);
822 m_rNewFrameset->setText( i18n(
"Create a new frameset" ) );
823 tabLayout->addWidget( m_rNewFrameset );
824 myGroup->insert(m_rNewFrameset,2);
826 TQFrame *line1 =
new TQFrame( m_tab3 );
827 line1->setProperty(
"frameShape", (
int)TQFrame::HLine );
828 line1->setFrameShadow( TQFrame::Plain );
829 line1->setFrameShape( TQFrame::HLine );
830 tabLayout->addWidget( line1 );
832 TQHBoxLayout *layout1 =
new TQHBoxLayout( 0, 0, 6 );
833 TQLabel *textLabel1 =
new TQLabel( m_tab3 );
834 textLabel1->setText( i18n(
"Name of frameset:" ) );
835 layout1->addWidget( textLabel1 );
837 m_eFrameSetName =
new TQLineEdit( m_tab3 );
838 layout1->addWidget( m_eFrameSetName );
839 tabLayout->addLayout( layout1 );
843 for (
unsigned int i = 0; i < m_doc->frameSetCount(); i++ ) {
844 KWFrameSet * fs = m_doc->frameSet( i );
845 if ( i == 0 && m_doc->processingType() == KWDocument::WP )
847 if ( fs->
type() != FT_TEXT || fs->isHeaderOrFooter() )
855 TQListViewItem *item =
new TQListViewItem( m_lFrameSList );
856 item->setText( 0, TQString(
"%1" ).arg( i + 1 ) );
857 item->setText( 1, fs->
name() );
859 if( m_frame && m_frame->frameSet() == fs ) {
860 m_lFrameSList->setSelected(item,
true );
861 m_oldFrameSetName = fs->
name();
862 m_rExistingFrameset->setChecked(
true);
866 m_rNewFrameset->setChecked(
false);
867 m_rNewFrameset->setEnabled(
false);
868 m_rExistingFrameset->setEnabled(
false);
869 m_lFrameSList->setEnabled(
false);
873 if ( m_allFrames.count() > 1 ) {
874 m_rNewFrameset->setChecked(
false);
875 m_rNewFrameset->setEnabled(
false);
876 myGroup->setRadioButtonExclusive(
false );
878 if(m_frame && m_frame->frameSet() == 0) {
879 m_oldFrameSetName = m_doc->generateFramesetName( i18n(
"Text Frameset %1" ) );
880 m_rNewFrameset->setChecked(
true);
882 m_eFrameSetName->setText( m_oldFrameSetName );
884 connect( m_lFrameSList, TQ_SIGNAL( currentChanged( TQListViewItem * ) ),
885 this, TQ_SLOT( connectListSelected( TQListViewItem * ) ) );
886 connect(m_eFrameSetName, TQ_SIGNAL(textChanged (
const TQString & ) ),
887 this,TQ_SLOT(textNameFrameChanged (
const TQString & ) ) );
888 connect(m_eFrameSetName, TQ_SIGNAL(textChanged (
const TQString & )),
889 this,TQ_SLOT(textNameFrameChanged (
const TQString & ) ));
890 connect( m_rNewFrameset, TQ_SIGNAL(toggled (
bool)),
891 this,TQ_SLOT(selectNewFrameset (
bool)) );
894void KWFrameDia::selectExistingFrameset() {
895 m_rExistingFrameset->setChecked(
true);
898void KWFrameDia::selectNewFrameset(
bool on) {
901 TQListViewItem *frameSetItem = m_lFrameSList->selectedItem();
904 TQString str = frameSetItem->text( 0 );
905 KWFrameSet *fs = m_doc->frameSet(str.toInt() - 1);
907 frameSetItem->setText(1, fs->
name() );
910void KWFrameDia::textNameFrameChanged (
const TQString &text )
912 if(m_rExistingFrameset->isChecked()) {
913 TQListViewItem *item = m_lFrameSList->selectedItem();
916 item->setText(1, text );
918 if(m_rNewFrameset->isChecked() || m_rExistingFrameset->isChecked())
919 enableButtonOK( !text.isEmpty() );
921 enableButtonOK(
true );
924void KWFrameDia::setupTab4() {
927 m_tab4 = addPage( i18n(
"Geometry" ) );
928 TQGridLayout* grid4 =
new TQGridLayout( m_tab4, 5, 1, 0, KDialog::spacingHint() );
930 m_floating =
new TQCheckBox( i18n(
"Frame is inline"), m_tab4 );
932 connect( m_floating, TQ_SIGNAL( toggled(
bool) ),
this, TQ_SLOT( slotFloatingToggled(
bool) ) );
934 grid4->addMultiCellWidget( m_floating, row, row, 0, 1 );
937 m_protectSize =
new TQCheckBox( i18n(
"Protect size and position"), m_tab4);
938 grid4->addMultiCellWidget( m_protectSize, row, row, 0, 1 );
939 connect( m_protectSize, TQ_SIGNAL( toggled(
bool) ),
this, TQ_SLOT( slotProtectSizeToggled(
bool) ) );
960 m_grp1 =
new TQGroupBox( i18n(
"Position"), m_tab4 );
961 TQGridLayout* pGrid =
new TQGridLayout( m_grp1, 3, 4, KDialog::marginHint(), KDialog::spacingHint() );
963 m_lx =
new TQLabel( i18n(
"Left:" ), m_grp1 );
964 m_lx->resize( m_lx->sizeHint() );
965 pGrid->addWidget( m_lx, 1, 0 );
967 m_sx =
new KoUnitDoubleSpinBox( m_grp1, 0, 9999, 1, 0.0, m_doc->unit() );
969 m_sx->resize( m_sx->sizeHint() );
970 pGrid->addWidget( m_sx, 1, 1 );
972 m_ly =
new TQLabel( i18n(
"Top:" ), m_grp1 );
973 m_ly->resize( m_ly->sizeHint() );
974 pGrid->addWidget( m_ly, 1, 2 );
976 m_sy =
new KoUnitDoubleSpinBox( m_grp1, 0, 9999, 1, 0.0, m_doc->unit() );
977 m_sy->resize( m_sy->sizeHint() );
978 pGrid->addWidget( m_sy, 1, 3 );
980 m_lw =
new TQLabel( i18n(
"Width:" ), m_grp1 );
981 m_lw->resize( m_lw->sizeHint() );
982 pGrid->addWidget( m_lw, 2, 0 );
984 m_sw =
new KoUnitDoubleSpinBox( m_grp1, 0, 9999, 1, 0.0, m_doc->unit() );
986 m_sw->resize( m_sw->sizeHint() );
987 connect( m_sw, TQ_SIGNAL(valueChanged(
double)),
988 this, TQ_SLOT(slotUpdateHeightForWidth(
double)) );
990 pGrid->addWidget( m_sw, 2, 1 );
992 m_lh =
new TQLabel( i18n(
"Height:" ), m_grp1 );
993 m_lh->resize( m_lh->sizeHint() );
994 pGrid->addWidget( m_lh, 2, 2 );
996 m_sh =
new KoUnitDoubleSpinBox( m_grp1, 0, 9999, 1, 0.0, m_doc->unit() );
997 connect( m_sh, TQ_SIGNAL(valueChanged(
double)),
998 this, TQ_SLOT(slotUpdateWidthForHeight(
double)) );
1000 m_sh->resize( m_sh->sizeHint() );
1002 pGrid->addWidget( m_sh, 2, 3 );
1004 pGrid->setRowSpacing( 0, KDialog::spacingHint() + 5 );
1007 grid4->addMultiCellWidget( m_grp1, row, row, 0,1 );
1010 m_paddingConfigWidget =
new KWFourSideConfigWidget( m_doc, i18n(
"Margins"), m_tab4 );
1011 m_paddingConfigWidget->setValues( TQMAX(0.00, m_frame->paddingLeft()),
1012 TQMAX(0.00, m_frame->paddingRight()),
1013 TQMAX(0.00, m_frame->paddingTop()),
1014 TQMAX(0.00, m_frame->paddingBottom()) );
1016 grid4->addMultiCellWidget( m_paddingConfigWidget, row, row, 0, 1 );
1018 if ( m_tab1 && m_cbProtectContent )
1020 m_paddingConfigWidget->setEnabled( !m_cbProtectContent->isChecked() );
1025 m_paddingConfigWidget = 0;
1028 initGeometrySettings();
1030 if ( !m_frame || m_defaultFrameSetIncluded ) {
1033 m_sx->setEnabled(
false );
1034 m_sy->setEnabled(
false );
1035 m_lx->setEnabled(
false );
1036 m_ly->setEnabled(
false );
1037 m_lw->setEnabled(
false );
1038 m_lh->setEnabled(
false );
1039 m_floating->setEnabled(
false );
1042 if ( m_defaultFrameSetIncluded || m_mainFrameSetIncluded)
1044 m_sw->setEnabled(
false );
1045 m_sh->setEnabled(
false );
1046 m_grp1->setEnabled(
false );
1049 if ( m_mainFrameSetIncluded )
1052 m_floating->hide( );
1053 m_protectSize->hide();
1058 grid4->setRowStretch( row, 1 );
1061void KWFrameDia::initGeometrySettings()
1067 int pageNum = m_doc->pageManager()->pageNumber(m_frame);
1069 m_sx->setValue( KoUnit::toUserValue( m_frame->x(), m_doc->unit() ) );
1070 m_sy->setValue( KoUnit::toUserValue( m_frame->y() - m_doc->pageManager()->topOfPage(pageNum), m_doc->unit() ) );
1071 m_sw->setValue( KoUnit::toUserValue( m_frame->width(), m_doc->unit() ) );
1072 m_sh->setValue( KoUnit::toUserValue( m_frame->height(), m_doc->unit() ) );
1078 m_oldX = m_sx->value();
1079 m_oldY = m_sy->value();
1080 m_oldW = m_sw->value();
1081 m_oldH = m_sh->value();
1083#ifdef ALLOW_NON_INLINE_TABLES
1084 KWFrameSet * fs = m_frame->frameSet();
1086 m_floating->setText( i18n(
"Table is inline" ) );
1091 m_floating->setChecked( m_frameSetFloating );
1092 m_protectSize->setChecked( m_frameSetProtectedSize);
1095 KWFrame *f=m_allFrames.first();
1097 bool ps=fs->isProtectSize();
1098 m_protectSize->setChecked( ps );
1104 m_floating->setChecked( inlineframe );
1106 double commonWidth = f->width();
1107 double commonHeight = f->height();
1108 m_sw->setEnabled(
true );
1109 m_sh->setEnabled(
true );
1111 f=m_allFrames.next();
1114 if(ps != fs->isProtectSize()) {
1115 m_protectSize->setTristate();
1116 m_protectSize->setNoChange();
1124 m_floating->setTristate();
1125 m_floating->setNoChange();
1128 if ( kAbs( f->width() - commonWidth ) > 1E-6 ) {
1129 kdDebug() << k_funcinfo <<
"width differs:" << f->width() <<
" " << commonWidth << endl;
1130 m_sw->setEnabled(
false );
1132 if ( kAbs( f->height() - commonHeight ) > 1E-6 ) {
1133 kdDebug() << k_funcinfo <<
"height differs:" << f->height() <<
" " << commonHeight << endl;
1134 m_sh->setEnabled(
false );
1137 f=m_allFrames.next();
1140 if ( m_sw->isEnabled() )
1141 m_sw->setValue( KoUnit::toUserValue( commonWidth, m_doc->unit() ) );
1142 if ( m_sh->isEnabled() )
1143 m_sh->setValue( KoUnit::toUserValue( commonHeight, m_doc->unit() ) );
1146#ifdef ALLOW_NON_INLINE_TABLES
1147 m_floating->setText( i18n(
"Table is inline" ) );
1155void KWFrameDia::setupTab5() {
1156 m_tab5 = addPage( i18n(
"Background") );
1157 TQGridLayout* grid5 =
new TQGridLayout( m_tab5, 0 , 2, 0, KDialog::spacingHint() );
1161 m_overwriteColor =
new TQCheckBox (i18n(
"Set new color on all selected frames"), m_tab5);
1162 grid5->addMultiCellWidget(m_overwriteColor,row,row,0,1);
1168 m_transparentCB =
new TQCheckBox( i18n(
"Transparent background" ), m_tab5 );
1169 grid5->addWidget(m_transparentCB,row++,0);
1170 m_transparentCB->setEnabled( !m_mainFrameSetIncluded );
1172 TQLabel *labelBgColor =
new TQLabel( i18n(
"Background color:" ), m_tab5 );
1174 grid5->addWidget(labelBgColor,row++,0);
1176 m_brushColor =
new KColorButton( TQt::white, KWDocument::defaultBgColor(0), m_tab5 );
1177 grid5->addWidget(m_brushColor,row++,0);
1187 l =
new TQLabel( i18n(
"Background style:" ), m_tab5 );
1188 grid5->addWidget(l,row++,0);
1190 brushStyle =
new TQComboBox(
false,m_tab5,
"BStyle" );
1191 grid5->addWidget(brushStyle,row++,0);
1193 brushStyle->insertItem( i18n(
"No Background Fill" ) );
1195 brushStyle->insertItem( i18n(
"100% Fill Pattern" ) );
1197 brushStyle->insertItem( i18n(
"94% Fill Pattern" ) );
1199 brushStyle->insertItem( i18n(
"88% Fill Pattern" ) );
1201 brushStyle->insertItem( i18n(
"63% Fill Pattern" ) );
1203 brushStyle->insertItem( i18n(
"50% Fill Pattern" ) );
1205 brushStyle->insertItem( i18n(
"37% Fill Pattern" ) );
1207 brushStyle->insertItem( i18n(
"12% Fill Pattern" ) );
1209 brushStyle->insertItem( i18n(
"6% Fill Pattern" ) );
1210 brushStyle->insertItem( i18n(
"Horizontal Lines" ) );
1211 brushStyle->insertItem( i18n(
"Vertical Lines" ) );
1212 brushStyle->insertItem( i18n(
"Crossing Lines" ) );
1213 brushStyle->insertItem( i18n(
"Diagonal Lines ( / )" ) );
1214 brushStyle->insertItem( i18n(
"Diagonal Lines ( \\ )" ) );
1215 brushStyle->insertItem( i18n(
"Diagonal Crossing Lines" ) );
1216 connect( brushStyle, TQ_SIGNAL( activated(
int ) ),
1217 this, TQ_SLOT( updateBrushPreview() ) );
1219 updateBrushPreview();
1222 connect( m_transparentCB, TQ_SIGNAL( toggled(
bool ) ), labelBgColor, TQ_SLOT( setDisabled(
bool ) ) );
1223 connect( m_transparentCB, TQ_SIGNAL( toggled(
bool ) ), m_brushColor, TQ_SLOT( setDisabled(
bool ) ) );
1226 TQSpacerItem* spacer =
new TQSpacerItem( 10, 10, TQSizePolicy::Minimum, TQSizePolicy::Expanding);
1227 grid5->addItem( spacer,row,0 );
1230void KWFrameDia::setupTab6()
1232 m_tab6 = addPage( i18n(
"&Borders") );
1234 TQGridLayout *grid =
new TQGridLayout( m_tab6, 8, 2, 0, KDialog::spacingHint() );
1236 TQLabel * lStyle =
new TQLabel( i18n(
"St&yle:" ), m_tab6 );
1237 grid->addWidget( lStyle, 0, 0 );
1239 m_cStyle =
new TQComboBox(
false, m_tab6 );
1240 m_cStyle->insertItem( KoBorder::getStyle( KoBorder::SOLID ) );
1241 m_cStyle->insertItem( KoBorder::getStyle( KoBorder::DASH ) );
1242 m_cStyle->insertItem( KoBorder::getStyle( KoBorder::DOT ) );
1243 m_cStyle->insertItem( KoBorder::getStyle( KoBorder::DASH_DOT ) );
1244 m_cStyle->insertItem( KoBorder::getStyle( KoBorder::DASH_DOT_DOT ) );
1245 m_cStyle->insertItem( KoBorder::getStyle( KoBorder::DOUBLE_LINE ) );
1246 lStyle->setBuddy( m_cStyle );
1247 grid->addWidget( m_cStyle, 1, 0 );
1249 TQLabel * lWidth =
new TQLabel( i18n(
"&Width:" ), m_tab6 );
1250 grid->addWidget( lWidth, 2, 0 );
1252 m_cWidth =
new TQComboBox(
false, m_tab6 );
1253 for(
unsigned int i = 1; i <= 10; i++ )
1254 m_cWidth->insertItem(TQString::number(i));
1255 lWidth->setBuddy( m_cWidth );
1256 grid->addWidget( m_cWidth, 3, 0 );
1258 TQLabel * lColor =
new TQLabel( i18n(
"Co&lor:" ), m_tab6 );
1259 grid->addWidget( lColor, 4, 0 );
1261 m_bColor =
new KColorButton( black,
1265 lColor->setBuddy( m_bColor );
1266 grid->addWidget( m_bColor, 5, 0 );
1268 TQButtonGroup * bb =
new TQHButtonGroup( m_tab6 );
1269 bb->setFrameStyle(TQFrame::NoFrame);
1270 m_bLeft =
new TQPushButton(bb);
1271 m_bLeft->setPixmap( BarIcon(
"borderleft" ) );
1272 m_bLeft->setToggleButton(
true );
1273 m_bRight =
new TQPushButton(bb);
1274 m_bRight->setPixmap( BarIcon(
"borderright" ) );
1275 m_bRight->setToggleButton(
true );
1276 m_bTop =
new TQPushButton(bb);
1277 m_bTop->setPixmap( BarIcon(
"bordertop" ) );
1278 m_bTop->setToggleButton(
true );
1279 m_bBottom =
new TQPushButton(bb);
1280 m_bBottom->setPixmap( BarIcon(
"borderbottom" ) );
1281 m_bBottom->setToggleButton(
true );
1282 grid->addWidget( bb, 6, 0 );
1284 connect( m_bLeft, TQ_SIGNAL( toggled(
bool ) ),
this, TQ_SLOT( brdLeftToggled(
bool ) ) );
1285 connect( m_bRight, TQ_SIGNAL( toggled(
bool ) ),
this, TQ_SLOT( brdRightToggled(
bool ) ) );
1286 connect( m_bTop, TQ_SIGNAL( toggled(
bool ) ),
this, TQ_SLOT( brdTopToggled(
bool ) ) );
1287 connect( m_bBottom, TQ_SIGNAL( toggled(
bool ) ),
this, TQ_SLOT( brdBottomToggled(
bool ) ) );
1289 initBorderSettings();
1291 TQGroupBox *grp=
new TQGroupBox( 0, TQt::Vertical, i18n(
"Preview" ), m_tab6,
"previewgrp" );
1292 grid->addMultiCellWidget( grp , 0, 7, 1, 1 );
1293 grp->layout()->setSpacing(KDialog::spacingHint());
1294 grp->layout()->setMargin(KDialog::marginHint());
1295 m_prev3 =
new KoBorderPreview( grp );
1296 TQVBoxLayout *lay1 =
new TQVBoxLayout( grp->layout() );
1297 lay1->addWidget(m_prev3);
1299 connect( m_prev3, TQ_SIGNAL( choosearea(TQMouseEvent * ) ),
1300 this, TQ_SLOT( slotPressEvent(TQMouseEvent *) ) );
1303 m_prev3->setLeftBorder( m_leftBorder );
1304 m_prev3->setRightBorder( m_rightBorder );
1305 m_prev3->setTopBorder( m_topBorder );
1306 m_prev3->setBottomBorder( m_bottomBorder );
1308 grid->setRowStretch( 7, 1 );
1309 grid->setColStretch( 1, 1 );
1312void KWFrameDia::initBorderSettings()
1314 KWFrame *f = m_mainFrame ? m_mainFrame : ( m_frame ? m_frame : m_allFrames.first() );
1316 m_rightBorder = f->rightBorder();
1317 m_topBorder = f->topBorder();
1318 m_bottomBorder = f->bottomBorder();
1324void KWFrameDia::slotPressEvent(TQMouseEvent *ev)
1326 TQRect r = m_prev3->contentsRect();
1327 TQRect rect(r.x()+OFFSETX,r.y()+OFFSETY,r.width()-OFFSETX,r.y()+OFFSETY+Ko_SPACE);
1328 if(rect.contains(TQPoint(ev->x(),ev->y())))
1330 if( ( ((
int)m_topBorder.penWidth() != m_cWidth->currentText().toInt()) ||(m_topBorder.color != m_bColor->color() )
1331 ||(m_topBorder.getStyle()!=KoBorder::getStyle(m_cStyle->currentText()) )) && m_bTop->isOn() )
1333 m_topBorder.setPenWidth( m_cWidth->currentText().toInt() );
1334 m_topBorder.color = TQColor( m_bColor->color() );
1335 m_topBorder.setStyle(KoBorder::getStyle(m_cStyle->currentText()));
1336 m_prev3->setTopBorder( m_topBorder );
1339 m_bTop->setOn(!m_bTop->isOn());
1341 rect.setCoords(r.x()+OFFSETX,r.height()-OFFSETY-Ko_SPACE,r.width()-OFFSETX,r.height()-OFFSETY);
1342 if(rect.contains(TQPoint(ev->x(),ev->y())))
1344 if( ( ((
int)m_bottomBorder.penWidth() != m_cWidth->currentText().toInt()) ||(m_bottomBorder.color != m_bColor->color() )
1345 ||(m_bottomBorder.getStyle()!=KoBorder::getStyle(m_cStyle->currentText()) )) && m_bBottom->isOn() )
1347 m_bottomBorder.setPenWidth(m_cWidth->currentText().toInt());
1348 m_bottomBorder.color = TQColor( m_bColor->color() );
1349 m_bottomBorder.setStyle(KoBorder::getStyle(m_cStyle->currentText()));
1350 m_prev3->setBottomBorder( m_bottomBorder );
1353 m_bBottom->setOn(!m_bBottom->isOn());
1356 rect.setCoords(r.x()+OFFSETX,r.y()+OFFSETY,r.x()+Ko_SPACE+OFFSETX,r.height()-OFFSETY);
1357 if(rect.contains(TQPoint(ev->x(),ev->y())))
1360 if( ( ((
int)m_leftBorder.penWidth() != m_cWidth->currentText().toInt()) ||(m_leftBorder.color != m_bColor->color() )
1361 ||(m_leftBorder.getStyle()!=KoBorder::getStyle(m_cStyle->currentText()) )) && m_bLeft->isOn() )
1363 m_leftBorder.setPenWidth( m_cWidth->currentText().toInt());
1364 m_leftBorder.color = TQColor( m_bColor->color() );
1365 m_leftBorder.setStyle(KoBorder::getStyle(m_cStyle->currentText()));
1366 m_prev3->setLeftBorder( m_leftBorder );
1369 m_bLeft->setOn(!m_bLeft->isOn());
1371 rect.setCoords(r.width()-OFFSETX-Ko_SPACE,r.y()+OFFSETY,r.width()-OFFSETX,r.height()-OFFSETY);
1372 if(rect.contains(TQPoint(ev->x(),ev->y())))
1375 if( ( ((
int)m_rightBorder.penWidth() != m_cWidth->currentText().toInt()) ||(m_rightBorder.color != m_bColor->color() )
1376 ||(m_rightBorder.getStyle()!=KoBorder::getStyle(m_cStyle->currentText()) )) && m_bRight->isOn() )
1378 m_rightBorder.setPenWidth( m_cWidth->currentText().toInt());
1379 m_rightBorder.color = m_bColor->color();
1380 m_rightBorder.setStyle(KoBorder::getStyle(m_cStyle->currentText()));
1381 m_prev3->setRightBorder( m_rightBorder );
1384 m_bRight->setOn(!m_bRight->isOn());
1392void KWFrameDia::brdLeftToggled(
bool on )
1395 m_leftBorder.setPenWidth(0);
1397 m_leftBorder.setPenWidth(m_cWidth->currentText().toInt());
1398 m_leftBorder.color = m_bColor->color();
1399 m_leftBorder.setStyle(KoBorder::getStyle( m_cStyle->currentText() ));
1401 m_prev3->setLeftBorder( m_leftBorder );
1404void KWFrameDia::brdRightToggled(
bool on )
1407 m_rightBorder.setPenWidth(0);
1409 m_rightBorder.setPenWidth(m_cWidth->currentText().toInt());
1410 m_rightBorder.color = m_bColor->color();
1411 m_rightBorder.setStyle( KoBorder::getStyle( m_cStyle->currentText() ));
1413 m_prev3->setRightBorder( m_rightBorder );
1416void KWFrameDia::brdTopToggled(
bool on )
1419 m_topBorder.setPenWidth(0);
1421 m_topBorder.setPenWidth(m_cWidth->currentText().toInt());
1422 m_topBorder.color = m_bColor->color();
1423 m_topBorder.setStyle(KoBorder::getStyle( m_cStyle->currentText() ));
1425 m_prev3->setTopBorder( m_topBorder );
1428void KWFrameDia::brdBottomToggled(
bool on )
1431 m_bottomBorder.setPenWidth ( 0 );
1433 m_bottomBorder.setPenWidth( m_cWidth->currentText().toInt());
1434 m_bottomBorder.color = m_bColor->color();
1435 m_bottomBorder.setStyle(KoBorder::getStyle(m_cStyle->currentText()));
1437 m_prev3->setBottomBorder( m_bottomBorder );
1440void KWFrameDia::slotProtectContentChanged(
bool b )
1442 if (m_tab4 && !m_noSignal && m_paddingConfigWidget) {
1443 m_paddingConfigWidget->setEnabled( !b );
1447void KWFrameDia::slotUpdateWidthForHeight(
double height)
1449 if ( !m_cbAspectRatio || m_cbAspectRatio->state() != TQButton::NoChange)
1451 if ( m_heightByWidthRatio == 0 )
1453 m_sw->setValue( height / m_heightByWidthRatio );
1457void KWFrameDia::slotUpdateHeightForWidth(
double width )
1459 if ( !m_cbAspectRatio || m_cbAspectRatio->state() != TQButton::NoChange)
1461 m_sh->setValue( width * m_heightByWidthRatio );
1464void KWFrameDia::slotKeepRatioToggled(
bool on)
1466 if ( !on || !m_sw || !m_sh)
return;
1469void KWFrameDia::ensureValidFramesetSelected()
1471 enableButtonOK( m_rNewFrameset->isChecked() || m_rExistingFrameset->isChecked() && m_lFrameSList->selectedItem() != NULL);
1474void KWFrameDia::calcRatio()
1476 if ( m_sw->value() == 0 )
1477 m_heightByWidthRatio = 1.0;
1479 m_heightByWidthRatio = m_sh->value() / m_sw->value();
1482void KWFrameDia::initBrush()
1484 bool allFramesSame=
true;
1486 m_newBrushStyle = m_frame->backgroundColor();
1488 KWFrame *f=m_allFrames.first();
1489 m_newBrushStyle = f->backgroundColor();
1490 f=m_allFrames.next();
1492 if(m_newBrushStyle != f->backgroundColor()) {
1493 allFramesSame=
false;
1496 f=m_allFrames.next();
1498 m_overwriteColor->setChecked(allFramesSame);
1501 m_transparentCB->setChecked( m_newBrushStyle.style() == NoBrush );
1504 switch ( m_newBrushStyle.style() )
1507 brushStyle->setCurrentItem( 0 );
1510 brushStyle->setCurrentItem( 1 );
1513 brushStyle->setCurrentItem( 2 );
1516 brushStyle->setCurrentItem( 3 );
1519 brushStyle->setCurrentItem( 4 );
1522 brushStyle->setCurrentItem( 5 );
1525 brushStyle->setCurrentItem( 6 );
1528 brushStyle->setCurrentItem( 7 );
1531 brushStyle->setCurrentItem( 8 );
1534 brushStyle->setCurrentItem( 9 );
1537 brushStyle->setCurrentItem( 10 );
1540 brushStyle->setCurrentItem( 11 );
1543 brushStyle->setCurrentItem( 12 );
1546 brushStyle->setCurrentItem( 13 );
1548 case DiagCrossPattern:
1549 brushStyle->setCurrentItem( 14 );
1556 TQColor col = KWDocument::resolveBgColor( m_newBrushStyle.color(), 0 );
1557 m_brushColor->setColor( col );
1560TQBrush KWFrameDia::frameBrushStyle()
const
1564 brush.setStyle( m_transparentCB->isChecked() ? TQt::NoBrush : TQt::SolidPattern );
1567 switch ( brushStyle->currentItem() )
1570 brush.setStyle( NoBrush );
1573 brush.setStyle( SolidPattern );
1576 brush.setStyle( Dense1Pattern );
1579 brush.setStyle( Dense2Pattern );
1582 brush.setStyle( Dense3Pattern );
1585 brush.setStyle( Dense4Pattern );
1588 brush.setStyle( Dense5Pattern );
1591 brush.setStyle( Dense6Pattern );
1594 brush.setStyle( Dense7Pattern );
1597 brush.setStyle( HorPattern );
1600 brush.setStyle( VerPattern );
1603 brush.setStyle( CrossPattern );
1606 brush.setStyle( BDiagPattern );
1609 brush.setStyle( FDiagPattern );
1612 brush.setStyle( DiagCrossPattern );
1617 brush.setColor( m_brushColor->color() );
1623void KWFrameDia::updateBrushPreview()
1625 if(brushStyle->currentItem()==0) {
1626 brushPreview->hide();
1628 brushPreview->show();
1629 brushPreview->setBrush(frameBrushStyle());
1630 brushPreview->repaint(
true);
1636void KWFrameDia::setFrameBehaviorInputOn() {
1637 if ( m_tab4 && m_floating->isChecked() )
1639 if( m_rAppendFrame && m_rResizeFrame && m_rNoShow ) {
1640 if(m_frameBehavior== KWFrame::AutoExtendFrame) {
1641 m_rResizeFrame->setChecked(
true);
1642 }
else if (m_frameBehavior== KWFrame::AutoCreateNewFrame) {
1643 m_rAppendFrame->setChecked(
true);
1645 m_rNoShow->setChecked(
true);
1647 m_rResizeFrame->setEnabled(
true);
1649 kdDebug() <<
"setFrameBehaviorInputOn: m_reconnect->isChecked()==" << m_reconnect->isChecked() << endl;
1650 m_rAppendFrame->setEnabled( m_reconnect->isChecked() );
1651 m_rNoShow->setEnabled(
true);
1656void KWFrameDia::setFrameBehaviorInputOff() {
1657 if ( m_tab4 && m_floating->isChecked() )
1659 if( m_rAppendFrame && m_rResizeFrame && m_rNoShow && m_rAppendFrame->isEnabled() ) {
1660 if(m_rResizeFrame->isChecked()) {
1661 m_frameBehavior=KWFrame::AutoExtendFrame;
1662 }
else if ( m_rAppendFrame->isChecked()) {
1663 m_frameBehavior=KWFrame::AutoCreateNewFrame;
1665 m_frameBehavior=KWFrame::Ignore;
1668 if ( m_rAppendFrame->isChecked() )
1669 m_rNoShow->setChecked(
true);
1670 m_rAppendFrame->setEnabled(
false);
1671 m_rResizeFrame->setEnabled(
true);
1672 m_rNoShow->setEnabled(
true);
1676void KWFrameDia::enableSizeAndPosition()
1678 bool canMove = ( m_floating->state() == TQButton::Off )
1679 && ( m_protectSize->state() == TQButton::Off )
1680 && !m_defaultFrameSetIncluded
1682 m_sx->setEnabled( canMove );
1683 m_sy->setEnabled( canMove );
1684 bool canResize = ( m_protectSize->state() == TQButton::Off )
1685 && !m_defaultFrameSetIncluded;
1686 m_sw->setEnabled( canResize );
1687 m_sh->setEnabled( canResize );
1690void KWFrameDia::slotProtectSizeToggled(
bool)
1692 enableSizeAndPosition();
1695void KWFrameDia::slotFloatingToggled(
bool b)
1697 enableSizeAndPosition();
1698 if (m_tab1 && m_rAppendFrame && m_rResizeFrame && m_rNoShow ) {
1699 m_cbCopy->setEnabled( !b );
1700 if ( m_rAppendFrame )
1702 m_rAppendFrame->setEnabled( !b );
1703 if ( b && m_rAppendFrame->isChecked() )
1704 m_rNoShow->setChecked(
true );
1706 enableOnNewPageOptions();
1708 m_noFollowup->setChecked(
true );
1709 m_cbCopy->setChecked(
false );
1712 m_rResizeFrame->setEnabled(
true);
1713 m_rAppendFrame->setEnabled(
true);
1714 m_rNoShow->setEnabled(
true);
1722void KWFrameDia::enableOnNewPageOptions()
1726 bool f = m_tab4 && m_floating->isChecked();
1728 m_reconnect->setEnabled( !f );
1729 m_noFollowup->setEnabled( !f );
1730 m_copyRadio->setEnabled( !f );
1732 if( m_frameType != FT_TEXT )
1733 m_reconnect->setEnabled(
false );
1735 KWFrameSet *fs = m_frame->frameSet();
1736 if ( fs && (fs->isHeaderOrFooter() || fs->isFootEndNote() ))
1738 m_reconnect->setEnabled(
false );
1739 m_noFollowup->setEnabled(
false );
1745void KWFrameDia::enableRunAround()
1749 if ( m_tab4 && m_floating->isChecked() ) {
1750 m_runGroup->setEnabled(
false );
1753 if ( m_frame && m_frame->frameSet() )
1754 m_runGroup->setEnabled( !m_frameSetFloating && !m_frame->frameSet()->isMainFrameset() && !m_frame->frameSet()->isHeaderOrFooter() && !m_frame->frameSet()->isFootEndNote() );
1756 m_runGroup->setEnabled(
true );
1758 m_runSideGroup->setEnabled( m_runGroup->isEnabled() && m_rRunBounding->isChecked() );
1759 m_raDistConfigWidget->setEnabled( m_runGroup->isEnabled() &&
1760 ( m_rRunBounding->isChecked() || m_rRunSkip->isChecked() ) );
1764bool KWFrameDia::applyChanges()
1766 kdDebug() <<
"KWFrameDia::applyChanges"<<endl;
1767 KWFrame *frameCopy = 0L;
1768 bool isNewFrame=
false;
1770 frameCopy = m_frame->
getCopy();
1771 isNewFrame = m_frame->frameSet() == 0L;
1773 TQString name=TQString();
1775 KMacroCommand * macroCmd=0L;
1783 name = m_eFrameSetName->text();
1784 if ( name.isEmpty() )
1785 name = m_doc->generateFramesetName( i18n(
"Text Frameset %1" ) );
1786 KWFrameSet *fs = 0L;
1787 TQListViewItem *frameSetItem = m_lFrameSList->selectedItem();
1789 TQString str = frameSetItem->text( 0 );
1790 fs = m_doc->frameSet(str.toInt() - 1);
1792 if(m_rNewFrameset->isChecked()) {
1793 if(m_frame && m_frame->frameSet()) {
1795 if(! mayDeleteFrameSet(
static_cast<KWTextFrameSet*
>(m_frame->frameSet())))
1797 m_frame->frameSet()->deleteFrame( m_frame,
false );
1800 for(KWFrame *f=m_allFrames.first();f; f=m_allFrames.next()) {
1801 if(! mayDeleteFrameSet(
static_cast<KWTextFrameSet*
>(f->frameSet())))
1804 for(KWFrame *f=m_allFrames.first();f; f=m_allFrames.next())
1805 f->frameSet()->deleteFrame( f,
false );
1807 }
else if(m_rExistingFrameset->isChecked()) {
1808 if(frameSetItem && (fs->
name() != frameSetItem->text( 1 ))) {
1810 macroCmd =
new KMacroCommand( i18n(
"Rename Frameset") );
1812 typedef KoSetPropCommand<TQString, KWFrameSet, &KWFrameSet::setName> FramesetNameCommand;
1813 FramesetNameCommand* cmd =
new FramesetNameCommand( fs, i18n(
"Rename Frameset" ), fs->
name(), frameSetItem->text( 1 ) );
1814 macroCmd->addCommand(cmd);
1817 if(m_frame && fs ) {
1818 if(m_frame->frameSet() != fs) {
1819 if(m_frame->frameSet()!=0) {
1821 if(! mayDeleteFrameSet(
dynamic_cast<KWTextFrameSet*
>(m_frame->frameSet())))
1823 m_frame->frameSet()->deleteFrame( m_frame,
false );
1825 fs->addFrame(m_frame);
1829 for(KWFrame *f=m_allFrames.first();f; f=m_allFrames.next()) {
1830 if(f->frameSet() != fs) {
1831 if(! mayDeleteFrameSet(
dynamic_cast<KWTextFrameSet*
>(f->frameSet())))
1838 for(KWFrame *f=m_allFrames.first();f; f=m_allFrames.next()) {
1839 KWFrameSet *fs2=f->frameSet();
1840 if(! (fs2->isHeaderOrFooter() || fs2->isMainFrameset()) ) {
1842 f->frameSet()->deleteFrame( f,
false );
1850 if(m_rNewFrameset->isChecked() || m_rExistingFrameset->isChecked()) {
1852 for (TQPtrListIterator<KWFrameSet> fit = m_doc->framesetsIterator(); fit.current() ; ++fit ) {
1853 if ( !fit.current()->isDeleted() &&
1854 fs != fit.current() && fit.current()->name() == name) {
1855 if ( m_rNewFrameset->isChecked() )
1856 KMessageBox::sorry(
this,
1857 i18n(
"A new frameset with the name '%1' "
1858 "can not be made because a frameset with that name "
1859 "already exists. Please enter another name or select "
1860 "an existing frameset from the list.").arg(name));
1862 KMessageBox::sorry(
this,
1863 i18n(
"A frameset with the name '%1' "
1864 "already exists. Please enter another name." ).arg(name) );
1865 m_eFrameSetName->setText(m_oldFrameSetName);
1874 m_frame->setCopy( m_cbCopy->isChecked() );
1875 else if(m_cbCopy->state() != TQButton::NoChange) {
1876 for(KWFrame *f=m_allFrames.first();f; f=m_allFrames.next()) {
1877 if(f == f->frameSet()->frame(0))
continue;
1878 f->setCopy( m_cbCopy->isChecked() );
1883 if ( m_frameType == FT_TEXT )
1887 if(m_rResizeFrame->isChecked())
1888 fb = KWFrame::AutoExtendFrame;
1889 else if ( m_rAppendFrame->isChecked())
1890 fb = KWFrame::AutoCreateNewFrame;
1891 else if ( m_rNoShow->isChecked())
1892 fb = KWFrame::Ignore;
1897 if(m_cbAllFrames->isChecked() && m_frame->frameSet())
1898 m_frame->frameSet()->setFrameBehavior(fb);
1900 m_frame->setFrameBehavior(fb);
1902 for(KWFrame *f=m_allFrames.first();f; f=m_allFrames.next())
1903 if(m_cbAllFrames->isChecked())
1904 f->frameSet()->setFrameBehavior(fb);
1906 f->setFrameBehavior(fb);
1908 if ( m_frame && m_frame->frameSet())
1910 KWTextFrameSet * frm=
static_cast<KWTextFrameSet *
>( m_frame->frameSet() );
1911 if(frm->
textObject()->protectContent()!=m_cbProtectContent->isChecked())
1914 macroCmd =
new KMacroCommand( i18n(
"Protect Content") );
1915 KWProtectContentCommand * cmd =
new KWProtectContentCommand( i18n(
"Protect Content"), frm,m_cbProtectContent->isChecked() );
1917 macroCmd->addCommand(cmd);
1922 if ( m_cbProtectContent->state() != TQButton::NoChange)
1924 for(KWFrame *f=m_allFrames.first();f; f=m_allFrames.next())
1926 KWTextFrameSet * frm=
dynamic_cast<KWTextFrameSet *
>( f->frameSet() );
1929 if(frm->
textObject()->protectContent()!=m_cbProtectContent->isChecked())
1932 macroCmd =
new KMacroCommand( i18n(
"Protect Content") );
1933 KWProtectContentCommand * cmd =
new KWProtectContentCommand( i18n(
"Protect Content"), frm,m_cbProtectContent->isChecked() );
1935 macroCmd->addCommand(cmd);
1947 if( m_reconnect && m_reconnect->isChecked() )
1948 nfb = KWFrame::Reconnect;
1949 else if ( m_noFollowup->isChecked() )
1950 nfb = KWFrame::NoFollowup;
1951 else if ( m_copyRadio->isChecked() )
1952 nfb = KWFrame::Copy;
1957 if(m_cbAllFrames->isChecked() && m_frame->frameSet())
1958 m_frame->frameSet()->setNewFrameBehavior(nfb);
1960 m_frame->setNewFrameBehavior(nfb);
1962 for(KWFrame *f=m_allFrames.first();f; f=m_allFrames.next())
1963 if(m_cbAllFrames->isChecked())
1964 f->frameSet()->setNewFrameBehavior(nfb);
1966 f->setNewFrameBehavior(nfb);
1969 if ( m_cbAspectRatio && (m_frameType==FT_PICTURE))
1971 typedef KoSetBasicPropCommand<bool, KWPictureFrameSet, &KWPictureFrameSet::setKeepAspectRatio> FramesetSetKeepAspectRatioCommand;
1973 KWPictureFrameSet * frm=
static_cast<KWPictureFrameSet *
>( m_frame->frameSet() );
1974 if ( frm->keepAspectRatio() != m_cbAspectRatio->isChecked() )
1977 macroCmd =
new KMacroCommand( i18n(
"Frame Properties") );
1978 FramesetSetKeepAspectRatioCommand* cmd =
new FramesetSetKeepAspectRatioCommand( frm, TQString(), frm->keepAspectRatio(), m_cbAspectRatio->isChecked() );
1982 macroCmd->addCommand(cmd);
1984 }
else if(m_cbAspectRatio->state() != TQButton::NoChange) {
1985 for(KWFrame *f=m_allFrames.first();f; f=m_allFrames.next()) {
1986 KWPictureFrameSet *fs =
dynamic_cast<KWPictureFrameSet *
> (f->frameSet());
1988 if(fs->keepAspectRatio()!=m_cbAspectRatio->isChecked())
1991 macroCmd =
new KMacroCommand( i18n(
"Frame Properties") );
1992 FramesetSetKeepAspectRatioCommand* cmd =
new FramesetSetKeepAspectRatioCommand( fs, TQString(), fs->keepAspectRatio(), m_cbAspectRatio->isChecked() );
1996 macroCmd->addCommand(cmd);
2007 if ( m_rRunNo->isChecked() )
2008 ra = KWFrame::RA_NO;
2009 else if ( m_rRunBounding->isChecked() )
2010 ra = KWFrame::RA_BOUNDINGRECT;
2011 else if ( m_rRunSkip->isChecked() )
2012 ra = KWFrame::RA_SKIP;
2016 m_frame->setRunAround(ra);
2018 for(KWFrame *f=m_allFrames.first();f; f=m_allFrames.next())
2019 f->setRunAround(ra);
2025 if ( m_rRunLeft->isChecked() )
2026 rs = KWFrame::RA_LEFT;
2027 else if ( m_rRunRight->isChecked() )
2028 rs = KWFrame::RA_RIGHT;
2029 else if ( m_rRunBiggest->isChecked() )
2030 rs = KWFrame::RA_BIGGEST;
2034 m_frame->setRunAroundSide(rs);
2036 for(KWFrame *f=m_allFrames.first();f; f=m_allFrames.next())
2037 f->setRunAroundSide(rs);
2041 double runAroundLeft = m_raDistConfigWidget->leftValue();
2042 double runAroundRight = m_raDistConfigWidget->rightValue();
2043 double runAroundTop = m_raDistConfigWidget->topValue();
2044 double runAroundBottom = m_raDistConfigWidget->bottomValue();
2047 m_frame->setRunAroundGap( runAroundLeft, runAroundRight, runAroundTop, runAroundBottom );
2050 for(KWFrame *f=m_allFrames.first();f; f=m_allFrames.next())
2051 f->setRunAroundGap( runAroundLeft, runAroundRight, runAroundTop, runAroundBottom );
2054 TQBrush tmpBrush=frameBrushStyle();
2056 if ( tmpBrush != KWDocument::resolveBgBrush( m_frame->backgroundColor() ) ) {
2057 m_frame->setBackgroundColor(tmpBrush);
2059 }
else if(m_overwriteColor->isChecked()) {
2060 for(KWFrame *f=m_allFrames.first();f; f=m_allFrames.next())
2061 f->setBackgroundColor(tmpBrush);
2072 double uBottom = 0.0;
2073 double uRight = 0.0;
2076 px = TQMAX( 0, m_sx->value() );
2077 int pageNum = m_doc->pageManager()->pageNumber(m_frame);
2078 py = TQMAX( 0, m_sy->value() ) + m_doc->pageManager()->topOfPage(pageNum);
2080 pw = TQMAX( m_sw->value(), 0 );
2081 ph = TQMAX( m_sh->value(), 0 );
2082 if ( m_paddingConfigWidget )
2084 uLeft = m_paddingConfigWidget->leftValue();
2085 uRight = m_paddingConfigWidget->rightValue();
2086 uTop = m_paddingConfigWidget->topValue();
2087 uBottom = m_paddingConfigWidget->bottomValue();
2090 KoRect rect( px, py, pw, ph );
2098 if(m_frame->frameSet() == 0L ) {
2099 KWTextFrameSet *frameSet =
new KWTextFrameSet( m_doc, name );
2100 frameSet->addFrame( m_frame );
2101 KWPage *page = m_doc->pageManager()->page(m_frame);
2102 if( page->
rect().contains(rect) ) {
2103 m_frame->setRect( px, py, pw, ph );
2105 if ( m_paddingConfigWidget && ( !m_tab1 || (m_tab1 && m_cbProtectContent && !m_cbProtectContent->isChecked())) )
2106 m_frame->setFramePadding( uLeft, uTop, uRight, uBottom );
2107 m_doc->frameChanged( m_frame );
2109 KMessageBox::sorry(
this,i18n(
"The frame will not be resized because the new size would be greater than the size of the page."));
2112 m_doc->addFrameSet( frameSet );
2114 macroCmd =
new KMacroCommand( i18n(
"Create Text Frame") );
2115 KWCreateFrameCommand *cmd=
new KWCreateFrameCommand( i18n(
"Create Text Frame"), m_frame) ;
2116 macroCmd->addCommand(cmd);
2118 if(!isNewFrame && (frameCopy->
isCopy()!=m_frame->isCopy()
2119 || frameCopy->frameBehavior()!=m_frame->frameBehavior()
2120 || frameCopy->newFrameBehavior()!=m_frame->newFrameBehavior()
2121 || frameCopy->runAround()!=m_frame->runAround()
2122 || frameCopy->runAroundSide()!=m_frame->runAroundSide()
2123 || frameCopy->runAroundLeft()!=m_frame->runAroundLeft()
2124 || frameCopy->runAroundRight()!=m_frame->runAroundRight()
2125 || frameCopy->runAroundTop()!=m_frame->runAroundTop()
2126 || frameCopy->runAroundBottom()!=m_frame->runAroundBottom()
2127 || (m_tab5 && KWDocument::resolveBgBrush( frameCopy->backgroundColor() )!=frameBrushStyle())))
2130 macroCmd =
new KMacroCommand( i18n(
"Frame Properties") );
2132 KWFramePropertiesCommand*cmd =
new KWFramePropertiesCommand( TQString(), frameCopy, m_frame );
2133 macroCmd->addCommand(cmd);
2140 KWFrame *f=m_allFrames.first();
2141 if(f==0L) f=m_frame;
2148 if ( m_floating->isChecked() &&
2149 m_floating->state() != TQButton::NoChange &&
2153 macroCmd =
new KMacroCommand( i18n(
"Make Frameset Inline") );
2155 TQValueList<FrameIndex> frameindexList;
2156 TQValueList<FrameMoveStruct> frameindexMove;
2158 KoPoint oldPos = f->topLeft();
2161 KWFrameSetInlineCommand *cmd =
new KWFrameSetInlineCommand( TQString(), parentFs,
true );
2164 frameindexList.append( FrameIndex( f ) );
2165 frameindexMove.append( FrameMoveStruct( oldPos, f->topLeft() ) );
2167 KWFrameMoveCommand *cmdMoveFrame =
new KWFrameMoveCommand( TQString(), frameindexList, frameindexMove );
2169 macroCmd->addCommand(cmdMoveFrame);
2170 macroCmd->addCommand(cmd);
2172 else if ( !m_floating->isChecked() &&
2173 m_floating->state() != TQButton::NoChange &&
2177 macroCmd =
new KMacroCommand( i18n(
"Make Frameset Non-Inline") );
2179 KWFrameSetInlineCommand *cmd =
new KWFrameSetInlineCommand( TQString(), parentFs,
false );
2180 macroCmd->addCommand(cmd);
2183 if ( fs->isProtectSize() != m_protectSize->isChecked()
2184 && m_protectSize->state() != TQButton::NoChange )
2187 macroCmd =
new KMacroCommand( i18n(
"Protect Size") );
2188 typedef KoSetBasicPropCommand<bool, KWFrameSet, &KWFrameSet::setProtectSize> FramesetSetProtectSizeCommand;
2189 FramesetSetProtectSizeCommand* cmd =
new FramesetSetProtectSizeCommand( fs, TQString(), fs->isProtectSize(), m_protectSize->isChecked() );
2190 macroCmd->addCommand(cmd);
2192 m_frameSetProtectedSize = m_protectSize->isChecked();
2194 if ( !fs->isMainFrameset() &&
2195 ( ( m_oldX != m_sx->value() && m_sx->isEnabled() )|| ( m_oldY != m_sy->value() && m_sy->isEnabled() ) || ( m_oldW != m_sw->value() && m_sw->isEnabled() ) || ( m_oldH != m_sh->value() && m_sh->isEnabled() ) ) )
2201 if( m_doc->pageManager()->page(f)->rect().contains(rect) )
2203 FrameIndex index( f );
2204 KoRect initialRect = f->normalize();
2207 f->setRect( px, py, pw, ph );
2212 FrameResizeStruct tmpResize( initialRect, initialMinFrameHeight, f->normalize() );
2214 macroCmd =
new KMacroCommand( i18n(
"Resize Frame") );
2216 KWFrameResizeCommand *cmd =
new KWFrameResizeCommand( i18n(
"Resize Frame"), index, tmpResize ) ;
2217 macroCmd->addCommand(cmd);
2218 m_doc->frameChanged( f );
2222 KMessageBox::sorry(
this,i18n(
"The frame will not be resized because the new size would be greater than the size of the page."));
2225 if ( m_paddingConfigWidget &&
2226 (!m_tab1 || (m_tab1 && m_cbProtectContent && !m_cbProtectContent->isChecked())) &&
2227 m_paddingConfigWidget->changed() )
2229 FrameIndex index( f );
2230 FramePaddingStruct tmpMargBegin(f);
2231 FramePaddingStruct tmpMargEnd(uLeft, uTop, uRight, uBottom);
2233 macroCmd =
new KMacroCommand( i18n(
"Change Margin Frame") );
2234 KWFrameChangeFramePaddingCommand *cmd =
new KWFrameChangeFramePaddingCommand( i18n(
"Change Margin Frame"), index, tmpMargBegin, tmpMargEnd) ;
2236 macroCmd->addCommand(cmd);
2238 f=m_allFrames.next();
2244 m_allFrames.append( m_mainFrame );
2246 KWFrame *f = m_allFrames.first();
2247 if(f==0L) f=m_frame;
2248 for ( ; f ; f = m_allFrames.next() )
2253 kdDebug() <<
"Changing borders!" << endl;
2254 TQPtrList<KWFrameBorderCommand::FrameBorderTypeStruct> tmpBorderList;
2255 TQPtrList<FrameIndex> frameindexList;
2257 FrameIndex *index =
new FrameIndex( f );
2258 KWFrameBorderCommand::FrameBorderTypeStruct *tmp =
new KWFrameBorderCommand::FrameBorderTypeStruct;
2260 tmp->m_EFrameType = KoBorder::LeftBorder;
2261 tmpBorderList.append( tmp );
2262 frameindexList.append( index );
2264 macroCmd =
new KMacroCommand( i18n(
"Change Border"));
2265 KWFrameBorderCommand *cmd =
new KWFrameBorderCommand(i18n(
"Change Left Border Frame"), frameindexList, tmpBorderList, m_leftBorder);
2267 macroCmd->addCommand( cmd);
2269 if ( f->rightBorder() != m_rightBorder )
2271 TQPtrList<KWFrameBorderCommand::FrameBorderTypeStruct> tmpBorderList;
2272 TQPtrList<FrameIndex> frameindexList;
2274 FrameIndex *index =
new FrameIndex( f );
2275 KWFrameBorderCommand::FrameBorderTypeStruct *tmp =
new KWFrameBorderCommand::FrameBorderTypeStruct;
2276 tmp->m_OldBorder = f->rightBorder();
2277 tmp->m_EFrameType = KoBorder::RightBorder;
2278 tmpBorderList.append( tmp );
2279 frameindexList.append( index );
2281 macroCmd =
new KMacroCommand( i18n(
"Change Border"));
2282 KWFrameBorderCommand *cmd =
new KWFrameBorderCommand(i18n(
"Change Right Border Frame"), frameindexList, tmpBorderList, m_rightBorder);
2284 macroCmd->addCommand( cmd);
2286 if ( f->topBorder() != m_topBorder )
2288 TQPtrList<KWFrameBorderCommand::FrameBorderTypeStruct> tmpBorderList;
2289 TQPtrList<FrameIndex> frameindexList;
2291 FrameIndex *index =
new FrameIndex( f );
2292 KWFrameBorderCommand::FrameBorderTypeStruct *tmp =
new KWFrameBorderCommand::FrameBorderTypeStruct;
2293 tmp->m_OldBorder = f->topBorder();
2294 tmp->m_EFrameType = KoBorder::TopBorder;
2295 tmpBorderList.append( tmp );
2296 frameindexList.append( index );
2298 macroCmd =
new KMacroCommand( i18n(
"Change Border"));
2299 KWFrameBorderCommand *cmd =
new KWFrameBorderCommand(i18n(
"Change Top Border Frame"), frameindexList, tmpBorderList, m_topBorder);
2301 macroCmd->addCommand( cmd);
2303 if ( f->bottomBorder() != m_bottomBorder )
2305 TQPtrList<KWFrameBorderCommand::FrameBorderTypeStruct> tmpBorderList;
2306 TQPtrList<FrameIndex> frameindexList;
2308 FrameIndex *index =
new FrameIndex( f );
2309 KWFrameBorderCommand::FrameBorderTypeStruct *tmp =
new KWFrameBorderCommand::FrameBorderTypeStruct;
2310 tmp->m_OldBorder = f->bottomBorder();
2311 tmp->m_EFrameType = KoBorder::BottomBorder;
2312 tmpBorderList.append( tmp );
2313 frameindexList.append( index );
2315 macroCmd =
new KMacroCommand( i18n(
"Change Border"));
2316 KWFrameBorderCommand *cmd =
new KWFrameBorderCommand(i18n(
"Change Bottom Border Frame"), frameindexList, tmpBorderList, m_bottomBorder);
2318 macroCmd->addCommand( cmd);
2324 m_doc->addCommand(macroCmd);
2330void KWFrameDia::updateFrames()
2332 m_doc->updateAllFrames();
2334 m_doc->repaintAllViews();
2337void KWFrameDia::slotApply()
2341 initGeometrySettings();
2343 initBorderSettings();
2346void KWFrameDia::slotOk()
2350 KDialogBase::slotOk();
2354void KWFrameDia::connectListSelected( TQListViewItem *item )
2358 item = m_lFrameSList->selectedItem();
2360 if ( !item )
return;
2362 m_rExistingFrameset->setChecked(
true);
2363 m_eFrameSetName->setText( item->text(1) );
2367 if(fs==0)
return true;
2369 KoTextParag * parag = fs->textDocument()->firstParag();
2370 if(parag==0)
return true;
2371 bool isEmpty = parag->next() == 0L && parag->length() == 1;
2373 int result = KMessageBox::warningContinueCancel(
this,
2374 i18n(
"You are about to reconnect the last frame of the "
2376 "The contents of this frameset will be deleted.\n"
2377 "Are you sure you want to do that?").arg(fs->
name()),
2378 i18n(
"Reconnect Frame"), i18n(
"&Reconnect"));
2379 if (result != KMessageBox::Continue)
2385KWFourSideConfigWidget::KWFourSideConfigWidget( KWDocument* doc,
const TQString& title,
2386 TQWidget* parent,
const char* name )
2387 : TQGroupBox( title, parent, name ),
2389 m_changed( false ), m_noSignal( false )
2391 TQGroupBox *grp2 =
this;
2392 TQGridLayout* mGrid =
new TQGridLayout( grp2, 4, 4, KDialog::marginHint(), KDialog::spacingHint() );
2394 m_synchronize=
new TQCheckBox( i18n(
"Synchronize changes"), grp2 );
2395 TQWhatsThis::add(m_synchronize, i18n(
"<b>Synchronize changes:</b><br/>"
2396 "When this is checked any change in margins will be used for all directions."));
2397 mGrid->addMultiCellWidget( m_synchronize, 1, 1, 0, 1 );
2399 TQLabel* lml =
new TQLabel( i18n(
"Left:" ), grp2 );
2401 mGrid->addWidget( lml, 2, 0 );
2403 m_inputLeft =
new KoUnitDoubleSpinBox( grp2, 0, 9999, 1, 0.0, m_doc->unit() );
2405 mGrid->addWidget( m_inputLeft, 2, 1 );
2407 TQLabel* lmt =
new TQLabel( i18n(
"Top:" ), grp2 );
2409 mGrid->addWidget( lmt, 2, 2 );
2411 m_inputTop =
new KoUnitDoubleSpinBox( grp2, 0, 9999, 1, 0.0, m_doc->unit() );
2415 mGrid->addWidget( m_inputTop, 2, 3 );
2417 TQLabel* lmr =
new TQLabel( i18n(
"Right:" ), grp2 );
2419 mGrid->addWidget( lmr, 3, 0 );
2421 m_inputRight =
new KoUnitDoubleSpinBox( grp2, 0, 9999, 1, 0.0, m_doc->unit() );
2424 mGrid->addWidget( m_inputRight, 3, 1 );
2426 TQLabel* lmb =
new TQLabel( i18n(
"Bottom:" ), grp2 );
2428 mGrid->addWidget( lmb, 3, 2 );
2430 m_inputBottom =
new KoUnitDoubleSpinBox( grp2, 0, 9999, 1, 0.0, m_doc->unit() );
2433 mGrid->addWidget( m_inputBottom, 3, 3 );
2434 mGrid->setRowSpacing( 0, KDialog::spacingHint() + 5 );
2436 connect( m_inputLeft, TQ_SIGNAL( valueChanged(
double)),
this, TQ_SLOT( slotValueChanged(
double )));
2437 connect( m_inputRight, TQ_SIGNAL( valueChanged(
double)),
this, TQ_SLOT( slotValueChanged(
double )));
2438 connect( m_inputTop, TQ_SIGNAL( valueChanged(
double)),
this, TQ_SLOT( slotValueChanged(
double )));
2439 connect( m_inputBottom, TQ_SIGNAL( valueChanged(
double)),
this, TQ_SLOT( slotValueChanged(
double )));
2443void KWFourSideConfigWidget::setValues(
double left,
double right,
double top,
double bottom )
2445 m_inputLeft->setValue( KoUnit::toUserValue( left, m_doc->unit() ) );
2446 m_inputRight->setValue( KoUnit::toUserValue( right, m_doc->unit() ) );
2447 m_inputTop->setValue( KoUnit::toUserValue( top, m_doc->unit() ) );
2448 m_inputBottom->setValue( KoUnit::toUserValue( bottom, m_doc->unit() ) );
2451void KWFourSideConfigWidget::slotValueChanged(
double val )
2454 if ( m_synchronize->isChecked() && !m_noSignal )
2457 m_inputLeft->setValue( val );
2458 m_inputBottom->setValue( val );
2459 m_inputRight->setValue( val );
2460 m_inputTop->setValue( val );
2465double KWFourSideConfigWidget::leftValue()
const
2467 return m_inputLeft->value();
2470double KWFourSideConfigWidget::rightValue()
const
2472 return m_inputRight->value();
2475double KWFourSideConfigWidget::topValue()
const
2477 return m_inputTop->value();
2480double KWFourSideConfigWidget::bottomValue()
const
2482 return m_inputBottom->value();
Class: KWFrameSet Base type, a frameset holds content as well as frames to show that content.
static KWFrame * settingsFrame(const KWFrame *frame)
Returns the original frame that the param frame is a copy off, or the frame itself.
virtual FrameSetType type() const
The type of frameset.
bool isDeleted() const
True if the frameset was deleted (but not destroyed, since it's in the undo/redo).
unsigned int frameCount() const
Get number of child frames.
bool isFloating() const
Return true if this frameset is floating (inline), false if it's fixed.
KWTableFrameSet * groupmanager() const
returns the groupManager this frameset belongs to.
KWFrame * frame(unsigned int _num) const
get a frame by number
TQString name() const
get/set frameset name. For tables in particular, this must be unique
Info frameSetInfo() const
Returns the type of TextFrameSet this is.
This class represents a single frame.
NewFrameBehavior
What happens on new page (create a new frame and reconnect, no followup, make copy).
double minimumFrameHeight(void) const
KWFrameSet * frameSet() const
Data stucture methods.
FrameBehavior
what should happen when the frame is full
RunAround
Runaround types RA_NO = No run around, all text is just printed.
bool isCopy() const
Drawing property: if isCopy, this frame is a copy of the previous frame in the frameset.
const KoBorder & leftBorder() const
All borders can be custom drawn with their own colors etc.
RunAroundSide
Runaround side - only meaningful when RA_BOUNDINGRECT is used.
KWFrame * getCopy()
returns a copy of self
const KoRect rect() const
return a KoRect with the (pt) sizes of this page. Margins are ignored for this function.
Class: KWTextFrameSet Contains text (KoTextObject) and frames to display that text.
KoTextObject * textObject() const
Return the contained text object.