123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110 |
- #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()
- {
- }
- /// <summary>
- /// 添加接口(Forloop工具需要额外添加ToolInerface)
- /// </summary>
- void WindowAppBlockForloop::addItemInterfaces()
- {
- // 添加标准接口
- WindowAppBlockStandardBase::addItemInterfaces();
- // 添加ToolStart和ToolEnd接口
- WindowAppBlockStandardBase::addItemToolInterfaces();
- }
- /// <summary>
- /// 双击弹出配置对话框
- /// </summary>
- /// <param name="event"></param>
- 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<int>();
- }
- // 从Tool中取出当前的Index
- if (!m_toolInfo->Interfaces[1]->isValueNullptr())
- {
- nIndex = m_toolInfo->Interfaces[1]->getValue<int>();
- }
- // 弹出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);
- }
- /// <summary>
- /// 更新矩形区域的尺寸
- /// </summary>
- 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
- );
- }
|