/* This file is part of the KDE project Copyright (C) 2002 Montel Laurent This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with this library; see the file COPYING.LIB. If not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301, USA. */ #include "KWDocument.h" #include "KWConfigFootNoteDia.h" #include "KWConfigFootNoteDia.moc" #include "KWVariable.h" #include "KWCommand.h" #include "KWFrameSet.h" #include #include #include #include #include #include #include #include #include #include #include KWConfigFootNoteDia::KWConfigFootNoteDia( TQWidget *parent, const char *name, KWDocument *doc ) : KDialogBase(Tabbed, TQString(), Ok | Cancel , Ok, parent, name, true) { setCaption( i18n("Configure Endnote/Footnote") ); m_doc = doc; resize( 510, 310 ); setupTab1(); setupTab2(); setupTab3(); } void KWConfigFootNoteDia::setupTab1() { TQVBox * page = addVBoxPage( i18n( "Footnotes" ) ); m_footNoteConfig = new KoCounterStyleWidget( false, true, false, page ); //m_footNoteConfig->numTypeChanged( KoParagCounter::NUM_LIST ); m_footNoteConfig->setCounter (static_cast(m_doc->variableCollection()->variableSetting())->footNoteCounter() ); } void KWConfigFootNoteDia::setupTab2() { TQVBox * page = addVBoxPage( i18n( "Endnotes" ) ); m_endNoteConfig = new KoCounterStyleWidget( false, true/*onlyStyleLetter*/,false, page ); //m_endNoteConfig->numTypeChanged( KoParagCounter::NUM_LIST ); m_endNoteConfig->setCounter (static_cast(m_doc->variableCollection()->variableSetting())->endNoteCounter() ); } void KWConfigFootNoteDia::setupTab3() { TQFrame * page = addPage( i18n( "Separator Line" ) ); TQString comment= i18n ("Configure the separator line. The separator line " "is drawn directly above the frame for the footnotes."); TQWhatsThis::add(page, comment); TQVBoxLayout *pageLayout= new TQVBoxLayout( page, 0, KDialog::spacingHint()); TQButtonGroup *positionGroupBox = new TQButtonGroup( i18n( "Position"), page ); comment= i18n ("The separator can be positioned horizontally by picking one " "of the three alignments."); TQWhatsThis::add(positionGroupBox, comment); positionGroupBox->setColumnLayout(0, TQt::Vertical ); TQVBoxLayout *positionLayout = new TQVBoxLayout( positionGroupBox->layout() ); positionLayout->setAlignment( TQt::AlignTop ); // i18n context information necessary for gender considerations (e.g. in Polish) rbPosLeft = new TQRadioButton( i18n("Position", "Left"), positionGroupBox, "rbPosLeft" ); positionLayout->addWidget( rbPosLeft ); rbPosCentered = new TQRadioButton( i18n("Position", "Centered"), positionGroupBox, "rbPosCentered" ); positionLayout->addWidget( rbPosCentered ); rbPosRight = new TQRadioButton( i18n("Position", "Right"), positionGroupBox, "rbPosRight" ); positionLayout->addWidget( rbPosRight ); pageLayout->addWidget( positionGroupBox ); switch( m_doc->footNoteSeparatorLinePosition() ) { case SLP_LEFT: rbPosLeft->setChecked( true); break; case SLP_CENTERED: rbPosCentered->setChecked( true); break; case SLP_RIGHT: rbPosRight->setChecked( true); break; } TQGridLayout *layout = new TQGridLayout( 0, 1, 1, 0, KDialog::spacingHint()); spWidth = new KoUnitDoubleSpinBox(page, 0, 5, 0.5, m_doc->footNoteSeparatorLineWidth(), m_doc->unit(), 1); layout->addWidget( spWidth, 1, 1 ); spLength = new KIntNumInput( page, "spLength" ); spLength->setRange( 1, 100, 1,false ); spLength->setValue( m_doc->footNoteSeparatorLineLength()); spLength->setSuffix(i18n(" %")); layout->addWidget( spLength, 0, 1 ); TQLabel *lSize = new TQLabel( i18n( "&Width:"), page ); lSize->setBuddy( spWidth ); comment= i18n ("The width is the thickness of the separator line, set to 0 for no separator line."); TQWhatsThis::add(lSize, comment); TQWhatsThis::add(spWidth, comment); layout->addWidget( lSize, 1, 0 ); TQSpacerItem* spacer = new TQSpacerItem( 0, 0, TQSizePolicy::Expanding, TQSizePolicy::Minimum ); layout->addMultiCell( spacer, 0, 1, 2, 2 ); TQLabel *lWidth = new TQLabel( i18n("&Size on page:"), page, "lWidth" ); lWidth->setBuddy( spLength ); comment= i18n ("The size of the separator line can be defined as a percentage of the width of the page."); TQWhatsThis::add(spLength, comment); TQWhatsThis::add(lWidth, comment); layout->addWidget( lWidth, 0, 0 ); pageLayout->addLayout( layout ); TQHBoxLayout *styleLayout = new TQHBoxLayout( 0, 0, KDialog::spacingHint(), "styleLayout"); TQLabel *styleLabel = new TQLabel( i18n("Style:"), page ); styleLayout->addWidget( styleLabel ); m_cbLineType = new TQComboBox( page ); TQStringList lst; lst <insertStringList( lst ); m_cbLineType->setCurrentItem( static_cast(m_doc->footNoteSeparatorLineType())); comment= i18n ("The separator line can be drawn as a solid line or as a line which has a " "pattern; the pattern can be set in the style-type."); TQWhatsThis::add(styleLabel, comment); TQWhatsThis::add(m_cbLineType, comment); styleLayout->addWidget( m_cbLineType ); TQSpacerItem* spacer_2 = new TQSpacerItem( 0, 0, TQSizePolicy::Expanding, TQSizePolicy::Minimum ); styleLayout->addItem( spacer_2 ); pageLayout->addLayout( styleLayout ); TQSpacerItem* spacer_3 = new TQSpacerItem( 0, 0, TQSizePolicy::Minimum, TQSizePolicy::Expanding ); pageLayout->addItem( spacer_3 ); } void KWConfigFootNoteDia::slotOk() { KMacroCommand * macro = 0L; KCommand *cmd = 0L; KoParagCounter counter =static_cast(m_doc->variableCollection()->variableSetting())->footNoteCounter(); if (counter != m_footNoteConfig->counter() ) { macro = new KMacroCommand(i18n("Change End-/Footnote Variable Settings")); cmd= new KWChangeFootEndNoteSettingsCommand( i18n("Change End-/Footnote Variable Settings") , counter, m_footNoteConfig->counter() ,true ,m_doc); macro->addCommand(cmd ); } counter = static_cast(m_doc->variableCollection()->variableSetting())->endNoteCounter(); if (counter != m_endNoteConfig->counter() ) { if ( !macro ) macro = new KMacroCommand(i18n("Change End-/Footnote Variable Settings")); cmd= new KWChangeFootEndNoteSettingsCommand( i18n("Change End-/Footnote Variable Settings") , counter, m_endNoteConfig->counter() ,false ,m_doc); macro->addCommand(cmd ); } int val =spLength->value(); double width = spWidth->value(); SeparatorLinePos tmp = SLP_LEFT; SeparatorLineLineType type = static_cast(m_cbLineType->currentItem()); if ( rbPosRight->isChecked()) tmp = SLP_RIGHT; else if ( rbPosCentered->isChecked()) tmp = SLP_CENTERED; else if ( rbPosLeft->isChecked()) tmp = SLP_LEFT; if ( (val != m_doc->footNoteSeparatorLineLength())|| tmp != m_doc->footNoteSeparatorLinePosition()|| width!= m_doc->footNoteSeparatorLineWidth() || type != m_doc->footNoteSeparatorLineType()) { if ( !macro ) macro = new KMacroCommand(i18n("Change Footnote Line Separator Settings")); cmd = new KWChangeFootNoteLineSeparatorParametersCommand( i18n("Change Footnote Line Separator Settings") , m_doc->footNoteSeparatorLinePosition(), tmp, m_doc->footNoteSeparatorLineLength(), val,m_doc->footNoteSeparatorLineWidth(), width, m_doc->footNoteSeparatorLineType(), type, m_doc); macro->addCommand( cmd ); } if ( macro ) { macro->execute(); m_doc->addCommand( macro ); } KDialogBase::slotOk(); }