#include "WindowAppBlockForloop.h" #include "WindowAppItemInterface.h" #include "DialogForLoop.h" WindowAppBlockForloop::WindowAppBlockForloop(TOOL* pNewTool, POU* Pou, bool bShowOnly /*= false*/, QGraphicsObject* parent /*= nullptr*/) : WindowAppBlockStandardBase(pNewTool, Pou, bShowOnly, parent) { // 更新矩形区域的尺寸 this->updateRect(); } WindowAppBlockForloop::~WindowAppBlockForloop() { } /// /// 添加接口(Forloop工具需要额外添加ToolInerface) /// void WindowAppBlockForloop::addItemInterfaces() { // 添加标准接口 WindowAppBlockStandardBase::addItemInterfaces(); // 添加ToolStart和ToolEnd接口 WindowAppBlockStandardBase::addItemToolInterfaces(); } /// /// 双击弹出配置对话框 /// /// void WindowAppBlockForloop::mouseDoubleClickEvent(QGraphicsSceneMouseEvent* event) { if (event->button() != Qt::LeftButton || m_bShowOnly == true) { return; } int nSize = 0, nIndex = 0; // 从Tool中取出当前的Size if (!m_toolInfo->Interfaces[0]->isValueNullptr()) { nSize = m_toolInfo->Interfaces[0]->getValue(); } // 从Tool中取出当前的Index if (!m_toolInfo->Interfaces[1]->isValueNullptr()) { nIndex = m_toolInfo->Interfaces[1]->getValue(); } // 弹出Forloop设置对话框 DialogForLoop dialogForloop(nSize ,nIndex); if (dialogForloop.exec() != DialogForLoop::Accepted) { return; } // 取得用户设置的Size nSize = dialogForloop.m_nSize; // 为工具设置Size输入 m_toolInfo->Interfaces[0]->setValue(nSize, VALUE_PASS_MODE::PASS_BY_VALUE); qDebug() << "[WindowAppBlockForloop] - Set ForLoop size to :" << nSize; QGraphicsItem::mouseDoubleClickEvent(event); } /// /// 更新矩形区域的尺寸 /// void WindowAppBlockForloop::updateRect() { // 计算高度 int blockHeight = FORLOOP_BASIC_HEIGHT; // 计算宽度 int blockWidth = PARA_BASIC_WIDTH; // 主体矩形区域 blockRect.setRect( -blockWidth / 2, -blockHeight / 2, blockWidth, blockHeight ); // 序号矩形区域 blockIndexRect.setRect( blockRect.right() - TBD_INDEX_WIDTH, blockRect.top() - TBD_INDEX_HEIGHT / 2, TBD_INDEX_WIDTH, TBD_INDEX_HEIGHT ); // 总体矩形边界 blockBoundingRect.setRect( blockRect.left(), blockRect.top() - TBD_INDEX_HEIGHT / 2, blockRect.width() + TBD_SHADOW_COUNT * PEN_LINE_WIDTH, blockRect.height() + TBD_INDEX_HEIGHT / 2 + TBD_SHADOW_COUNT * PEN_LINE_WIDTH ); }