Updated bus rendering
This commit is contained in:
1 parent
5cf8235608
commit
aac972c6ca
11 files changed
+142
-64
No files matched your search
@@ -6,7 +6,6 @@
|
||||
#include <QMenu>
|
||||
#include <QLine>
|
||||
#include <QGraphicsSceneContextMenuEvent>
|
||||
#include <iostream>
|
||||
|
||||
namespace display {
|
||||
|
||||
@@ -96,6 +95,18 @@ void Component::contextMenuEvent(QGraphicsSceneContextMenuEvent *event) {
|
||||
return QGraphicsItem::itemChange(change, value);
|
||||
}
|
||||
|
||||
BusGroup::BusGroup(const std::shared_ptr<domain::BusInstance> &instance): busInstance(instance) {
|
||||
setFlag(ItemIsMovable, true);
|
||||
setFlag(ItemSendsGeometryChanges, true);
|
||||
|
||||
setHandlesChildEvents(false);
|
||||
|
||||
bus = new display::Bus(instance);
|
||||
addToGroup(bus);
|
||||
|
||||
setPos(instance->position.first, instance->position.second);
|
||||
}
|
||||
|
||||
|
||||
QVariant ComponentGroup::itemChange(QGraphicsItem::GraphicsItemChange change, const QVariant &value) {
|
||||
if (change == ItemPositionChange && scene()) {
|
||||
|
||||
@@ -55,10 +55,10 @@ class Bus: public QGraphicsItemGroup
|
||||
std::shared_ptr<domain::BusInstance> busInstance;
|
||||
public:
|
||||
Bus(const std::shared_ptr<domain::BusInstance>& instance): busInstance(instance) {
|
||||
instance->bus.getDisplay()->render(this);
|
||||
instance->bus.getDisplayBus()->render(this, instance->size);
|
||||
}
|
||||
domain::BusInstance *getBusInstance() { return busInstance.get(); }
|
||||
void contextMenuEvent(QGraphicsSceneContextMenuEvent *event) override;
|
||||
|
||||
};
|
||||
|
||||
class ComponentGroup: public QGraphicsItemGroup
|
||||
@@ -97,18 +97,12 @@ class BusGroup: public QGraphicsItemGroup
|
||||
{
|
||||
private:
|
||||
std::shared_ptr<domain::BusInstance> busInstance;
|
||||
display::Bus* bus;
|
||||
|
||||
public:
|
||||
explicit BusGroup(const std::shared_ptr<domain::BusInstance>& instance): busInstance(instance) {
|
||||
setFlag(ItemIsMovable, true);
|
||||
setFlag(ItemSendsGeometryChanges, true);
|
||||
explicit BusGroup(const std::shared_ptr<domain::BusInstance>& instance);
|
||||
|
||||
setHandlesChildEvents(false);
|
||||
|
||||
addToGroup(new display::Bus(instance));
|
||||
|
||||
setPos(instance->position.first, instance->position.second);
|
||||
}
|
||||
display::Bus* getBus() { return bus; }
|
||||
|
||||
protected:
|
||||
virtual QVariant itemChange(GraphicsItemChange change, const QVariant &value);
|
||||
|
||||
@@ -38,7 +38,7 @@ void Schema::setSchema(domain::Schema* _schema, domain::Library* _library)
|
||||
scene.addItem(group);
|
||||
}
|
||||
for(auto &instance: schema->busInstances) {
|
||||
if(instance->bus.getDisplay().has_value()) {
|
||||
if(instance->bus.getDisplayBus().has_value()) {
|
||||
auto group = new display::BusGroup(instance);
|
||||
buses.insert(std::make_pair(instance->name, group));
|
||||
scene.addItem(group);
|
||||
@@ -110,7 +110,7 @@ void Schema::updateConnections() {
|
||||
|
||||
auto currentPos = this->mapToScene(event->pos());
|
||||
|
||||
auto instance = std::make_shared<domain::BusInstance>(bus.getName(), std::make_pair(currentPos.x(), currentPos.y()), bus, 50);
|
||||
auto instance = std::make_shared<domain::BusInstance>(bus.getName(), std::make_pair(currentPos.x(), currentPos.y()), bus);
|
||||
schema->busInstances.push_back(instance);
|
||||
|
||||
auto group = new display::BusGroup(instance);
|
||||
|
||||
Reference in new issue
Block a user