Ejemplo n.º 1
0
void SelectionTool::perform_virtual(Object *o)
{
    PointObject* pointObject = (PointObject*) o;
    Point* p = pointObject->pointAt(interaction(o).point());

    if (p && interaction().click() == Interaction::DoubleClick) {
        PointEditDialog::exec_static(p,
                                     pointObject->inherits(CLASSNAME(Spline)) && ((Spline*) pointObject)->type() == Spline::Bezier,
                                     parentWidget());
    }

    if (interaction().type() == Interaction::Press) {
        if (p && !p->isSelected()) {
            _justSelectedOrRemoved = true;
        }
        if (interaction().modifiers() != Qt::SHIFT)
            pointObject->deselectAllPoints();
        if (p) {
            pointObject->selectPoint(p);
        }
    } else if (interaction().type() == Interaction::Release) {
        if (interaction().modifiers() != Qt::SHIFT) {
            pointObject->deselectAllPoints();
        }
        if (p && !p->isSelected()) {
            pointObject->selectPoint(p);
        }
        if (p && p->isSelected() && !_justSelectedOrRemoved) {
            pointObject->deselectPoint(p);
        }
        _justSelectedOrRemoved = false;
    } else if (interaction().type() == Interaction::Move) {
        for (Point* point : pointObject->selection()) {
            point->move(interaction(o).point());
        }
        if (!pointObject->selection().isEmpty()) {
            pointObject->emitChanged();
            _justSelectedOrRemoved = true;
        }
    }
}
Ejemplo n.º 2
0
void DeselectAllTool::perform_virtual(Object *o)
{
    PointObject* p = (PointObject*) o;
    p->deselectAllPoints();
}