diff options
author | Michele Calgaro <[email protected]> | 2021-05-23 20:48:35 +0900 |
---|---|---|
committer | Michele Calgaro <[email protected]> | 2021-05-29 15:17:38 +0900 |
commit | d63c9d696eb6e2539528b99afc21f4086c9defe3 (patch) | |
tree | b3bfc97a66431a12cdd8f9379c0072673ede43df /karbon/dockers/vstyledocker.cpp | |
parent | 5363fe3c36504c37bdc6dcfafd5f71daeae251e8 (diff) | |
download | koffice-d63c9d696eb6e2539528b99afc21f4086c9defe3.tar.gz koffice-d63c9d696eb6e2539528b99afc21f4086c9defe3.zip |
Renaming of files in preparation for code style tools.
Signed-off-by: Michele Calgaro <[email protected]>
(cherry picked from commit 8b78a8791bc539bcffe7159f9d9714d577cb3d7d)
Diffstat (limited to 'karbon/dockers/vstyledocker.cpp')
-rw-r--r-- | karbon/dockers/vstyledocker.cpp | 303 |
1 files changed, 303 insertions, 0 deletions
diff --git a/karbon/dockers/vstyledocker.cpp b/karbon/dockers/vstyledocker.cpp new file mode 100644 index 00000000..9f3d12e6 --- /dev/null +++ b/karbon/dockers/vstyledocker.cpp @@ -0,0 +1,303 @@ +/* This file is part of the KDE project + Made by Tomislav Lukman ([email protected]) + Copyright (C) 2002, 2003 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. +*/ + +#include <tqlabel.h> +#include <tqlayout.h> +#include <tqtabwidget.h> +#include <tqsize.h> +#include <tqhbuttongroup.h> +#include <tqtoolbutton.h> + +#include <tdelocale.h> +#include <kiconloader.h> +#include <KoMainWindow.h> +#include <KoFilterManager.h> +#include <tdefiledialog.h> + +#include "karbon_part.h" +#include "karbon_view.h" +#include "karbon_factory.h" +#include "karbon_resourceserver.h" +#include "karbon_drag.h" +#include "vselection.h" +#include "vlayer.h" +#include "vfill.h" +#include "vfillcmd.h" +#include "vtransformcmd.h" + +#include "vstyledocker.h" + +#include <unistd.h> + +ClipartChooser::ClipartChooser( TQSize iconSize, TQWidget *parent, const char *name ) + : KoIconChooser( iconSize, parent, name ) +{ + setDragEnabled( true ); +} + +void +ClipartChooser::startDrag() +{ + KoIconChooser::startDrag(); + KarbonDrag* kd = new KarbonDrag( this ); + VObjectList objects; + VClipartIconItem *selectedClipart = (VClipartIconItem *)currentItem(); + double s = kMax( selectedClipart->originalWidth(), selectedClipart->originalHeight() ); + VObject *clipart = selectedClipart->clipart()->clone(); + + TQWMatrix mat( s, 0, 0, -s, -( s / 2 ), ( s / 2 ) ); + + VTransformCmd trafo( 0L, mat ); + trafo.visit( *clipart ); + + objects.append( clipart ); + kd->setObjectList( objects ); + kd->dragCopy(); +} + +VStyleDocker::VStyleDocker( KarbonPart* part, KarbonView* parent, const char* /*name*/ ) + : TQWidget(), m_part ( part ), m_view( parent ) +{ + setCaption( i18n( "Resources" ) ); + + mTabWidget = new TQTabWidget( this ); + + //Pattern + KoPatternChooser *pPatternChooser = new KoPatternChooser( KarbonFactory::rServer()->patterns(), mTabWidget ); + pPatternChooser->setCaption( i18n( "Patterns" ) ); + + connect( pPatternChooser, TQT_SIGNAL(selected( KoIconItem * ) ), this, TQT_SLOT( slotItemSelected( KoIconItem * ))); + connect( KarbonFactory::rServer(), TQT_SIGNAL( patternAdded( KoIconItem * )), pPatternChooser, TQT_SLOT( addPattern( KoIconItem * ))); + connect( KarbonFactory::rServer(), TQT_SIGNAL( patternRemoved( KoIconItem * )), pPatternChooser, TQT_SLOT( removePattern( KoIconItem * ))); + mTabWidget->addTab( pPatternChooser, i18n( "Patterns" ) ); + + //Clipart + ClipartWidget *pClipartWidget = new ClipartWidget( KarbonFactory::rServer()->cliparts(), part, mTabWidget ); + mTabWidget->addTab( pClipartWidget, i18n( "Clipart" ) ); + + TQVBoxLayout *mainWidgetLayout = new TQVBoxLayout( this, 2 ); + mainWidgetLayout->addWidget( mTabWidget ); + mainWidgetLayout->activate(); + setMinimumHeight( 174 ); + setMinimumWidth( 194 ); +} + +VStyleDocker::~VStyleDocker() +{ +} + +void VStyleDocker::slotItemSelected( KoIconItem *item ) +{ + VPattern *pattern = (VPattern *)item; + if( !pattern ) return; + kdDebug(38000) << "loading pattern : " << pattern->tilename().latin1() << endl; + if( m_part && m_part->document().selection() ) + { + VFill fill; + fill.pattern() = *pattern;//.load( pattern->tilename() ); + //fill.setColor( *m_color ); + fill.setType( VFill::patt ); + m_part->addCommand( new VFillCmd( &m_part->document(), fill ), true ); + } +} + +void +VStyleDocker::mouseReleaseEvent( TQMouseEvent * ) +{ +} + +ClipartWidget::ClipartWidget( TQPtrList<VClipartIconItem>* clipartItems, KarbonPart *part, TQWidget* parent ) + : TQWidget( parent ), m_part( part ) +{ + TDEIconLoader il; + + TQVBoxLayout* layout = new TQVBoxLayout( this ); + layout->addWidget( m_clipartChooser = new ClipartChooser( TQSize( 32, 32 ), this ) ); + layout->addWidget( m_buttonGroup = new TQHButtonGroup( this ) ); + TQToolButton* m_addClipartButton; + m_buttonGroup->insert( m_addClipartButton = new TQToolButton( m_buttonGroup ) ); + m_buttonGroup->insert( m_importClipartButton = new TQToolButton( m_buttonGroup ) ); + m_buttonGroup->insert( m_deleteClipartButton = new TQToolButton( m_buttonGroup ) ); + m_addClipartButton->setIconSet( SmallIcon( "14_layer_newlayer" ) ); + m_addClipartButton->setTextLabel( i18n( "Add" ) ); + m_importClipartButton->setIconSet( SmallIcon( "fileimport" ) ); + m_importClipartButton->setTextLabel( i18n( "Import" ) ); + m_deleteClipartButton->setIconSet( SmallIcon( "14_layer_deletelayer" ) ); + m_deleteClipartButton->setTextLabel( i18n( "Delete" ) ); + + m_buttonGroup->setInsideMargin( 3 ); + + //setFrameStyle( Box | Sunken ); + layout->setMargin( 3 ); + + connect( m_buttonGroup, TQT_SIGNAL( clicked( int ) ), this, TQT_SLOT( slotButtonClicked( int ) ) ); + //connect( m_deleteClipartButton, TQT_SIGNAL( clicked() ), this, TQT_SLOT( deleteClipart() ) ); + connect( m_clipartChooser, TQT_SIGNAL( selected( KoIconItem* ) ), this, TQT_SLOT( clipartSelected( KoIconItem* ) ) ); + + m_clipartChooser->setAutoDelete( false ); + VClipartIconItem* item = 0L; + + for( item = clipartItems->first(); item; item = clipartItems->next() ) + m_clipartChooser->addItem( item ); + + m_clipartItem = ( clipartItems->first() ) ? clipartItems->first()->clone() : 0; + if( !m_clipartItem ) + m_deleteClipartButton->setEnabled( false ); +} + +ClipartWidget::~ClipartWidget() +{ + delete m_clipartItem; +} + +VClipartIconItem* ClipartWidget::selectedClipart() +{ + return m_clipartItem; +} + +void +ClipartWidget::clipartSelected( KoIconItem* item ) +{ + if( item ) + { + delete m_clipartItem; + VClipartIconItem* clipartItem = ( VClipartIconItem* ) item; + m_deleteClipartButton->setEnabled( clipartItem->canDelete() ); + m_selectedItem = clipartItem; + m_clipartItem = clipartItem->clone(); + } +} + +void +ClipartWidget::addClipart() +{ + VObject* clipart = 0L; + VSelection* selection = m_part->document().selection(); + + if( selection->objects().count() == 1 ) + { + clipart = selection->objects().getFirst()->clone(); + clipart->setParent( 0L ); + } + + if( selection->objects().count() > 1 ) + { + TQPtrVector<VObject> objects; + selection->objects().toVector( &objects ); + VGroup* group = new VGroup( 0L ); + + for( unsigned int i = 0; i < objects.count(); i++ ) + { + VObject *obj = objects[ i ]->clone(); + obj->setParent( 0L ); + group->append( obj ); + } + + clipart = group; + } + + if( clipart ) + { + KoRect clipartBox = clipart->boundingBox(); + double scaleFactor = 1. / kMax( clipartBox.width(), clipartBox.height() ); + TQWMatrix trMatrix( scaleFactor, 0, 0, scaleFactor, -clipartBox.x() * scaleFactor, -clipartBox.y() * scaleFactor ); + + VTransformCmd trafo( 0L, trMatrix ); + trafo.visit( *clipart ); + + // center the clipart + trMatrix.reset(); + double size = kMax( clipart->boundingBox().width(), clipart->boundingBox().height() ); + trMatrix.translate( ( size - clipart->boundingBox().width() ) / 2, ( size - clipart->boundingBox().height() ) / 2 ); + + trafo.setMatrix( trMatrix ); + trafo.visit( *clipart ); + + // remove Y-mirroring + trMatrix.reset(); + trMatrix.scale( 1, -1 ); + trMatrix.translate( 0, -1 ); + + trafo.setMatrix( trMatrix ); + trafo.visit( *clipart ); + + m_clipartChooser->addItem( KarbonFactory::rServer()->addClipart( clipart, clipartBox.width(), clipartBox.height() ) ); + } + + m_clipartChooser->updateContents(); +} + +void +ClipartWidget::importClipart() +{ + TQStringList filter; + filter << "application/x-karbon" << "image/svg+xml" << "image/x-wmf" << "image/x-eps" << "application/postscript"; + KFileDialog *dialog = new KFileDialog( "foo", TQString(), 0L, "Choose Graphic to Add", true); + dialog->setMimeFilter( filter, "application/x-karbon" ); + if( dialog->exec()!=TQDialog::Accepted ) + { + delete dialog; + return; + } + TQString fname = dialog->selectedFile(); + delete dialog; + if( m_part->nativeFormatMimeType() == dialog->currentMimeFilter().latin1() ) + m_part->mergeNativeFormat( fname ); + else + { + KoFilterManager man( m_part ); + KoFilter::ConversionStatus status; + TQString importedFile = man.import( fname, status ); + if( status == KoFilter::OK ) + m_part->mergeNativeFormat( importedFile ); + if( !importedFile.isEmpty() ) + unlink( TQFile::encodeName( importedFile ) ); + if( status != KoFilter::OK ) + return; + } + m_part->document().selection()->clear(); + m_part->document().selection()->append( m_part->document().activeLayer()->objects() ); + addClipart(); + m_part->document().selection()->clear(); + m_part->document().removeLayer( m_part->document().activeLayer() ); +} + +void +ClipartWidget::deleteClipart() +{ + VClipartIconItem* clipartItem = m_clipartItem; + KarbonFactory::rServer()->removeClipart( clipartItem ); + m_clipartChooser->removeItem( m_selectedItem ); + m_clipartChooser->updateContents(); +} + +void +ClipartWidget::slotButtonClicked( int id ) +{ + switch( id ) + { + case 0: addClipart(); break; + case 1: importClipart(); break; + case 2: deleteClipart(); + } +} + +#include "vstyledocker.moc" + |