Qt

 view release on metacpan or  search on metacpan

qtgui/examples/tools/undoframework/Commands.pm  view on Meta::CPAN

package MoveCommand;

use strict;
use warnings;
use QtCore4;
use QtGui4;
use DiagramItem;
# [0]
use QtCore4::isa qw( Qt::UndoCommand );
use constant { Id => 1234 };

sub id() { return Id; }

sub myDiagramItem() {
    return this->{myDiagramItem};
}

sub myOldPos() {
    return this->{myOldPos};
}

sub newPos() {
    return this->{newPos};
}

# [0]
sub NEW
{
    my ($class, $diagramItem, $oldPos, $parent) = @_;
    $class->SUPER::NEW($parent);
    this->{myDiagramItem} = $diagramItem;
    this->{newPos} = $diagramItem->pos();
    this->{myOldPos} = $oldPos;
}
# [0]

# [1]
sub mergeWith
{
    my ($command) = @_;
    my $moveCommand = $command;
    my $item = $moveCommand->myDiagramItem;

    if (myDiagramItem != $item) {
        return 0;
    }

    this->{newPos} = $item->pos();
    setText(Qt::String( Qt::Object::tr('Move %1') )
        ->arg(CommandsCommon::createCommandString(myDiagramItem, newPos)));

    return 1;
}
# [1]

# [2]
sub undo
{
    myDiagramItem->setPos(myOldPos);
    myDiagramItem->scene()->update();
    setText(Qt::String( Qt::Object::tr('Move %1') )
        ->arg(CommandsCommon::createCommandString(myDiagramItem, newPos)));
}
# [2]

# [3]
sub redo
{
    myDiagramItem->setPos(newPos);
    setText(Qt::String( Qt::Object::tr('Move %1') )
        ->arg(CommandsCommon::createCommandString(myDiagramItem, newPos)));
}



( run in 0.593 second using v1.01-cache-2.11-cpan-4ab04211f4c )