Added comdel system generation
// todo display generation
This commit is contained in:
1 parent
74a7ef3e7a
commit
45a668fc46
17 files changed
+450
-52
No files matched your search
@@ -5,10 +5,30 @@
|
||||
#include <QGraphicsScene>
|
||||
#include <iostream>
|
||||
|
||||
#include "dialogmanager.h"
|
||||
|
||||
namespace display {
|
||||
|
||||
void Component::contextMenuEvent(QGraphicsSceneContextMenuEvent *event) {
|
||||
QMenu menu;
|
||||
menu.addAction("Izmjeni ime", [this](){});
|
||||
menu.addSeparator();
|
||||
for(auto attr: this->instance->attributes) {
|
||||
bool enabled = attr.attribute.getPopup().has_value();
|
||||
|
||||
auto action = menu.addAction(QString::fromStdString("Izmjeni " + attr.name),
|
||||
[&attr, this]() {});
|
||||
action->setEnabled(enabled);
|
||||
}
|
||||
menu.exec(event->screenPos());
|
||||
}
|
||||
|
||||
|
||||
void Bus::contextMenuEvent(QGraphicsSceneContextMenuEvent *event) {
|
||||
QMenu menu;
|
||||
menu.addAction("Izmjeni ime", [this](){});
|
||||
menu.exec(event->screenPos());
|
||||
}
|
||||
|
||||
/*
|
||||
ComponentWrapper *ComponentWrapper::ofWire(domain::WireInstance *wire) {
|
||||
auto component = new ComponentWrapper();
|
||||
component->wireInstance = wire;
|
||||
@@ -125,5 +145,5 @@ void PinItem::clear() {
|
||||
delete item;
|
||||
}
|
||||
}
|
||||
|
||||
*/
|
||||
} // namespace display
|
||||
@@ -8,6 +8,7 @@
|
||||
|
||||
namespace display {
|
||||
|
||||
/*
|
||||
class ComponentItem: public QGraphicsItemGroup
|
||||
{
|
||||
public:
|
||||
@@ -68,6 +69,73 @@ private:
|
||||
ComponentItem *componentItem;
|
||||
std::vector<PinItem*> pinItems;
|
||||
};
|
||||
*/
|
||||
|
||||
class Pin: public QGraphicsItemGroup
|
||||
{
|
||||
private:
|
||||
domain::Pin pin;
|
||||
public:
|
||||
Pin(domain::Pin pin): pin(pin) {
|
||||
pin.getDisplay().render(this);
|
||||
}
|
||||
};
|
||||
|
||||
class Component: public QGraphicsItemGroup
|
||||
{
|
||||
private:
|
||||
std::shared_ptr<domain::ComponentInstance> instance;
|
||||
public:
|
||||
Component(const std::shared_ptr<domain::ComponentInstance>& instance): instance(instance) {
|
||||
instance->component.getDisplay().render(this);
|
||||
}
|
||||
void contextMenuEvent(QGraphicsSceneContextMenuEvent *event) override;
|
||||
};
|
||||
|
||||
class Bus: public QGraphicsItemGroup
|
||||
{
|
||||
public:
|
||||
Bus(const std::shared_ptr<domain::BusInstance>& instance) {
|
||||
instance->bus.getDisplay()->render(this);
|
||||
}
|
||||
void contextMenuEvent(QGraphicsSceneContextMenuEvent *event) override;
|
||||
};
|
||||
|
||||
class ComponentGroup: public QGraphicsItemGroup
|
||||
{
|
||||
private:
|
||||
std::shared_ptr<domain::ComponentInstance> componentInstance;
|
||||
|
||||
public:
|
||||
explicit ComponentGroup(const std::shared_ptr<domain::ComponentInstance>& instance): componentInstance(instance) {
|
||||
setFlag(ItemIsMovable, true);
|
||||
setHandlesChildEvents(false);
|
||||
|
||||
addToGroup(new display::Component(instance));
|
||||
|
||||
for(auto &pin: instance->component.getPins()) {
|
||||
addToGroup(new display::Pin(pin));
|
||||
}
|
||||
|
||||
setPos(instance->position.first, instance->position.second);
|
||||
}
|
||||
};
|
||||
|
||||
class BusGroup: public QGraphicsItemGroup
|
||||
{
|
||||
private:
|
||||
std::shared_ptr<domain::BusInstance> busInstance;
|
||||
|
||||
public:
|
||||
explicit BusGroup(const std::shared_ptr<domain::BusInstance>& instance): busInstance(instance) {
|
||||
setFlag(ItemIsMovable, true);
|
||||
setHandlesChildEvents(false);
|
||||
|
||||
addToGroup(new display::Bus(instance));
|
||||
|
||||
setPos(instance->position.first, instance->position.second);
|
||||
}
|
||||
};
|
||||
|
||||
} // namespace display
|
||||
|
||||
|
||||
@@ -9,20 +9,18 @@ Schema::Schema()
|
||||
}
|
||||
|
||||
|
||||
void Schema::setSchema(domain::Schema* schema)
|
||||
void Schema::setSchema(domain::Schema* _schema)
|
||||
{
|
||||
scene.clear();
|
||||
this->schema = schema;
|
||||
this->schema = _schema;
|
||||
if(schema != nullptr) {
|
||||
for(auto &instance: schema->componentInstances) {
|
||||
ComponentWrapper *component = ComponentWrapper::ofComponent(instance.get());
|
||||
component->setPos(instance->position.first, instance->position.second);
|
||||
scene.addItem(component);
|
||||
scene.addItem(new display::ComponentGroup(instance));
|
||||
}
|
||||
for(auto &instance: schema->busInstances) {
|
||||
ComponentWrapper *bus = ComponentWrapper::ofBus(instance.get());
|
||||
bus->setPos(instance->position.first, instance->position.second);
|
||||
scene.addItem(bus);
|
||||
if(instance->bus.getDisplay().has_value()) {
|
||||
scene.addItem(new display::BusGroup(instance));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -20,7 +20,6 @@ private:
|
||||
QGraphicsScene scene;
|
||||
|
||||
domain::Schema* schema;
|
||||
|
||||
};
|
||||
|
||||
} // namespace display
|
||||
|
||||
Reference in new issue
Block a user