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/karbon/widgets/vselecttoolbar.cpp

125 lines
4.5 KiB

/* This file is part of the KDE project
Made by Tomislav Lukman (tomislav.lukman@ck.tel.hr)
Copyright (C) 2002, The Karbon Developers
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.
*/
/* vselecttoolbar.cpp */
#include <tqlabel.h>
#include <tdelocale.h>
#include <kdebug.h>
#include "KoUnitWidgets.h"
#include "vselecttoolbar.h"
#include "karbon_view.h"
#include "karbon_part.h"
#include "vselection.h"
#include "vtransformcmd.h"
#include <KoRect.h>
VSelectToolBar::VSelectToolBar( KarbonView *view, const char* name ) : TDEToolBar( view, name ), m_view( view )
{
setCaption( i18n( "Object Properties" ) );
TQLabel *x_label = new TQLabel( i18n( "X:" ), this, "tde toolbar widget" );
insertWidget( 0, x_label->width(), x_label );
m_x = new KoUnitDoubleSpinBox( this, 0.0, 1000.0, 0.5 );
connect( m_x, TQ_SIGNAL( valueChanged( double ) ), this, TQ_SLOT( slotXChanged( double ) ) );
insertWidget( 1, m_x->width(), m_x );
TQLabel *y_label = new TQLabel( i18n( "Y:" ), this, "tde toolbar widget" );
insertWidget( 2, y_label->width(), y_label );
m_y = new KoUnitDoubleSpinBox( this, 0.0, 1000.0, 0.5 );
connect( m_y, TQ_SIGNAL( valueChanged( double ) ), this, TQ_SLOT( slotYChanged( double ) ) );
insertWidget( 3, m_y->width(), m_y );
insertSeparator( 4 );
TQLabel *w_label = new TQLabel( i18n( "selection width", "Width:" ), this, "tde toolbar widget" );
insertWidget( 5, w_label->width(), w_label );
m_width = new KoUnitDoubleSpinBox( this, 0.0, 1000.0, 0.5 );
connect( m_width, TQ_SIGNAL( valueChanged( double ) ), this, TQ_SLOT( slotWidthChanged( double ) ) );
insertWidget( 6, m_width->width(), m_width );
TQLabel *h_label = new TQLabel( i18n( "Height:" ), this, "tde toolbar widget" );
insertWidget( 7, h_label->width(), h_label );
m_height = new KoUnitDoubleSpinBox( this, 0.0, 1000.0, 0.5 );
connect( m_height, TQ_SIGNAL( valueChanged( double ) ), this, TQ_SLOT( slotHeightChanged( double ) ) );
insertWidget( 8, m_height->width(), m_height );
connect( m_view, TQ_SIGNAL( selectionChange() ), this, TQ_SLOT( slotSelectionChanged() ) );
}
VSelectToolBar::~VSelectToolBar()
{
}
void
VSelectToolBar::slotXChanged( double newval )
{
double dx = newval - m_view->part()->document().selection()->boundingBox().topLeft().x();
m_view->part()->addCommand( new VTranslateCmd( &m_view->part()->document(), dx, 0.0 ), true );
}
void
VSelectToolBar::slotYChanged( double newval )
{
double dy = newval - m_view->part()->document().selection()->boundingBox().topLeft().y();
m_view->part()->addCommand( new VTranslateCmd( &m_view->part()->document(), 0.0, dy ), true );
}
void
VSelectToolBar::slotWidthChanged( double newval )
{
if( newval != 0.0 )
{
double sx = newval / m_view->part()->document().selection()->boundingBox().width();
KoPoint sp = m_view->part()->document().selection()->boundingBox().topLeft();
m_view->part()->addCommand( new VScaleCmd( &m_view->part()->document(), sp, sx, 1.0 ), true );
}
}
void
VSelectToolBar::slotHeightChanged( double newval )
{
if( newval != 0.0 )
{
double sy = newval / m_view->part()->document().selection()->boundingBox().height();
KoPoint sp = m_view->part()->document().selection()->boundingBox().bottomLeft();
m_view->part()->addCommand( new VScaleCmd( &m_view->part()->document(), sp, 1.0, sy ), true );
}
}
void
VSelectToolBar::slotSelectionChanged()
{
m_x->blockSignals( true );
m_y->blockSignals( true );
m_width->blockSignals( true );
m_height->blockSignals( true );
KoRect rect = m_view->part()->document().selection()->boundingBox();
m_x->setValue( rect.topLeft().x() );
m_y->setValue( rect.topLeft().y() );
m_width->setValue( rect.width() );
m_height->setValue( rect.height() );
m_x->blockSignals( false );
m_y->blockSignals( false );
m_width->blockSignals( false );
m_height->blockSignals( false );
}
#include "vselecttoolbar.moc"