You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
koffice/kword/KWConfigFootNoteDia.cpp

217 lines
8.6 KiB

/* This file is part of the KDE project
Copyright (C) 2002 Montel Laurent <lmontel@mandrakesoft.com>
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 <KoParagDia.h>
#include <KoUnitWidgets.h>
#include <klocale.h>
#include <knuminput.h>
#include <tqradiobutton.h>
#include <tqwhatsthis.h>
#include <tqvbuttongroup.h>
#include <tqlabel.h>
#include <tqvbox.h>
#include <tqlayout.h>
#include <tqcombobox.h>
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<KWVariableSettings*>(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<KWVariableSettings*>(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, Qt::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 <<i18n("Solid");
lst <<i18n("Dash Line");
lst <<i18n("Dot Line");
lst <<i18n("Dash Dot Line");
lst <<i18n("Dash Dot Dot Line");
m_cbLineType->insertStringList( lst );
m_cbLineType->setCurrentItem( static_cast<int>(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<KWVariableSettings*>(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<KWVariableSettings*>(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<SeparatorLineLineType>(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();
}