Skip to content

Commit 13e4d6c

Browse files
committed
formating fix + ic editor ElementCreator
1 parent 9f51f5a commit 13e4d6c

5 files changed

Lines changed: 35 additions & 5 deletions

File tree

src/backend/blockData/blockData.cpp

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,12 @@ void BlockData::setDefaultData(bool defaultData) noexcept {
1515
dataUpdateEventManager.sendEvent<std::pair<BlockType, Size>>("preBlockSizeChange", { blockType, Size(1) });
1616
sentPre = true;
1717
}
18-
dataUpdateEventManager.sendEvent<std::tuple<BlockType, connection_end_id_t, BlockData::ConnectionData::PortType>>("preBlockDataSetConnection", { blockType, connection_end_id_t(0), BlockData::ConnectionData::PortType::INPUT });
19-
dataUpdateEventManager.sendEvent<std::tuple<BlockType, connection_end_id_t, BlockData::ConnectionData::PortType>>("preBlockDataSetConnection", { blockType, connection_end_id_t(1), BlockData::ConnectionData::PortType::OUTPUT });
18+
dataUpdateEventManager.sendEvent<std::tuple<BlockType, connection_end_id_t, BlockData::ConnectionData::PortType>>(
19+
"preBlockDataSetConnection", { blockType, connection_end_id_t(0), BlockData::ConnectionData::PortType::INPUT }
20+
);
21+
dataUpdateEventManager.sendEvent<std::tuple<BlockType, connection_end_id_t, BlockData::ConnectionData::PortType>>(
22+
"preBlockDataSetConnection", { blockType, connection_end_id_t(1), BlockData::ConnectionData::PortType::OUTPUT }
23+
);
2024
}
2125
this->defaultData = defaultData;
2226
blockSize = Size(1);

src/backend/blockData/blockDataManager.h

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,12 @@ class BlockDataManager {
1919
// sending data events for default data
2020
// pre
2121
dataUpdateEventManager.sendEvent<std::pair<BlockType, Size>>("preBlockSizeChange", { blockType, Size(1) });
22-
dataUpdateEventManager.sendEvent<std::tuple<BlockType, connection_end_id_t, BlockData::ConnectionData::PortType>>("preBlockDataSetConnection", { blockType, connection_end_id_t(0), BlockData::ConnectionData::PortType::INPUT });
23-
dataUpdateEventManager.sendEvent<std::tuple<BlockType, connection_end_id_t, BlockData::ConnectionData::PortType>>("preBlockDataSetConnection", { blockType, connection_end_id_t(1), BlockData::ConnectionData::PortType::OUTPUT });
22+
dataUpdateEventManager.sendEvent<std::tuple<BlockType, connection_end_id_t, BlockData::ConnectionData::PortType>>(
23+
"preBlockDataSetConnection", { blockType, connection_end_id_t(0), BlockData::ConnectionData::PortType::INPUT }
24+
);
25+
dataUpdateEventManager.sendEvent<std::tuple<BlockType, connection_end_id_t, BlockData::ConnectionData::PortType>>(
26+
"preBlockDataSetConnection", { blockType, connection_end_id_t(1), BlockData::ConnectionData::PortType::OUTPUT }
27+
);
2428
// post
2529
dataUpdateEventManager.sendEvent<std::pair<BlockType, Size>>("postBlockSizeChange", { blockType, Size(1) });
2630
dataUpdateEventManager.sendEvent<std::pair<BlockType, connection_end_id_t>>("blockDataSetConnection", { blockType, connection_end_id_t(0) });

src/gui/helper/eventPasser.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,4 +14,4 @@ class EventPasser : public Rml::EventListener {
1414
ListenerFunction listenerFunction;
1515
};
1616

17-
#endif /* eventPasser_h */
17+
#endif /* eventPasser_h */

src/gui/mainWindow/sideBar/icEditor/blockCreationWindow.cpp

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -520,6 +520,27 @@ void BlockCreationWindow::addListItem(
520520
}
521521

522522
Rml::ElementPtr row = document->CreateElement("div");
523+
row->AddEventListener(Rml::EventId::Mouseover, new EventPasser([this, row=row.get()](Rml::Event& event) {
524+
if (event.GetTargetElement() != row) return;
525+
elementCreator.reset();
526+
try {
527+
Rml::ElementList elements;
528+
row->GetElementsByClassName(elements, "connection-list-item-pos-x");
529+
if (elements.empty()) return;
530+
coordinate_t x = std::stoi(rmlui_dynamic_cast<Rml::ElementFormControlInput*>(elements.front())->GetValue());
531+
elements.clear();
532+
row->GetElementsByClassName(elements, "connection-list-item-pos-y");
533+
if (elements.empty()) return;
534+
coordinate_t y = std::stoi(rmlui_dynamic_cast<Rml::ElementFormControlInput*>(elements.front())->GetValue());
535+
elementCreator.emplace(mainWindow.getActiveCircuitViewWidget()->getCircuitView()->getViewportId());
536+
elementCreator.value().addSelectionElement(SelectionElement(Position(x, y), Position(x, y)));
537+
} catch (const std::exception& e) {}
538+
}));
539+
row->AddEventListener(Rml::EventId::Mouseout, new EventPasser([this, row=row.get()](Rml::Event& event) {
540+
if (event.GetTargetElement() != row) return;
541+
elementCreator.reset();
542+
}));
543+
523544
// name
524545
Rml::XMLAttributes nameAttributes;
525546
nameAttributes["type"] = "text";

src/gui/mainWindow/sideBar/icEditor/blockCreationWindow.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ class BlockCreationWindow {
3636
void updateSelected(std::string string);
3737
void makePaths(std::vector<std::vector<std::string>>& paths, std::vector<std::string>& path, const EvalAddressTree& addressTree);
3838

39+
std::optional<ElementCreator> elementCreator;
3940
Rml::ElementDocument* document;
4041
Rml::Element* outputList;
4142
Rml::Element* inputList;

0 commit comments

Comments
 (0)