Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: wawanbreton/cvcomposer
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: v1.3
Choose a base ref
...
head repository: wawanbreton/cvcomposer
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: master
Choose a head ref
  • 1 commit
  • 7 files changed
  • 1 contributor

Commits on Sep 13, 2022

  1. Copy the full SHA
    4610671 View commit details
Showing with 57 additions and 17 deletions.
  1. +1 −1 gui/command/createnodecommand.cpp
  2. +1 −5 gui/command/movenodecommand.cpp
  3. +45 −4 gui/composerscene.cpp
  4. +7 −2 gui/composerscene.h
  5. +0 −2 gui/composerwidget.cpp
  6. +2 −2 gui/genericnodeitem.h
  7. +1 −1 gui/interactivegraphicsview.cpp
2 changes: 1 addition & 1 deletion gui/command/createnodecommand.cpp
Original file line number Diff line number Diff line change
@@ -16,7 +16,7 @@ CreateNodeCommand::CreateNodeCommand(ComposerScene *scene, const QString &nodeNa

void CreateNodeCommand::redo()
{
_scene->addNode(_nodeName, _nodeUid)->setPos(_pos);
_scene->addNode(_nodeName, _nodeUid, _pos);
}

void CreateNodeCommand::undo()
6 changes: 1 addition & 5 deletions gui/command/movenodecommand.cpp
Original file line number Diff line number Diff line change
@@ -35,9 +35,5 @@ bool MoveNodeCommand::mergeWith(const QUndoCommand *other)

void MoveNodeCommand::moveToPos(const QPointF &pos)
{
auto node = _composerScene->findNode(_nodeUid);
if(node)
{
node->setPos(pos);
}
_composerScene->moveNode(_nodeUid, pos);
}
49 changes: 45 additions & 4 deletions gui/composerscene.cpp
Original file line number Diff line number Diff line change
@@ -55,6 +55,8 @@ ComposerScene::ComposerScene(QUndoStack *commandsStack, QObject *parent) :
init();

_scheduler->start();

computeOptimalSceneRect();
}

ComposerScene::ComposerScene(const QDomDocument &doc,
@@ -100,17 +102,17 @@ const QList<GenericNodeItem *> &ComposerScene::getNodes() const
return _nodes;
}

GenericNodeItem *ComposerScene::findNode(const QUuid &uid) const
void ComposerScene::moveNode(const QUuid &uid, const QPointF &pos)
{
for(GenericNodeItem *item : _nodes)
{
if(item->getNode()->getUid() == uid)
{
return item;
item->setPos(pos);
computeOptimalSceneRect();
return;
}
}

return nullptr;
}

const QList<ConnectionItem *> &ComposerScene::getConnections() const
@@ -150,6 +152,12 @@ GenericNodeItem *ComposerScene::addNode(const QString &nodeName, const QUuid &ui
return item;
}

void ComposerScene::addNode(const QString &nodeName, const QUuid &uid, const QPointF &pos)
{
addNode(nodeName, uid)->setPos(pos);
computeOptimalSceneRect();
}

void ComposerScene::save(QDomDocument &doc, QMainWindow *mainWindow) const
{
QDomElement rootNode = doc.createElement(QCoreApplication::applicationName().toLower());
@@ -275,6 +283,8 @@ void ComposerScene::load(const QDomDocument &doc, QMainWindow *mainWindow)
_scheduler->setSettings(settings);
}
}

computeOptimalSceneRect();
}

void ComposerScene::loadNode(const QDomElement &node)
@@ -431,6 +441,8 @@ void ComposerScene::dropEvent(QGraphicsSceneDragDropEvent *event)

void ComposerScene::mousePressEvent(QGraphicsSceneMouseEvent *event)
{
_mouseMoving = true;

if(event->button() == Qt::LeftButton)
{
event->setModifiers(event->modifiers() & ~Qt::ControlModifier);
@@ -652,6 +664,8 @@ void ComposerScene::mouseMoveEvent(QGraphicsSceneMouseEvent *event)

void ComposerScene::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
{
_mouseMoving = false;

// Disable multi-selection
event->setModifiers(event->modifiers() & ~Qt::ControlModifier);

@@ -686,6 +700,7 @@ void ComposerScene::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
{
_editedNode.item = nullptr;
event->widget()->setCursor(Qt::OpenHandCursor);
computeOptimalSceneRect();
}
else
{
@@ -724,6 +739,7 @@ void ComposerScene::onNodeRemoved(const Node *node)
removeItem(nodeItem);
delete nodeItem;
_nodes.removeAll(nodeItem);
computeOptimalSceneRect();
break;
}
}
@@ -912,3 +928,28 @@ QUuid ComposerScene::loadUid(const QDomElement &node, const QString &attributePr

return uid;
}

void ComposerScene::computeOptimalSceneRect()
{
if(!_mouseMoving)
{
constexpr double extends = 1000;
QRectF rect;

for(const GenericNodeItem *item : _nodes)
{
QRectF itemRect = item->boundingRect();
itemRect.translate(item->pos());
if(rect.isEmpty())
{
rect = itemRect;
}
else
{
rect = rect.united(itemRect);
}
}

setSceneRect(rect.adjusted(-extends, -extends, extends, extends));
}
}
9 changes: 7 additions & 2 deletions gui/composerscene.h
Original file line number Diff line number Diff line change
@@ -46,15 +46,15 @@ class ComposerScene : public QGraphicsScene

const QList<GenericNodeItem *> &getNodes() const;

GenericNodeItem *findNode(const QUuid &uid) const;
void moveNode(const QUuid &uid, const QPointF &pos);

const QList<ConnectionItem *> &getConnections() const;

const ComposerScheduler *getScheduler() const;

ComposerScheduler *accessScheduler();

GenericNodeItem *addNode(const QString &nodeName, const QUuid &uid);
void addNode(const QString &nodeName, const QUuid &uid, const QPointF &pos);

const ComposerModel *getModel() const { return _model; }

@@ -119,6 +119,10 @@ class ComposerScene : public QGraphicsScene

QUuid loadUid(const QDomElement &node, const QString &attributePrefix = "");

void computeOptimalSceneRect();

GenericNodeItem *addNode(const QString &nodeName, const QUuid &uid);

private:
struct EditedConnection
{
@@ -146,4 +150,5 @@ class ComposerScene : public QGraphicsScene
EditedNode _editedNode;
QList<ConnectionItem *> _connections;
QList<GenericNodeItem *> _nodes;
bool _mouseMoving{false};
};
2 changes: 0 additions & 2 deletions gui/composerwidget.cpp
Original file line number Diff line number Diff line change
@@ -74,6 +74,4 @@ void ComposerWidget::replaceScene(ComposerScene *newScene)
{
_helpLabel->hide();
}

setSceneRect(-3000, -3000, 6000, 6000);
}
4 changes: 2 additions & 2 deletions gui/genericnodeitem.h
Original file line number Diff line number Diff line change
@@ -74,12 +74,12 @@ class GenericNodeItem : public QObject, public QGraphicsItem

bool startDragging(const QPointF &mousePos);

virtual QRectF boundingRect() const override;

signals:
void plugValueChanged(const QString &name, const QVariant &value);

protected:
virtual QRectF boundingRect() const override;

virtual void paint(QPainter *painter,
const QStyleOptionGraphicsItem *option,
QWidget *widget) override;
2 changes: 1 addition & 1 deletion gui/interactivegraphicsview.cpp
Original file line number Diff line number Diff line change
@@ -26,7 +26,7 @@
InteractiveGraphicsView::InteractiveGraphicsView(QWidget *parent) :
QGraphicsView(parent),
_zoom(0),
_minZoom(1),
_minZoom(0),
_maxZoom(10)
{
resetZoom();