Exemplo n.º 1
0
void PaintWidget::selectFigure( int layer, int obj)
{
	if( painter.inKeyPressedHandler ) return;

	GObjectInterface *o = painter.layers[layer]->object( obj );

	if(layer != painter.currentLayer)
	{
		painter.currentLayer = layer;
		painter.setFrame( painter.currentFrame, false );
		emit layerSelected();
	}

	if( o == 0 )
	{
		painter.selection.reset();
		emit figureSelected( layer, -1 );
		return;
	}


	if( !o->isVisible() || o->isBlocked())
	{
		painter.selection.reset();
		painter.update();
		return;
	}

	painter.selection.setSelected( o );
	painter.update();
	emit figureSelected( layer, obj );
}
Exemplo n.º 2
0
bool PaintWidget::reset()
{
    emit zoomEvent(scaleVal = 1);

    setFrame(0.0, false);
    if( !painter.isEnabled() ) return false;

    setViewportColor( QColor( 100, 100, 100 ) );

    BACKGROUND( painter.background )->reset();

    setViewportType( fixedViewport );
    setViewportFixedSize( QSize( 640, 480 ) );

    for(int i=0; i<painter.layers.size(); i++)
    {
        while( painter.layers[i]->countObjects() > 0 )
                delete painter.layers[i]->remove( 0 );
        delete painter.layers[i];
    }
    painter.layers.clear();

    painter.addLayer(true, false, tr("Layer ") + "0");
    painter.selection.reset();
    painter.inKeyPressedHandler = false;
    painter.inSelectionMode = false;
    update();

    emit figureSelected( 0, -1);
    emit allLayersChanged();
    emit countFramesChanged( countFrames() );

    return true;
}
Exemplo n.º 3
0
void RealPaintWidget::setFromUndo(QObject* undo)
{
	UndoStructure* properties = UNDO(undo);

	fixedSize = properties->fixedSize;
	size = properties->size;


	for(int i=0; i<layers.size(); i++)
		delete layers[i];

	layers.clear();

	//QMessageBox::warning(this,"Trace2",QString::number(properties->layers.size()));

	for(int i=0; i<properties->layers.size(); i++)
		layers.append(properties->layers[i]->copyLayer());

	//delete background;
	//background = properties->background;
	currentLayer = properties->currentLayer;
	currentFrame = properties->currentFrame;
	inKeyPressedHandler = properties->inKeyPressedHandler;
	inSelectionMode = properties->inSelectionMode;
	selectionRect = properties->selectionRect;
	selection.reset();
	emit figureSelected(0,-1);
	update();
	emit undoEvents();
}
Exemplo n.º 4
0
RealPaintWidget::RealPaintWidget( plugin::PluginsManager *manager, QWidget *parent ):
	RPWInterface( parent ), background( 0 ),
	fixedSize( true ), size( 640, 480 ),
	selection( manager, this, QRect( QPoint( 0, 0 ), size ) ),
	inKeyPressedHandler( false ),
	currentTool( 0 ), inSelectionMode( false ), _manager(manager)
{
	GLayer* layer = new GLayer();
	layer->setVisible(true);
	layer->setObjectName(tr("Layer") + " 0");
	layers.append(layer);
	currentLayer = 0;
	currentFrame = 0;
	layers[currentLayer]->addFrameForLayer(currentFrame,false);
	emit figureSelected(currentLayer, -1);
    paintConMenu = new QMenu(this);
	propertiesAct = paintConMenu->addAction(tr("Properties..."));
	setAutoFillBackground( false );
	resize( size );

	connect( propertiesAct,SIGNAL( triggered( bool ) ), this, SLOT( onPropertiesObj() ) );
	connect( &selection, SIGNAL( changed() ), this, SLOT( update() ) );

	manager->addPlugins(this, "RealPaint");

    isMousePress = false;
    setMouseTracking(true);

    //qDebug() << getPoint();
    QPoint p(10,10);
    emit mouseMoveEvent(QWidget::mapToParent(p),p);
}
Exemplo n.º 5
0
bool PaintWidget::load( QDataStream &stream )
{
	if( !painter.isEnabled() ) return false;


	for(int i=0; i<painter.layers.size(); i++)
	{
		while( painter.layers[i]->countObjects() > 0 )
				delete painter.layers[i]->remove( 0 );
		delete painter.layers[i];
	}

	painter.layers.clear();
	QString signature;
	stream >> signature;

	if( signature != SIGNATURE )
		return false;

	stream >> transparent;
	stream >> viewportColor;

	if( !transparent )
		setViewportColor( viewportColor );
	else
		doViewportTransparent();

	BACKGROUND( painter.background )->load( stream );

	int type;
	stream >> type;
	setViewportType( ( ViewportType ) type );

	stream >> painter.size;
	setViewportFixedSize( painter.size );
	int countLayer;
	stream >> countLayer;

	for(int i=0; i<countLayer; i++)
	{
			QString name;
			stream >> name;
			painter.addLayer(true, false, name);
			painter.layers[i]->loadLayer( stream );
	}

	painter.selection.reset();
	painter.inKeyPressedHandler = false;
	painter.inSelectionMode = false;
	update();

	emit figureSelected( 0 , -1);
	emit allLayersChanged();
	emit countFramesChanged( countFrames() );

    setFrame(0.0, false);

	return true;
}
Exemplo n.º 6
0
void RealPaintWidget::addLayer(bool visible, bool blocked, const QString &name)
{
	GLayer* layer = new GLayer();
	layer->setObjectName(name);
	layer->setVisible(visible);
	layer->setBlocked(blocked);
	layer->addFrameForLayer(0, false);
	layers.append(layer);
	currentLayer = layers.size()-1;

	selection.reset();
	emit figureSelected(currentLayer, -1);
	update();
	emit StateChanged(tr("Add Layer"));

}
Exemplo n.º 7
0
void PaintWidget::deleteSelected()
{
	if( !canDeleteSelected() )
		return;

	int count = painter.selection.countSelected();

	for( int i = 0; i < count; i++ )
	{
		delete painter.layers[painter.currentLayer]->remove(
				painter.layers[painter.currentLayer]->objectIndex(
						GOBJECT(painter.selection.selected( i ))) );
	}

	painter.selection.reset();
	update();

	emit figureSelected( painter.currentLayer , -1);
	emit allLayersChanged();
	emit countFramesChanged( countFrames() );
	emit StateChanged("Delete");
}
Exemplo n.º 8
0
void PaintWidget::pasteFromClipboard()
{
	if( !canPasteFromClipboard() )
		return;

	const QMimeData *mime = QApplication::clipboard()->mimeData();
	if( mime == 0 )
		return;

	QByteArray data = mime->data( MIMETYPE );
	if( data.size() <= 0 ) return;

	QDataStream stream( data );
	GObjectInterface *object = GObject::loadObject( stream );
	if( object == 0 ) return;

	GContainer *o = qobject_cast< GContainer* >( object );
	if( ( o == 0 ) || ( o->countObjects() == 0 ) )
	{
		delete object;
		return;
	}

	int frameObj = (int)(o->frame());

	o->deleteFrames(frameObj);
	o->addFrame(painter.currentFrame, true);
	o->deleteFrames(painter.currentFrame);

	QVector <int> frames = painter.layers[painter.currentLayer]->getFrames();
	int countFrames = frames.size();

	for( int i = 0; i < countFrames; i++ )
	{
		if( frames[i] != painter.currentFrame )
			o->addFrame(frames[i], false);
	}

	o->cloneFrameToAll(painter.currentFrame);

	for( int i = 0; i < countFrames; i++ )
	{
		if( painter.layers[painter.currentLayer]->getPositionFrame(i) != painter.currentFrame )
		{
			o->setFrame( painter.layers[painter.currentLayer]->getPositionFrame(i) );
			o->setVisible( false );
			o->setBlocked( false );
		}
		else
		{
			o->setFrame( painter.layers[painter.currentLayer]->getPositionFrame(i) );
			o->setVisible( true );
			o->setBlocked( false );
		}
	}
	o->setFrame( painter.currentFrame );

	int count = o->countObjects();
	for( int i = count - 1; i >= 0; i-- )
		painter.layers[painter.currentLayer]->add( o->object( i ), true );

	painter.selection.reset();
	update();

	emit figureSelected( painter.currentLayer , -1);
	emit allLayersChanged();
	emit StateChanged("Paste");
}
Exemplo n.º 9
0
void RealPaintWidget::mouseReleaseEvent( QMouseEvent * event )
{
	QPoint pos = event->pos();
	int button = event->button();

	if(button == Qt::RightButton)
	{
		return;
	}

	if( fixedSize )
	{
		QSize sz = rect().size() - size;
		pos -= QPoint( sz.width() / 2, sz.height() / 2 );
	}

	if( inSelectionMode )
	{
		inSelectionMode = false;
			int countObjects = layers[currentLayer]->countObjects();
			selection.reset();
			for( int i = 0; i < countObjects; i++ )
			{
				if( !layers[currentLayer]->object( i )->isVisible() || layers[currentLayer]->object( i )->isBlocked() )
					continue;

				if( layers[currentLayer]->object( i )->boundingRect().intersects( selectionRect ) )
					selection.addSelected( layers[currentLayer]->object( i ) );
			}
			if( selection.countSelected() != 1 )
			{
				//emit figureSelected( currentLayer, -1 );
				update();
				return;
			}
			else
				emit figureSelected(currentLayer, layers[currentLayer]->objectIndex( GOBJECT(selection.selected( 0 )) ) );
			update();
			return;
	}

	if( currentTool != 0 )
	{
		GObjectInterface *s = layers[currentLayer]->object( 0 );
		if( s != 0 )
			s->cloneFrameToAll(currentFrame);

		int countFrames = layers[currentLayer]->countFrames();
		for( int i = 0; i < countFrames; i++ )
		{
			if( layers[currentLayer]->getPositionFrame(i) != currentFrame )
			{
				s->setFrame( layers[currentLayer]->getPositionFrame(i) );
				s->setVisible( false );
				s->setBlocked( false );
			}
		}
		s->setFrame( currentFrame );

		//emit StateChanged("Create object");

        isMousePress = false;
		if( currentTool->createStyle() == FigureToolInterface::paint )
		{
			selection.setSelected( s );
			update();
			return;
		}
	}

	selection.mouseRelease( event->button(), pos, event->modifiers() );
}
Exemplo n.º 10
0
void RealPaintWidget::mousePressEvent( QMouseEvent *event )
{
	QPoint pos = event->pos();
	int button = event->button();

	if(button == Qt::LeftButton || selection.isInAddPointMode())
	{
		if( fixedSize )
		{
			QSize sz = rect().size() - size;
			pos -= QPoint( sz.width() / 2, sz.height() / 2 );
		}

		if( currentTool != 0 )
		{
            isMousePress = true;
			GObjectInterface * o = GObject::create( currentTool, pos,
								currentTool->figureName(), currentFrame);

			layers[currentLayer]->add( GOBJECT(o), true );

			selection.setSelected( o );
			selection.setIsNewFigure(true);

			emit objectCreated();
			emit figureSelected( currentLayer, layers[currentLayer]->objectIndex( GOBJECT(o) ) );

			if( currentTool->createStyle() != FigureToolInterface::paint )
			{
				selection.mousePress( event->button(), pos, event->modifiers() );
				selection.setCreateFigureMode( true );
			}
			else
				selection.reset();

			QVector <int> frames = layers[currentLayer]->getFrames();
			for( int i = 0; i < frames.size(); i++ )
			{
				if( frames[i] != currentFrame )
					o->addFrame(frames[i], false);
			}
			return;
		}

		if( selection.mousePress( event->button(), pos, event->modifiers() ) )
			return;

		if(button == Qt::RightButton && !selection.isInAddPointMode())
		{
			paintConMenu->exec(QWidget::mapToGlobal(pos),0);
			return;
		}

		GContainer * cont = GCONTAINER(selection.getSelected());
		if(button != Qt::RightButton && cont != 0 && selection.isInAddPointMode() && cont->countObjects()==1)
		{
			cont->addPointToEnd(pos);
			emit StateChanged("Add point");
			return;
		}

		GObjectInterface* o = 0;
		for(int i=0;i<layers.size();i++)
		{
			o = layers[i]->contains( pos );
			if(o != 0)
			{
				currentLayer = i;
				break;
			}
		}

		if( o == 0 )
		{
			selection.reset();
			emit figureSelected( currentLayer, -1 );

			inSelectionMode = true;
			selectionRect = QRect( pos, QSize( 0, 0 ) );
			update();
			return;
		}



		if( ( ( event->modifiers() & Qt::ControlModifier ) == 0 ) ||
			( selection.countSelected() <= 0 ) )
		{
			selection.setSelected( o );
			emit figureSelected(currentLayer, layers[currentLayer]->objectIndex( GOBJECT(o) ) );
		}
		else
		{
			selection.addSelected( o );
			inKeyPressedHandler = true;
			emit figureSelected( currentLayer, -1 );
			inKeyPressedHandler = false;

		}


		selection.mousePress( event->button(), pos, event->modifiers() );
	}

	if(button == Qt::RightButton && !(selection.isInAddPointMode()))
	{
		if(selection.countSelected() != 1)
			propertiesAct->setEnabled(false);
		else
			propertiesAct->setEnabled(true);
		paintConMenu->exec(QWidget::mapToGlobal(pos),0);
	}


}