diff options
Diffstat (limited to 'kspread/dialogs/kspread_dlg_resize2.cpp')
-rw-r--r-- | kspread/dialogs/kspread_dlg_resize2.cpp | 183 |
1 files changed, 183 insertions, 0 deletions
diff --git a/kspread/dialogs/kspread_dlg_resize2.cpp b/kspread/dialogs/kspread_dlg_resize2.cpp new file mode 100644 index 00000000..e6d74d26 --- /dev/null +++ b/kspread/dialogs/kspread_dlg_resize2.cpp @@ -0,0 +1,183 @@ +/* This file is part of the KDE project + Copyright (C) 2002-2004 Ariya Hidayat <ariya@kde.org> + (C) 2003 Norbert Andres <nandres@web.de> + (C) 2001-2003 Philipp Mueller <philipp.mueller@gmx.de> + (C) 1999-2002 Laurent Montel <montel@kde.org> + (C) 2002 John Dailey <dailey@vt.edu> + (C) 2000 David Faure <faure@kde.org> + (C) 1998-1999 Torben Weis <weis@kde.org> + + 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 <float.h> + +#include <tqlabel.h> +#include <tqlayout.h> + +#include <knuminput.h> + +#include <KoUnit.h> +#include <KoUnitWidgets.h> + +#include <kspread_canvas.h> +#include <kspread_doc.h> +#include <kspread_global.h> +#include <kspread_locale.h> +#include <kspread_sheet.h> +#include <kspread_undo.h> +#include <kspread_view.h> +#include "manipulator.h" +#include "selection.h" + +#include "kspread_dlg_resize2.h" + +using namespace KSpread; + +ResizeRow::ResizeRow( View* parent, const char* name ) + : KDialogBase( parent, name, true, i18n("Resize Row"), Ok|Cancel|Default ) +{ + m_pView = parent; + + TQWidget *page = new TQWidget( this ); + setMainWidget( page ); + + TQVBoxLayout *vLay = new TQVBoxLayout( page, 0, spacingHint() ); + TQHBoxLayout *hLay = new TQHBoxLayout( vLay ); + + TQRect selection( m_pView->selectionInfo()->selection() ); + RowFormat* rl = m_pView->activeSheet()->rowFormat( selection.top() ); + rowHeight = rl->dblHeight(); + + TQLabel * label1 = new TQLabel( page, "label1" ); + label1->setText( i18n( "Height:" ) ); + hLay->addWidget( label1 ); + + m_pHeight = new KoUnitDoubleSpinBox( page ); + m_pHeight->setValue( rowHeight ); + m_pHeight->setUnit( m_pView->doc()->unit() ); + + hLay->addWidget( m_pHeight ); + + TQWidget *hSpacer = new TQWidget( page ); + hSpacer->setMinimumSize( spacingHint(), spacingHint() ); + hLay->addWidget( hSpacer ); + + TQWidget *vSpacer = new TQWidget( page ); + vSpacer->setMinimumSize( spacingHint(), spacingHint() ); + vLay->addWidget( vSpacer ); + + m_pHeight->setFocus(); + + //store the visible value, for later check for changes + rowHeight = m_pHeight->value(); +} + +void ResizeRow::slotOk() +{ + double height = m_pHeight->value(); + + //Don't generate a resize, when there isn't a change or the change is only a rounding issue + if ( fabs( height - rowHeight ) > DBL_EPSILON ) + { + ResizeRowManipulator* manipulator = new ResizeRowManipulator(); + manipulator->setSheet(m_pView->activeSheet()); + manipulator->setSize(height); + // TODO Stefan: + manipulator->setOldSize(rowHeight); + manipulator->add(*m_pView->selectionInfo()); + manipulator->execute(); + } + accept(); +} + +void ResizeRow::slotDefault() +{ + Sheet* sheet = m_pView->activeSheet(); + if (!sheet) + return; + double points = sheet->rowFormat(0)->dblHeight(); + m_pHeight->setValue(KoUnit::toUserValue(points, m_pView->doc()->unit())); +} + +ResizeColumn::ResizeColumn( View* parent, const char* name ) + : KDialogBase( parent, name, true, i18n("Resize Column"), Ok|Cancel|Default ) +{ + m_pView = parent; + + TQWidget *page = new TQWidget( this ); + setMainWidget(page); + + TQVBoxLayout *vLay = new TQVBoxLayout( page, 0, spacingHint() ); + TQHBoxLayout *hLay = new TQHBoxLayout( vLay ); + + TQRect selection( m_pView->selectionInfo()->selection() ); + ColumnFormat* cl = m_pView->activeSheet()->columnFormat( selection.left() ); + columnWidth = cl->dblWidth(); + + TQLabel * label1 = new TQLabel( page, "label1" ); + label1->setText( i18n( "Width:" ) ); + hLay->addWidget( label1 ); + + m_pWidth = new KoUnitDoubleSpinBox( page ); + m_pWidth->setValue( columnWidth ); + m_pWidth->setUnit( m_pView->doc()->unit() ); + + hLay->addWidget( m_pWidth ); + + TQWidget *hSpacer = new TQWidget( page ); + hSpacer->setMinimumSize( spacingHint(), spacingHint() ); + hLay->addWidget( hSpacer ); + + TQWidget *vSpacer = new TQWidget( page ); + vSpacer->setMinimumSize( spacingHint(), spacingHint() ); + vLay->addWidget( vSpacer ); + + m_pWidth->setFocus(); + + //store the visible value, for later check for changes + columnWidth = m_pWidth->value(); +} + +void ResizeColumn::slotOk() +{ + double width = m_pWidth->value(); + + //Don't generate a resize, when there isn't a change or the change is only a rounding issue + if ( fabs( width - columnWidth ) > DBL_EPSILON ) + { + ResizeColumnManipulator* manipulator = new ResizeColumnManipulator(); + manipulator->setSheet(m_pView->activeSheet()); + manipulator->setSize(width); + // TODO Stefan: + manipulator->setOldSize(columnWidth); + manipulator->add(*m_pView->selectionInfo()); + manipulator->execute(); + } + accept(); +} + +void ResizeColumn::slotDefault() +{ + Sheet* sheet = m_pView->activeSheet(); + if (!sheet) + return; + double points = sheet->columnFormat(0)->dblWidth(); + m_pWidth->setValue(KoUnit::toUserValue(points, m_pView->doc()->unit())); +} + + +#include "kspread_dlg_resize2.moc" |