|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
// TnzCore includes
|
|
Toshihiro Shimizu |
890ddd |
#include "tofflinegl.h"
|
|
Toshihiro Shimizu |
890ddd |
#include "tstroke.h"
|
|
Toshihiro Shimizu |
890ddd |
#include "tconvert.h"
|
|
Toshihiro Shimizu |
890ddd |
#include "tvectorimage.h"
|
|
Toshihiro Shimizu |
890ddd |
#include "tundo.h"
|
|
shun-iwasawa |
0a9e80 |
#include "tconst.h"
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
// TnzLib includes
|
|
Toshihiro Shimizu |
890ddd |
#include "toonz/tstageobjectid.h"
|
|
Toshihiro Shimizu |
890ddd |
#include "toonz/tstageobject.h"
|
|
Toshihiro Shimizu |
890ddd |
#include "toonz/tstageobjectspline.h"
|
|
Toshihiro Shimizu |
890ddd |
#include "toonz/txsheet.h"
|
|
Toshihiro Shimizu |
890ddd |
#include "toonz/txshcell.h"
|
|
Toshihiro Shimizu |
890ddd |
#include "toonz/txshcolumn.h"
|
|
Toshihiro Shimizu |
890ddd |
#include "toonz/toonzscene.h"
|
|
Toshihiro Shimizu |
890ddd |
#include "toonz/sceneproperties.h"
|
|
Toshihiro Shimizu |
890ddd |
#include "toonz/tstageobjectcmd.h"
|
|
Toshihiro Shimizu |
890ddd |
#include "toonz/fxcommand.h"
|
|
Toshihiro Shimizu |
890ddd |
#include "toonz/txshzeraryfxcolumn.h"
|
|
Toshihiro Shimizu |
890ddd |
#include "toonz/tcolumnfx.h"
|
|
Toshihiro Shimizu |
890ddd |
#include "toonz/tstageobjecttree.h"
|
|
Toshihiro Shimizu |
890ddd |
#include "toonz/tframehandle.h"
|
|
Toshihiro Shimizu |
890ddd |
#include "toonz/txshchildlevel.h"
|
|
Toshihiro Shimizu |
890ddd |
#include "toonz/txshlevelcolumn.h"
|
|
Toshihiro Shimizu |
890ddd |
#include "toonz/txshleveltypes.h"
|
|
Toshihiro Shimizu |
890ddd |
#include "toonz/tcolumnhandle.h"
|
|
Toshihiro Shimizu |
890ddd |
#include "toonz/hook.h"
|
|
Toshihiro Shimizu |
890ddd |
#include "toonz/preferences.h"
|
|
Toshihiro Shimizu |
890ddd |
#include "toonz/txshsimplelevel.h"
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
// TnzQt includes
|
|
Toshihiro Shimizu |
890ddd |
#include "toonzqt/gutil.h"
|
|
Toshihiro Shimizu |
890ddd |
#include "toonzqt/icongenerator.h"
|
|
Toshihiro Shimizu |
890ddd |
#include "toonzqt/stageschematicscene.h"
|
|
Toshihiro Shimizu |
890ddd |
#include "toonzqt/menubarcommand.h"
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
// Qt includes
|
|
Toshihiro Shimizu |
890ddd |
#include <qpixmap></qpixmap>
|
|
Toshihiro Shimizu |
890ddd |
#include <qregexpvalidator></qregexpvalidator>
|
|
Toshihiro Shimizu |
890ddd |
#include <qgraphicsscenemouseevent></qgraphicsscenemouseevent>
|
|
Toshihiro Shimizu |
890ddd |
#include <qfocusevent></qfocusevent>
|
|
Toshihiro Shimizu |
890ddd |
#include <qtimer></qtimer>
|
|
Toshihiro Shimizu |
890ddd |
#include <qmenu></qmenu>
|
|
Toshihiro Shimizu |
890ddd |
#include <qtextcursor></qtextcursor>
|
|
Toshihiro Shimizu |
890ddd |
#include <qset></qset>
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
#include "toonzqt/stageschematicnode.h"
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
namespace {
|
|
Shinya Kitaoka |
120a6e |
void drawCamera(QPainter *painter, const QColor &color, const QPen &pen,
|
|
Shinya Kitaoka |
120a6e |
double width, double height) {
|
|
Shinya Kitaoka |
120a6e |
QPointF points[3];
|
|
Shinya Kitaoka |
120a6e |
points[0] = QPointF(width, height);
|
|
Shinya Kitaoka |
120a6e |
points[1] = QPointF(width, height * 0.5);
|
|
Shinya Kitaoka |
120a6e |
points[2] = QPointF(width - (height * 2 / 3), height * 0.75);
|
|
Shinya Kitaoka |
120a6e |
painter->setBrush(color);
|
|
Shinya Kitaoka |
120a6e |
painter->drawPolygon(points, 3);
|
|
Shinya Kitaoka |
120a6e |
painter->drawRect(
|
|
Shinya Kitaoka |
120a6e |
QRectF(width * 0.25, height * 0.5, width * 0.5, height * 0.5));
|
|
Shinya Kitaoka |
120a6e |
QRectF rect(0, 0, height * 0.49, height * 0.49);
|
|
Shinya Kitaoka |
120a6e |
rect.moveCenter(QPointF(width * 0.20, height * 0.4));
|
|
Shinya Kitaoka |
120a6e |
painter->drawEllipse(rect);
|
|
Shinya Kitaoka |
120a6e |
rect.moveCenter(QPointF((width * 3 / 5) + 1, height * 0.25));
|
|
Shinya Kitaoka |
120a6e |
painter->drawEllipse(rect);
|
|
Shinya Kitaoka |
120a6e |
painter->drawLine(0, height * 0.75, width * 0.25, height * 0.75);
|
|
Shinya Kitaoka |
120a6e |
painter->drawLine(width, height * 0.75, width + 5, height * 0.75);
|
|
Shinya Kitaoka |
120a6e |
painter->setBrush(QColor(235, 235, 235, 255));
|
|
Shinya Kitaoka |
120a6e |
painter->drawRect(0, -14, width, 14);
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Shinya Kitaoka |
120a6e |
} // namespace
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//========================================================
|
|
Toshihiro Shimizu |
890ddd |
//
|
|
Shinya Kitaoka |
120a6e |
// ColumnPainter
|
|
Toshihiro Shimizu |
890ddd |
//
|
|
Toshihiro Shimizu |
890ddd |
//========================================================
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
ColumnPainter::ColumnPainter(StageSchematicColumnNode *parent, double width,
|
|
Shinya Kitaoka |
120a6e |
double height, const QString &name)
|
|
Shinya Kitaoka |
120a6e |
: QGraphicsItem(parent)
|
|
Shinya Kitaoka |
120a6e |
, m_parent(parent)
|
|
Shinya Kitaoka |
120a6e |
, m_width(width)
|
|
Shinya Kitaoka |
120a6e |
, m_height(height)
|
|
Shinya Kitaoka |
120a6e |
, m_name(name) {
|
|
Shinya Kitaoka |
120a6e |
setFlag(QGraphicsItem::ItemIsMovable, false);
|
|
Shinya Kitaoka |
120a6e |
setFlag(QGraphicsItem::ItemIsSelectable, false);
|
|
Shinya Kitaoka |
120a6e |
setFlag(QGraphicsItem::ItemIsFocusable, false);
|
|
Shinya Kitaoka |
120a6e |
assert(parent->getStageObject()->getId().isColumn());
|
|
Shinya Kitaoka |
120a6e |
connect(IconGenerator::instance(), SIGNAL(iconGenerated()), this,
|
|
Shinya Kitaoka |
120a6e |
SLOT(onIconGenerated()));
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
StageSchematicScene *stageScene =
|
|
Shinya Kitaoka |
120a6e |
dynamic_cast<stageschematicscene *="">(scene());</stageschematicscene>
|
|
Shinya Kitaoka |
120a6e |
if (!stageScene) return;
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
TXsheet *xsh = stageScene->getXsheet();
|
|
Shinya Kitaoka |
120a6e |
int r0, r1, index = parent->getStageObject()->getId().getIndex();
|
|
Shinya Kitaoka |
120a6e |
xsh->getCellRange(index, r0, r1);
|
|
Shinya Kitaoka |
120a6e |
if (r0 > r1) return;
|
|
Shinya Kitaoka |
120a6e |
TXshCell firstCell = xsh->getCell(r0, index);
|
|
Shinya Kitaoka |
120a6e |
if (!firstCell.isEmpty())
|
|
Shinya Kitaoka |
120a6e |
m_type = firstCell.m_level->getType();
|
|
Shinya Kitaoka |
120a6e |
else
|
|
Shinya Kitaoka |
120a6e |
m_type = NO_XSHLEVEL;
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
//--------------------------------------------------------
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
ColumnPainter::~ColumnPainter() {}
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
//--------------------------------------------------------
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
QRectF ColumnPainter::boundingRect() const {
|
|
Shinya Kitaoka |
120a6e |
// iwasawa
|
|
Shinya Kitaoka |
120a6e |
if (m_parent->isOpened())
|
|
Shinya Kitaoka |
120a6e |
return QRectF(-5, -54, m_width + 10, m_height + 59);
|
|
Shinya Kitaoka |
120a6e |
else
|
|
Shinya Kitaoka |
120a6e |
return QRectF(-5, -5, m_width + 10, m_height + 10);
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
//--------------------------------------------------------
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
void ColumnPainter::paint(QPainter *painter,
|
|
Shinya Kitaoka |
120a6e |
const QStyleOptionGraphicsItem *option,
|
|
Shinya Kitaoka |
120a6e |
QWidget *widget) {
|
|
Shinya Kitaoka |
120a6e |
StageSchematicScene *stageScene =
|
|
Shinya Kitaoka |
120a6e |
dynamic_cast<stageschematicscene *="">(scene());</stageschematicscene>
|
|
Shinya Kitaoka |
120a6e |
if (!stageScene) return;
|
|
Shinya Kitaoka |
120a6e |
// obtain level name and type
|
|
Shinya Kitaoka |
120a6e |
int levelType;
|
|
Shinya Kitaoka |
120a6e |
QString levelName;
|
|
Shinya Kitaoka |
120a6e |
m_parent->getLevelTypeAndName(levelType, levelName);
|
|
Shinya Kitaoka |
120a6e |
|
|
manongjohn |
d6e3cc |
QColor nodeColor;
|
|
manongjohn |
d6e3cc |
SchematicViewer *viewer = stageScene->getSchematicViewer();
|
|
manongjohn |
d6e3cc |
viewer->getNodeColor(levelType, nodeColor);
|
|
Shinya Kitaoka |
120a6e |
|
|
shun-iwasawa |
045b61 |
if (m_isReference && levelType != PLT_XSHLEVEL) {
|
|
shun-iwasawa |
045b61 |
painter->setBrush(viewer->getReferenceColumnColor());
|
|
shun-iwasawa |
045b61 |
painter->setPen(nodeColor);
|
|
shun-iwasawa |
045b61 |
} else {
|
|
shun-iwasawa |
045b61 |
painter->setBrush(nodeColor);
|
|
shun-iwasawa |
045b61 |
painter->setPen(Qt::NoPen);
|
|
shun-iwasawa |
045b61 |
}
|
|
shun-iwasawa |
045b61 |
|
|
Shinya Kitaoka |
120a6e |
if (levelType == PLT_XSHLEVEL)
|
|
Shinya Kitaoka |
120a6e |
painter->drawRoundRect(0, 0, m_width, m_height, 32, 99);
|
|
Shinya Kitaoka |
120a6e |
else
|
|
Shinya Kitaoka |
120a6e |
painter->drawRect(0, 0, m_width, m_height);
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
// draw palette icon for palette node
|
|
Shinya Kitaoka |
120a6e |
if (levelType == PLT_XSHLEVEL) {
|
|
Shinya Kitaoka |
120a6e |
QPixmap palettePm = QPixmap(":Resources/schematic_palette.png");
|
|
Shinya Kitaoka |
120a6e |
QRect paletteRect(-3, -1, 20, 16);
|
|
Shinya Kitaoka |
120a6e |
painter->drawPixmap(paletteRect, palettePm);
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
if (m_parent->isOpened()) {
|
|
Shinya Kitaoka |
120a6e |
// Draw the pixmap
|
|
Shinya Kitaoka |
120a6e |
painter->setBrush(Qt::NoBrush);
|
|
Shinya Kitaoka |
120a6e |
painter->setPen(QColor(0, 0, 0, 255));
|
|
Shinya Kitaoka |
120a6e |
QPixmap pixmap = scalePixmapKeepingAspectRatio(
|
|
Shinya Kitaoka |
120a6e |
m_parent->getPixmap(), QSize(m_width, 49), Qt::transparent);
|
|
Shinya Kitaoka |
120a6e |
if (!pixmap.isNull()) {
|
|
Shinya Kitaoka |
120a6e |
painter->drawPixmap(QPointF(0, -pixmap.height()), pixmap);
|
|
Shinya Kitaoka |
120a6e |
} else {
|
|
Shinya Kitaoka |
120a6e |
painter->setBrush(QColor(255, 255, 255, 255));
|
|
Shinya Kitaoka |
120a6e |
painter->drawRect(0, -pixmap.height(), m_width, pixmap.height());
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Shinya Kitaoka |
120a6e |
}
|
|
manongjohn |
d6e3cc |
painter->setPen(viewer->getTextColor());
|
|
Shinya Kitaoka |
120a6e |
painter->setBrush(Qt::NoBrush);
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
//! draw the name only if it is not editing
|
|
Shinya Kitaoka |
120a6e |
if (!m_parent->isNameEditing()) {
|
|
Shinya Kitaoka |
120a6e |
StageSchematicScene *stageScene =
|
|
Shinya Kitaoka |
120a6e |
dynamic_cast<stageschematicscene *="">(scene());</stageschematicscene>
|
|
Shinya Kitaoka |
120a6e |
if (!stageScene) return;
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
// if this is current object
|
|
Shinya Kitaoka |
120a6e |
if (stageScene->getCurrentObject() == m_parent->getStageObject()->getId())
|
|
manongjohn |
d6e3cc |
painter->setPen(viewer->getSelectedNodeTextColor());
|
|
Shinya Kitaoka |
120a6e |
QRectF columnNameRect(18, 2, 54, 14);
|
|
Shinya Kitaoka |
120a6e |
QString elidedName =
|
|
Shinya Kitaoka |
120a6e |
elideText(m_name, painter->font(), columnNameRect.width());
|
|
Shinya Kitaoka |
120a6e |
painter->drawText(columnNameRect, Qt::AlignLeft | Qt::AlignVCenter,
|
|
Shinya Kitaoka |
120a6e |
elidedName);
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
// level names
|
|
Shinya Kitaoka |
120a6e |
QRectF levelNameRect(18, 16, 54, 14);
|
|
Shinya Kitaoka |
120a6e |
QString elidedName =
|
|
Shinya Kitaoka |
120a6e |
elideText(levelName, painter->font(), levelNameRect.width());
|
|
Shinya Kitaoka |
120a6e |
painter->drawText(levelNameRect, Qt::AlignLeft | Qt::AlignVCenter,
|
|
Shinya Kitaoka |
120a6e |
elidedName);
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
//--------------------------------------------------------
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
void ColumnPainter::contextMenuEvent(QGraphicsSceneContextMenuEvent *cme) {
|
|
Shinya Kitaoka |
120a6e |
StageSchematicScene *stageScene =
|
|
Shinya Kitaoka |
120a6e |
dynamic_cast<stageschematicscene *="">(scene());</stageschematicscene>
|
|
Shinya Kitaoka |
120a6e |
QMenu menu(stageScene->views()[0]);
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
QAction *resetCenter = new QAction(tr("&Reset Center"), &menu);
|
|
Shinya Kitaoka |
120a6e |
connect(resetCenter, SIGNAL(triggered()), stageScene, SLOT(onResetCenter()));
|
|
Shinya Kitaoka |
120a6e |
QAction *collapse = CommandManager::instance()->getAction("MI_Collapse");
|
|
manongjohn |
d6e3cc |
QAction *openSubxsh = CommandManager::instance()->getAction("MI_OpenChild");
|
|
Shinya Kitaoka |
120a6e |
QAction *explodeChild =
|
|
Shinya Kitaoka |
120a6e |
CommandManager::instance()->getAction("MI_ExplodeChild");
|
|
Shinya Kitaoka |
120a6e |
QAction *group = CommandManager::instance()->getAction("MI_Group");
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
QAction *clear = CommandManager::instance()->getAction("MI_Clear");
|
|
Shinya Kitaoka |
120a6e |
QAction *copy = CommandManager::instance()->getAction("MI_Copy");
|
|
Shinya Kitaoka |
120a6e |
QAction *cut = CommandManager::instance()->getAction("MI_Cut");
|
|
Shinya Kitaoka |
120a6e |
QAction *paste = CommandManager::instance()->getAction("MI_Paste");
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
menu.addAction(resetCenter);
|
|
Shinya Kitaoka |
120a6e |
menu.addSeparator();
|
|
Shinya Kitaoka |
120a6e |
menu.addAction(collapse);
|
|
Shinya Kitaoka |
120a6e |
TFrameHandle *frameHandle = stageScene->getFrameHandle();
|
|
Shinya Kitaoka |
120a6e |
if (frameHandle->getFrameType() == TFrameHandle::SceneFrame) {
|
|
Shinya Kitaoka |
120a6e |
int col = m_parent->getStageObject()->getId().getIndex();
|
|
Shinya Kitaoka |
120a6e |
int fr = frameHandle->getFrame();
|
|
Shinya Kitaoka |
120a6e |
TXsheet *xsh = stageScene->getXsheet();
|
|
Shinya Kitaoka |
120a6e |
TXshCell cell = xsh->getCell(fr, col);
|
|
Shinya Kitaoka |
120a6e |
if (dynamic_cast<txshchildlevel *="">(cell.m_level.getPointer())) {</txshchildlevel>
|
|
Shinya Kitaoka |
120a6e |
menu.addAction(openSubxsh);
|
|
Shinya Kitaoka |
120a6e |
menu.addAction(explodeChild);
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Shinya Kitaoka |
120a6e |
menu.addSeparator();
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
menu.addAction(clear);
|
|
Shinya Kitaoka |
120a6e |
menu.addAction(copy);
|
|
Shinya Kitaoka |
120a6e |
menu.addAction(cut);
|
|
Shinya Kitaoka |
120a6e |
menu.addAction(paste);
|
|
Shinya Kitaoka |
120a6e |
menu.addSeparator();
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
menu.addAction(group);
|
|
Shinya Kitaoka |
120a6e |
menu.exec(cme->screenPos());
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
//--------------------------------------------------------
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
void ColumnPainter::onIconGenerated() {
|
|
Shinya Kitaoka |
120a6e |
if (m_type != OVL_XSHLEVEL) return;
|
|
Shinya Kitaoka |
120a6e |
StageSchematicScene *stageScene =
|
|
Shinya Kitaoka |
120a6e |
dynamic_cast<stageschematicscene *="">(scene());</stageschematicscene>
|
|
Shinya Kitaoka |
120a6e |
if (!stageScene) return;
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
TXsheet *xsh = stageScene->getXsheet();
|
|
Shinya Kitaoka |
120a6e |
int r0, r1, index = m_parent->getStageObject()->getId().getIndex();
|
|
Shinya Kitaoka |
120a6e |
xsh->getCellRange(index, r0, r1);
|
|
Shinya Kitaoka |
120a6e |
if (r0 > r1) return;
|
|
Shinya Kitaoka |
120a6e |
TXshCell firstCell = xsh->getCell(r0, index);
|
|
Shinya Kitaoka |
120a6e |
int type = firstCell.m_level->getType();
|
|
Shinya Kitaoka |
120a6e |
if (m_type != type) {
|
|
Shinya Kitaoka |
120a6e |
m_type = type;
|
|
Shinya Kitaoka |
120a6e |
update();
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//========================================================
|
|
Toshihiro Shimizu |
890ddd |
//
|
|
Shinya Kitaoka |
120a6e |
// GroupPainter
|
|
Toshihiro Shimizu |
890ddd |
//
|
|
Toshihiro Shimizu |
890ddd |
//========================================================
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
GroupPainter::GroupPainter(StageSchematicGroupNode *parent, double width,
|
|
Shinya Kitaoka |
120a6e |
double height, const QString &name)
|
|
Shinya Kitaoka |
120a6e |
: QGraphicsItem(parent)
|
|
Shinya Kitaoka |
120a6e |
, m_parent(parent)
|
|
Shinya Kitaoka |
120a6e |
, m_width(width)
|
|
Shinya Kitaoka |
120a6e |
, m_height(height)
|
|
Shinya Kitaoka |
120a6e |
, m_name(name) {
|
|
Shinya Kitaoka |
120a6e |
setFlag(QGraphicsItem::ItemIsMovable, false);
|
|
Shinya Kitaoka |
120a6e |
setFlag(QGraphicsItem::ItemIsSelectable, false);
|
|
Shinya Kitaoka |
120a6e |
setFlag(QGraphicsItem::ItemIsFocusable, false);
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//--------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
GroupPainter::~GroupPainter() {}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//--------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
QRectF GroupPainter::boundingRect() const {
|
|
Shinya Kitaoka |
120a6e |
return QRectF(-5, -5, m_width + 10, m_height + 10);
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//--------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
void GroupPainter::paint(QPainter *painter,
|
|
Shinya Kitaoka |
120a6e |
const QStyleOptionGraphicsItem *option,
|
|
Shinya Kitaoka |
120a6e |
QWidget *widget) {
|
|
Shinya Kitaoka |
120a6e |
StageSchematicScene *stageScene =
|
|
Shinya Kitaoka |
120a6e |
dynamic_cast<stageschematicscene *="">(scene());</stageschematicscene>
|
|
Shinya Kitaoka |
120a6e |
if (!stageScene) return;
|
|
Toshihiro Shimizu |
890ddd |
|
|
manongjohn |
d6e3cc |
SchematicViewer *viewer = stageScene->getSchematicViewer();
|
|
manongjohn |
d6e3cc |
|
|
Shinya Kitaoka |
120a6e |
painter->save();
|
|
Shinya Kitaoka |
120a6e |
QPen pen;
|
|
Shinya Kitaoka |
120a6e |
if (m_parent->isSelected()) {
|
|
Shinya Kitaoka |
120a6e |
painter->setBrush(QColor(0, 0, 0, 0));
|
|
Shinya Kitaoka |
120a6e |
pen.setColor(QColor(255, 255, 255, 255));
|
|
Shinya Kitaoka |
120a6e |
pen.setWidth(4.0);
|
|
Shinya Kitaoka |
120a6e |
pen.setJoinStyle(Qt::RoundJoin);
|
|
Shinya Kitaoka |
120a6e |
painter->setPen(pen);
|
|
Shinya Kitaoka |
120a6e |
painter->drawRect(-2, -2, m_width + 4, m_height + 4);
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Shinya Kitaoka |
120a6e |
painter->restore();
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
{
|
|
manongjohn |
d6e3cc |
painter->setBrush(viewer->getGroupColor());
|
|
Shinya Kitaoka |
120a6e |
painter->setPen(Qt::NoPen);
|
|
Shinya Kitaoka |
120a6e |
painter->drawRect(QRectF(0, 0, m_width, m_height));
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
//! draw the name only if it is not editing
|
|
Shinya Kitaoka |
120a6e |
if (!m_parent->isNameEditing()) {
|
|
Shinya Kitaoka |
120a6e |
QFont font("Verdana", 8);
|
|
Shinya Kitaoka |
120a6e |
painter->setFont(font);
|
|
Shinya Kitaoka |
120a6e |
if (stageScene->getCurrentObject() == m_parent->getStageObject()->getId())
|
|
manongjohn |
d6e3cc |
painter->setPen(viewer->getSelectedNodeTextColor());
|
|
Shinya Kitaoka |
120a6e |
else
|
|
manongjohn |
d6e3cc |
painter->setPen(viewer->getTextColor());
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
QRectF rect(18, 0, 54, 18);
|
|
Shinya Kitaoka |
120a6e |
QString elidedName = elideText(m_name, painter->font(), rect.width());
|
|
Shinya Kitaoka |
120a6e |
painter->drawText(rect, Qt::AlignLeft | Qt::AlignVCenter, elidedName);
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//--------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
void GroupPainter::contextMenuEvent(QGraphicsSceneContextMenuEvent *cme) {
|
|
Shinya Kitaoka |
120a6e |
StageSchematicScene *stageScene =
|
|
Shinya Kitaoka |
120a6e |
dynamic_cast<stageschematicscene *="">(scene());</stageschematicscene>
|
|
Shinya Kitaoka |
120a6e |
QMenu menu(stageScene->views()[0]);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
QAction *group = CommandManager::instance()->getAction("MI_Group");
|
|
Shinya Kitaoka |
120a6e |
QAction *ungroup = CommandManager::instance()->getAction("MI_Ungroup");
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
QAction *editGroup = new QAction(tr("&Open Group"), &menu);
|
|
Shinya Kitaoka |
120a6e |
connect(editGroup, SIGNAL(triggered()), stageScene, SLOT(onEditGroup()));
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
menu.addAction(group);
|
|
Shinya Kitaoka |
120a6e |
menu.addAction(ungroup);
|
|
Shinya Kitaoka |
120a6e |
menu.addAction(editGroup);
|
|
Shinya Kitaoka |
120a6e |
menu.exec(cme->screenPos());
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//========================================================
|
|
Toshihiro Shimizu |
890ddd |
//
|
|
Shinya Kitaoka |
120a6e |
// PegbarPainter
|
|
Toshihiro Shimizu |
890ddd |
//
|
|
Toshihiro Shimizu |
890ddd |
//========================================================
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
PegbarPainter::PegbarPainter(StageSchematicPegbarNode *parent, double width,
|
|
Shinya Kitaoka |
120a6e |
double height, const QString &name)
|
|
Shinya Kitaoka |
120a6e |
: QGraphicsItem(parent)
|
|
Shinya Kitaoka |
120a6e |
, m_width(width)
|
|
Shinya Kitaoka |
120a6e |
, m_height(height)
|
|
Shinya Kitaoka |
120a6e |
, m_parent(parent)
|
|
Shinya Kitaoka |
120a6e |
, m_name(name) {}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//--------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
PegbarPainter::~PegbarPainter() {}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//--------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
QRectF PegbarPainter::boundingRect() const {
|
|
Shinya Kitaoka |
120a6e |
return QRectF(-5, -5, m_width + 10, m_height + 10);
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//--------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
void PegbarPainter::paint(QPainter *painter,
|
|
Shinya Kitaoka |
120a6e |
const QStyleOptionGraphicsItem *option,
|
|
Shinya Kitaoka |
120a6e |
QWidget *widget) {
|
|
manongjohn |
d6e3cc |
StageSchematicScene *stageScene =
|
|
manongjohn |
d6e3cc |
dynamic_cast<stageschematicscene *="">(scene());</stageschematicscene>
|
|
manongjohn |
d6e3cc |
|
|
manongjohn |
d6e3cc |
if (!stageScene) return;
|
|
manongjohn |
d6e3cc |
SchematicViewer *viewer = stageScene->getSchematicViewer();
|
|
manongjohn |
d6e3cc |
|
|
manongjohn |
d6e3cc |
painter->setBrush(viewer->getPegColor());
|
|
Shinya Kitaoka |
120a6e |
painter->setPen(Qt::NoPen);
|
|
Shinya Kitaoka |
120a6e |
painter->drawRect(QRectF(0, 0, m_width, m_height));
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
if (!m_parent->isNameEditing()) {
|
|
Shinya Kitaoka |
120a6e |
if (stageScene->getCurrentObject() == m_parent->getStageObject()->getId())
|
|
manongjohn |
d6e3cc |
painter->setPen(viewer->getSelectedNodeTextColor());
|
|
Shinya Kitaoka |
120a6e |
else
|
|
manongjohn |
d6e3cc |
painter->setPen(viewer->getTextColor());
|
|
Shinya Kitaoka |
120a6e |
// Draw the name
|
|
Shinya Kitaoka |
120a6e |
QRectF rect(18, 0, 54, 18);
|
|
Shinya Kitaoka |
120a6e |
QString elidedName = elideText(m_name, painter->font(), rect.width());
|
|
Shinya Kitaoka |
120a6e |
painter->drawText(rect, Qt::AlignLeft | Qt::AlignVCenter, elidedName);
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//--------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
void PegbarPainter::contextMenuEvent(QGraphicsSceneContextMenuEvent *cme) {
|
|
Shinya Kitaoka |
120a6e |
StageSchematicScene *stageScene =
|
|
Shinya Kitaoka |
120a6e |
dynamic_cast<stageschematicscene *="">(scene());</stageschematicscene>
|
|
Shinya Kitaoka |
120a6e |
QMenu menu(stageScene->views()[0]);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
QAction *resetCenter = new QAction(tr("&Reset Center"), &menu);
|
|
Shinya Kitaoka |
120a6e |
connect(resetCenter, SIGNAL(triggered()), stageScene, SLOT(onResetCenter()));
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
QAction *group = CommandManager::instance()->getAction("MI_Group");
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
QAction *clear = CommandManager::instance()->getAction("MI_Clear");
|
|
Shinya Kitaoka |
120a6e |
QAction *copy = CommandManager::instance()->getAction("MI_Copy");
|
|
Shinya Kitaoka |
120a6e |
QAction *cut = CommandManager::instance()->getAction("MI_Cut");
|
|
Shinya Kitaoka |
120a6e |
QAction *paste = CommandManager::instance()->getAction("MI_Paste");
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
menu.addAction(resetCenter);
|
|
Shinya Kitaoka |
120a6e |
menu.addSeparator();
|
|
Shinya Kitaoka |
120a6e |
menu.addAction(clear);
|
|
Shinya Kitaoka |
120a6e |
menu.addAction(copy);
|
|
Shinya Kitaoka |
120a6e |
menu.addAction(cut);
|
|
Shinya Kitaoka |
120a6e |
menu.addAction(paste);
|
|
Shinya Kitaoka |
120a6e |
menu.addSeparator();
|
|
Shinya Kitaoka |
120a6e |
menu.addAction(group);
|
|
Shinya Kitaoka |
120a6e |
menu.exec(cme->screenPos());
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//========================================================
|
|
Toshihiro Shimizu |
890ddd |
//
|
|
Shinya Kitaoka |
120a6e |
// CameraPainter
|
|
Toshihiro Shimizu |
890ddd |
//
|
|
Toshihiro Shimizu |
890ddd |
//========================================================
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
CameraPainter::CameraPainter(StageSchematicCameraNode *parent, double width,
|
|
Shinya Kitaoka |
120a6e |
double height, const QString &name)
|
|
Shinya Kitaoka |
120a6e |
: QGraphicsItem(parent)
|
|
Shinya Kitaoka |
120a6e |
, m_width(width)
|
|
Shinya Kitaoka |
120a6e |
, m_height(height)
|
|
Shinya Kitaoka |
120a6e |
, m_parent(parent)
|
|
Shinya Kitaoka |
120a6e |
, m_name(name) {
|
|
Shinya Kitaoka |
120a6e |
StageSchematicScene *stageScene =
|
|
Shinya Kitaoka |
120a6e |
dynamic_cast<stageschematicscene *="">(scene());</stageschematicscene>
|
|
Shinya Kitaoka |
120a6e |
TXsheet *xsh = stageScene->getXsheet();
|
|
Shinya Kitaoka |
120a6e |
m_isActive = xsh->getStageObjectTree()->getCurrentCameraId() ==
|
|
Shinya Kitaoka |
120a6e |
parent->getStageObject()->getId();
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//--------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
CameraPainter::~CameraPainter() {}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//--------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
QRectF CameraPainter::boundingRect() const {
|
|
Shinya Kitaoka |
120a6e |
return QRectF(-5, -5, m_width + 10, m_height + 10);
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//--------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
void CameraPainter::paint(QPainter *painter,
|
|
Shinya Kitaoka |
120a6e |
const QStyleOptionGraphicsItem *option,
|
|
Shinya Kitaoka |
120a6e |
QWidget *widget) {
|
|
manongjohn |
d6e3cc |
StageSchematicScene *stageScene =
|
|
manongjohn |
d6e3cc |
dynamic_cast<stageschematicscene *="">(scene());</stageschematicscene>
|
|
manongjohn |
d6e3cc |
if (!stageScene) return;
|
|
manongjohn |
d6e3cc |
|
|
manongjohn |
d6e3cc |
SchematicViewer *viewer = stageScene->getSchematicViewer();
|
|
manongjohn |
d6e3cc |
QColor cameraColor = m_isActive ? viewer->getActiveCameraColor()
|
|
manongjohn |
d6e3cc |
: viewer->getOtherCameraColor();
|
|
Toshihiro Shimizu |
890ddd |
|
|
manongjohn |
d6e3cc |
painter->setBrush(cameraColor);
|
|
Shinya Kitaoka |
120a6e |
painter->setPen(Qt::NoPen);
|
|
Shinya Kitaoka |
120a6e |
painter->drawRect(QRectF(0, 0, m_width, m_height));
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
if (!m_parent->isNameEditing()) {
|
|
Shinya Kitaoka |
120a6e |
if (stageScene->getCurrentObject() == m_parent->getStageObject()->getId())
|
|
manongjohn |
d6e3cc |
painter->setPen(viewer->getSelectedNodeTextColor());
|
|
Shinya Kitaoka |
120a6e |
else
|
|
manongjohn |
d6e3cc |
painter->setPen(viewer->getTextColor());
|
|
Shinya Kitaoka |
120a6e |
// Draw the name
|
|
Shinya Kitaoka |
120a6e |
QRectF rect(18, 0, 54, 18);
|
|
Shinya Kitaoka |
120a6e |
QString elidedName = elideText(m_name, painter->font(), rect.width());
|
|
Shinya Kitaoka |
120a6e |
painter->drawText(rect, Qt::AlignLeft | Qt::AlignVCenter, elidedName);
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//--------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
void CameraPainter::contextMenuEvent(QGraphicsSceneContextMenuEvent *cme) {
|
|
Shinya Kitaoka |
120a6e |
StageSchematicScene *stageScene =
|
|
Shinya Kitaoka |
120a6e |
dynamic_cast<stageschematicscene *="">(scene());</stageschematicscene>
|
|
Shinya Kitaoka |
120a6e |
QMenu menu(stageScene->views()[0]);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
QAction *cameraSettings =
|
|
Shinya Kitaoka |
120a6e |
CommandManager::instance()->getAction("MI_CameraStage");
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
QAction *resetCenter = new QAction(tr("&Reset Center"), &menu);
|
|
Shinya Kitaoka |
120a6e |
connect(resetCenter, SIGNAL(triggered()), stageScene, SLOT(onResetCenter()));
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
QAction *activate = new QAction(tr("&Activate"), &menu);
|
|
Shinya Kitaoka |
120a6e |
connect(activate, SIGNAL(triggered()), stageScene, SLOT(onCameraActivate()));
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
QAction *clear = CommandManager::instance()->getAction("MI_Clear");
|
|
Shinya Kitaoka |
120a6e |
QAction *copy = CommandManager::instance()->getAction("MI_Copy");
|
|
Shinya Kitaoka |
120a6e |
QAction *cut = CommandManager::instance()->getAction("MI_Cut");
|
|
Shinya Kitaoka |
120a6e |
QAction *paste = CommandManager::instance()->getAction("MI_Paste");
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
bool isDeactivated =
|
|
Shinya Kitaoka |
120a6e |
m_parent->getStageObject()->getId() !=
|
|
Shinya Kitaoka |
120a6e |
stageScene->getXsheet()->getStageObjectTree()->getCurrentCameraId();
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
if (isDeactivated)
|
|
Shinya Kitaoka |
120a6e |
menu.addAction(activate);
|
|
Shinya Kitaoka |
120a6e |
else
|
|
Shinya Kitaoka |
120a6e |
menu.addAction(cameraSettings);
|
|
Shinya Kitaoka |
120a6e |
menu.addAction(resetCenter);
|
|
Shinya Kitaoka |
120a6e |
menu.addSeparator();
|
|
Shinya Kitaoka |
120a6e |
if (isDeactivated) menu.addAction(clear);
|
|
Shinya Kitaoka |
120a6e |
menu.addAction(copy);
|
|
Shinya Kitaoka |
120a6e |
if (isDeactivated) menu.addAction(cut);
|
|
Shinya Kitaoka |
120a6e |
menu.addAction(paste);
|
|
Shinya Kitaoka |
120a6e |
menu.exec(cme->screenPos());
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//========================================================
|
|
Toshihiro Shimizu |
890ddd |
//
|
|
Shinya Kitaoka |
120a6e |
// TablePainter
|
|
Toshihiro Shimizu |
890ddd |
//
|
|
Toshihiro Shimizu |
890ddd |
//========================================================
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
TablePainter::TablePainter(StageSchematicTableNode *parent, double width,
|
|
Shinya Kitaoka |
120a6e |
double height)
|
|
Shinya Kitaoka |
120a6e |
: QGraphicsItem(parent)
|
|
Shinya Kitaoka |
120a6e |
, m_width(width)
|
|
Shinya Kitaoka |
120a6e |
, m_height(height)
|
|
Shinya Kitaoka |
120a6e |
, m_parent(parent) {}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//--------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
TablePainter::~TablePainter() {}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//--------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
QRectF TablePainter::boundingRect() const {
|
|
Shinya Kitaoka |
120a6e |
return QRectF(-5, -5, m_width + 10, m_height + 10);
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//--------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
void TablePainter::paint(QPainter *painter,
|
|
Shinya Kitaoka |
120a6e |
const QStyleOptionGraphicsItem *option,
|
|
Shinya Kitaoka |
120a6e |
QWidget *widget) {
|
|
Shinya Kitaoka |
120a6e |
QPixmap tablePm = QPixmap(":Resources/schematic_tablenode.png");
|
|
Toshihiro Shimizu |
890ddd |
|
|
manongjohn |
d6e3cc |
StageSchematicScene *stageScene =
|
|
manongjohn |
d6e3cc |
dynamic_cast<stageschematicscene *="">(scene());</stageschematicscene>
|
|
manongjohn |
d6e3cc |
if (!stageScene) return;
|
|
Toshihiro Shimizu |
890ddd |
|
|
manongjohn |
d6e3cc |
SchematicViewer *viewer = stageScene->getSchematicViewer();
|
|
manongjohn |
d6e3cc |
|
|
manongjohn |
d6e3cc |
painter->setBrush(viewer->getTableColor());
|
|
Shinya Kitaoka |
120a6e |
painter->setPen(Qt::NoPen);
|
|
Shinya Kitaoka |
120a6e |
painter->drawRect(QRectF(0, 0, m_width, m_height));
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
QRect imgRect(3, -3, 24, 24);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
painter->drawPixmap(imgRect, tablePm);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
if (stageScene->getCurrentObject() == m_parent->getStageObject()->getId())
|
|
manongjohn |
d6e3cc |
painter->setPen(viewer->getSelectedNodeTextColor());
|
|
Shinya Kitaoka |
120a6e |
else
|
|
manongjohn |
d6e3cc |
painter->setPen(viewer->getTextColor());
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
// Draw the name
|
|
Shinya Kitaoka |
120a6e |
QRectF rect(30, 0, 42, 18);
|
|
manongjohn |
d6e3cc |
painter->drawText(rect, Qt::AlignLeft | Qt::AlignVCenter,
|
|
manongjohn |
d6e3cc |
QString(tr("Table")));
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//--------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
void TablePainter::contextMenuEvent(QGraphicsSceneContextMenuEvent *cme) {
|
|
Shinya Kitaoka |
120a6e |
StageSchematicScene *stageScene =
|
|
Shinya Kitaoka |
120a6e |
dynamic_cast<stageschematicscene *="">(scene());</stageschematicscene>
|
|
Shinya Kitaoka |
120a6e |
QMenu menu(stageScene->views()[0]);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
QAction *resetCenter = new QAction(tr("&Reset Center"), &menu);
|
|
Shinya Kitaoka |
120a6e |
connect(resetCenter, SIGNAL(triggered()), stageScene, SLOT(onResetCenter()));
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
menu.addAction(resetCenter);
|
|
Shinya Kitaoka |
120a6e |
menu.exec(cme->screenPos());
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//========================================================
|
|
Toshihiro Shimizu |
890ddd |
//
|
|
Shinya Kitaoka |
120a6e |
// SplinePainter
|
|
Toshihiro Shimizu |
890ddd |
//
|
|
Toshihiro Shimizu |
890ddd |
//========================================================
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
SplinePainter::SplinePainter(StageSchematicSplineNode *parent, double width,
|
|
Shinya Kitaoka |
120a6e |
double height, const QString &name)
|
|
Shinya Kitaoka |
120a6e |
: QGraphicsItem(parent)
|
|
Shinya Kitaoka |
120a6e |
, m_parent(parent)
|
|
Shinya Kitaoka |
120a6e |
, m_width(width)
|
|
Shinya Kitaoka |
120a6e |
, m_height(height)
|
|
Shinya Kitaoka |
120a6e |
, m_name(name) {}
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
//--------------------------------------------------------
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
SplinePainter::~SplinePainter() {}
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
//--------------------------------------------------------
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
QRectF SplinePainter::boundingRect() const {
|
|
Shinya Kitaoka |
120a6e |
if (m_parent->isOpened())
|
|
Shinya Kitaoka |
120a6e |
return QRectF(-5, -5, m_width + 10, m_height + 59);
|
|
Shinya Kitaoka |
120a6e |
else
|
|
Shinya Kitaoka |
120a6e |
return QRectF(-5, -5, m_width + 10, m_height + 10);
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
//--------------------------------------------------------
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
void SplinePainter::paint(QPainter *painter,
|
|
Shinya Kitaoka |
120a6e |
const QStyleOptionGraphicsItem *option,
|
|
Shinya Kitaoka |
120a6e |
QWidget *widget) {
|
|
manongjohn |
d6e3cc |
StageSchematicScene *stageScene =
|
|
manongjohn |
d6e3cc |
dynamic_cast<stageschematicscene *="">(scene());</stageschematicscene>
|
|
manongjohn |
d6e3cc |
if (!stageScene) return;
|
|
manongjohn |
d6e3cc |
|
|
manongjohn |
d6e3cc |
SchematicViewer *viewer = stageScene->getSchematicViewer();
|
|
manongjohn |
d6e3cc |
|
|
manongjohn |
d6e3cc |
painter->setBrush(viewer->getSplineColor());
|
|
Shinya Kitaoka |
120a6e |
painter->setPen(Qt::NoPen);
|
|
Shinya Kitaoka |
120a6e |
painter->drawRoundRect(QRectF(0, 0, m_width, m_height), 20, 99);
|
|
Shinya Kitaoka |
120a6e |
if (m_parent->isOpened()) {
|
|
Shinya Kitaoka |
120a6e |
// Draw the pixmap
|
|
Shinya Kitaoka |
120a6e |
painter->setBrush(Qt::NoBrush);
|
|
Shinya Kitaoka |
120a6e |
painter->setPen(QColor(0, 0, 0, 255));
|
|
Shinya Kitaoka |
120a6e |
QPixmap pixmap = scalePixmapKeepingAspectRatio(
|
|
Shinya Kitaoka |
120a6e |
m_parent->getPixmap(), QSize(m_width, 49), Qt::transparent);
|
|
Shinya Kitaoka |
120a6e |
if (!pixmap.isNull()) {
|
|
Shinya Kitaoka |
120a6e |
painter->drawPixmap(QPointF(0, 18), pixmap);
|
|
Shinya Kitaoka |
120a6e |
} else {
|
|
Shinya Kitaoka |
120a6e |
painter->setBrush(QColor(255, 255, 255, 255));
|
|
Shinya Kitaoka |
120a6e |
painter->drawRect(0, 18, m_width, 49);
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
//! draw the name only if it is not editing
|
|
Shinya Kitaoka |
120a6e |
if (!m_parent->isNameEditing()) {
|
|
manongjohn |
d6e3cc |
/* There is no current spline
|
|
manongjohn |
d6e3cc |
TStageObjectId currObj = stageScene->getCurrentObject();
|
|
manongjohn |
d6e3cc |
if(currObj.getCode() == m_parent->getSpline()->getId())
|
|
manongjohn |
d6e3cc |
painter->setPen(viewer->getSelectedNodeTextColor());
|
|
manongjohn |
d6e3cc |
else
|
|
manongjohn |
d6e3cc |
*/
|
|
manongjohn |
d6e3cc |
painter->setPen(viewer->getTextColor());
|
|
Shinya Kitaoka |
120a6e |
QRectF rect(18, 0, 72, 18);
|
|
Shinya Kitaoka |
120a6e |
QString elidedName = elideText(m_name, painter->font(), rect.width());
|
|
Shinya Kitaoka |
120a6e |
painter->drawText(rect, Qt::AlignLeft | Qt::AlignVCenter, elidedName);
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
//--------------------------------------------------------
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
void SplinePainter::contextMenuEvent(QGraphicsSceneContextMenuEvent *cme) {
|
|
Shinya Kitaoka |
120a6e |
StageSchematicScene *stageScene =
|
|
Shinya Kitaoka |
120a6e |
dynamic_cast<stageschematicscene *="">(scene());</stageschematicscene>
|
|
Shinya Kitaoka |
120a6e |
QMenu menu(stageScene->views()[0]);
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
QAction *removeSpline = new QAction(tr("&Delete"), &menu);
|
|
Shinya Kitaoka |
120a6e |
connect(removeSpline, SIGNAL(triggered()), stageScene,
|
|
Shinya Kitaoka |
120a6e |
SLOT(onRemoveSpline()));
|
|
Shinya Kitaoka |
120a6e |
QAction *saveSpline = new QAction(tr("&Save Motion Path..."), &menu);
|
|
Shinya Kitaoka |
120a6e |
connect(saveSpline, SIGNAL(triggered()), stageScene, SLOT(onSaveSpline()));
|
|
Shinya Kitaoka |
120a6e |
QAction *loadSpline = new QAction(tr("&Load Motion Path..."), &menu);
|
|
Shinya Kitaoka |
120a6e |
connect(loadSpline, SIGNAL(triggered()), stageScene, SLOT(onLoadSpline()));
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
QAction *copy = CommandManager::instance()->getAction("MI_Copy");
|
|
Shinya Kitaoka |
120a6e |
QAction *cut = CommandManager::instance()->getAction("MI_Cut");
|
|
Shinya Kitaoka |
120a6e |
QAction *paste = CommandManager::instance()->getAction("MI_Paste");
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
menu.addAction(saveSpline);
|
|
Shinya Kitaoka |
120a6e |
menu.addAction(loadSpline);
|
|
Shinya Kitaoka |
120a6e |
menu.addSeparator();
|
|
Shinya Kitaoka |
120a6e |
menu.addAction(removeSpline);
|
|
Shinya Kitaoka |
120a6e |
menu.addAction(copy);
|
|
Shinya Kitaoka |
120a6e |
menu.addAction(cut);
|
|
Shinya Kitaoka |
120a6e |
menu.addAction(paste);
|
|
Shinya Kitaoka |
120a6e |
menu.exec(cme->screenPos());
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//========================================================
|
|
Toshihiro Shimizu |
890ddd |
//
|
|
Shinya Kitaoka |
120a6e |
// StageSchematicNodePort
|
|
Toshihiro Shimizu |
890ddd |
//
|
|
Toshihiro Shimizu |
890ddd |
//========================================================
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
StageSchematicNodePort::StageSchematicNodePort(StageSchematicNodeDock *parent,
|
|
Shinya Kitaoka |
120a6e |
int type)
|
|
Shinya Kitaoka |
120a6e |
: SchematicPort(parent, parent->getNode(), type), m_handle("") {
|
|
Shinya Kitaoka |
120a6e |
QRectF rect = boundingRect();
|
|
Shinya Kitaoka |
120a6e |
if (parent->isParentPort())
|
|
Shinya Kitaoka |
120a6e |
m_hook = QPointF(rect.left(), (rect.top() + rect.bottom()) * 0.5);
|
|
Shinya Kitaoka |
120a6e |
else
|
|
Shinya Kitaoka |
120a6e |
m_hook = QPointF(rect.right(), (rect.top() + rect.bottom()) * 0.5);
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
//--------------------------------------------------------
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
StageSchematicNodePort::~StageSchematicNodePort() {}
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
//--------------------------------------------------------
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
QRectF StageSchematicNodePort::boundingRect() const {
|
|
shun_iwasawa |
3cc41f |
return QRectF(0, 0, 18, 18);
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
//--------------------------------------------------------
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
void StageSchematicNodePort::paint(QPainter *painter,
|
|
Shinya Kitaoka |
120a6e |
const QStyleOptionGraphicsItem *option,
|
|
Shinya Kitaoka |
120a6e |
QWidget *widget) {
|
|
Shinya Kitaoka |
120a6e |
// StageSchematicNode *node = dynamic_cast<stageschematicnode *="">(getNode());</stageschematicnode>
|
|
Shinya Kitaoka |
120a6e |
StageSchematicScene *scene =
|
|
Shinya Kitaoka |
120a6e |
dynamic_cast<stageschematicscene *="">(this->scene());</stageschematicscene>
|
|
Shinya Kitaoka |
120a6e |
if (scene && scene->isShowLetterOnPortFlagEnabled()) {
|
|
Shinya Kitaoka |
120a6e |
painter->setBrush(QColor(255, 255, 255, 255));
|
|
Shinya Kitaoka |
120a6e |
painter->setPen(QColor(180, 180, 180, 255));
|
|
Shinya Kitaoka |
120a6e |
painter->drawRect(boundingRect());
|
|
Shinya Kitaoka |
120a6e |
if (m_type == 103 || m_type == 104 || m_type == 105) return;
|
|
Shinya Kitaoka |
120a6e |
painter->setPen(QColor(0, 0, 0, 255));
|
|
Shinya Kitaoka |
120a6e |
QFont font("Verdana", 8);
|
|
Shinya Kitaoka |
120a6e |
painter->setFont(font);
|
|
Shinya Kitaoka |
120a6e |
QTextOption textOption(Qt::AlignCenter);
|
|
Shinya Kitaoka |
120a6e |
QString text = m_handle;
|
|
Shinya Kitaoka |
120a6e |
if (text.size() > 1 && text.at(0) == 'H') text.remove("H");
|
|
Shinya Kitaoka |
120a6e |
painter->drawText(boundingRect(), text, textOption);
|
|
Shinya Kitaoka |
120a6e |
} else {
|
|
shun_iwasawa |
3cc41f |
QRect imgRect(2, 2, 14, 14);
|
|
shun_iwasawa |
3cc41f |
QRect sourceRect = scene->views()[0]->matrix().mapRect(imgRect);
|
|
shun_iwasawa |
3cc41f |
QPixmap pixmap;
|
|
shun_iwasawa |
3cc41f |
|
|
shun_iwasawa |
3cc41f |
if (getType() == eStageParentPort || getType() == eStageParentGroupPort) {
|
|
shun_iwasawa |
3cc41f |
if (isHighlighted())
|
|
shun_iwasawa |
3cc41f |
pixmap = QIcon(":Resources/port_blue_highlight.svg")
|
|
shun_iwasawa |
3cc41f |
.pixmap(sourceRect.size());
|
|
shun_iwasawa |
3cc41f |
else
|
|
shun_iwasawa |
3cc41f |
pixmap = QIcon(":Resources/port_blue.svg").pixmap(sourceRect.size());
|
|
shun_iwasawa |
3cc41f |
} else {
|
|
shun_iwasawa |
3cc41f |
if (isHighlighted())
|
|
shun_iwasawa |
3cc41f |
pixmap = QIcon(":Resources/port_red_highlight.svg")
|
|
shun_iwasawa |
3cc41f |
.pixmap(sourceRect.size());
|
|
shun_iwasawa |
3cc41f |
else
|
|
shun_iwasawa |
3cc41f |
pixmap = QIcon(":Resources/port_red.svg").pixmap(sourceRect.size());
|
|
shun_iwasawa |
3cc41f |
}
|
|
shun_iwasawa |
3cc41f |
sourceRect = QRect(0, 0, sourceRect.width() * getDevPixRatio(),
|
|
shun_iwasawa |
3cc41f |
sourceRect.height() * getDevPixRatio());
|
|
shun_iwasawa |
3cc41f |
painter->drawPixmap(imgRect, pixmap, sourceRect);
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
//--------------------------------------------------------
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
bool StageSchematicNodePort::linkTo(SchematicPort *port, bool checkOnly) {
|
|
Shinya Kitaoka |
120a6e |
StageSchematicScene *stageScene =
|
|
Shinya Kitaoka |
120a6e |
dynamic_cast<stageschematicscene *="">(scene());</stageschematicscene>
|
|
Shinya Kitaoka |
120a6e |
if (!port) return false;
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
StageSchematicNode *srcNode = dynamic_cast<stageschematicnode *="">(getNode());</stageschematicnode>
|
|
Shinya Kitaoka |
120a6e |
if (this == port && !srcNode->getStageObject()->isGrouped()) {
|
|
Shinya Kitaoka |
120a6e |
if (!checkOnly)
|
|
Shinya Kitaoka |
120a6e |
TStageObjectCmd::setParent(srcNode->getStageObject()->getId(),
|
|
Shinya Kitaoka |
120a6e |
TStageObjectId::NoneId, "",
|
|
Shinya Kitaoka |
120a6e |
stageScene->getXsheetHandle());
|
|
Shinya Kitaoka |
120a6e |
return true;
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Shinya Kitaoka |
120a6e |
StageSchematicNode *dstNode =
|
|
Shinya Kitaoka |
120a6e |
dynamic_cast<stageschematicnode *="">(port->getNode());</stageschematicnode>
|
|
Shinya Kitaoka |
120a6e |
if (!dstNode) return false;
|
|
Shinya Kitaoka |
120a6e |
if (srcNode == dstNode) return false;
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
TStageObject *pegbar = 0, *parentPegbar = 0;
|
|
Shinya Kitaoka |
120a6e |
SchematicPort *childPort, *parentPort;
|
|
Shinya Kitaoka |
120a6e |
if (getType() == eStageParentPort && port->getType() == eStageChildPort) {
|
|
Shinya Kitaoka |
120a6e |
pegbar = srcNode->getStageObject();
|
|
Shinya Kitaoka |
120a6e |
parentPegbar = dstNode->getStageObject();
|
|
Shinya Kitaoka |
120a6e |
childPort = this;
|
|
Shinya Kitaoka |
120a6e |
parentPort = port;
|
|
Shinya Kitaoka |
120a6e |
} else if (getType() == eStageChildPort &&
|
|
Shinya Kitaoka |
120a6e |
port->getType() == eStageParentPort) {
|
|
Shinya Kitaoka |
120a6e |
pegbar = dstNode->getStageObject();
|
|
Shinya Kitaoka |
120a6e |
parentPegbar = srcNode->getStageObject();
|
|
Shinya Kitaoka |
120a6e |
childPort = port;
|
|
Shinya Kitaoka |
120a6e |
parentPort = this;
|
|
Shinya Kitaoka |
120a6e |
} else
|
|
Shinya Kitaoka |
120a6e |
return false;
|
|
Shinya Kitaoka |
120a6e |
if (pegbar->getId().isTable()) return false;
|
|
Shinya Kitaoka |
120a6e |
if (pegbar->getId().isPegbar() && !parentPegbar->getId().isTable() &&
|
|
Shinya Kitaoka |
120a6e |
!parentPegbar->getId().isPegbar() && !parentPegbar->getId().isCamera())
|
|
Shinya Kitaoka |
120a6e |
return false;
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
if (parentPegbar == pegbar || parentPegbar->isAncestor(pegbar)) return false;
|
|
Shinya Kitaoka |
120a6e |
if (parentPegbar->isGrouped() || pegbar->isGrouped()) return false;
|
|
Shinya Kitaoka |
120a6e |
if (checkOnly) return true;
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
StageSchematicNodePort *dstPort =
|
|
Shinya Kitaoka |
120a6e |
dynamic_cast<stageschematicnodeport *="">(parentPort);</stageschematicnodeport>
|
|
Shinya Kitaoka |
120a6e |
if (!dstPort) return false;
|
|
Shinya Kitaoka |
120a6e |
TStageObjectCmd::setParent(pegbar->getId(), parentPegbar->getId(),
|
|
Shinya Kitaoka |
120a6e |
dstPort->getHandle().toStdString(),
|
|
Shinya Kitaoka |
120a6e |
stageScene->getXsheetHandle());
|
|
Shinya Kitaoka |
120a6e |
return true;
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
//--------------------------------------------------------
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
SchematicPort *StageSchematicNodePort::searchPort(const QPointF &scenePos) {
|
|
Shinya Kitaoka |
120a6e |
QList<qgraphicsitem *=""> items = scene()->items(scenePos);</qgraphicsitem>
|
|
Shinya Kitaoka |
120a6e |
int i;
|
|
Shinya Kitaoka |
120a6e |
for (i = 0; i < items.size(); i++) {
|
|
Shinya Kitaoka |
120a6e |
StageSchematicNodePort *linkingTo =
|
|
Shinya Kitaoka |
120a6e |
dynamic_cast<stageschematicnodeport *="">(items[i]);</stageschematicnodeport>
|
|
Shinya Kitaoka |
120a6e |
if (linkingTo) {
|
|
Shinya Kitaoka |
120a6e |
StageSchematicNode *node =
|
|
Shinya Kitaoka |
120a6e |
dynamic_cast<stageschematicnode *="">(linkingTo->getNode());</stageschematicnode>
|
|
Shinya Kitaoka |
120a6e |
if (!node->getStageObject()->isGrouped()) return linkingTo;
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Shinya Kitaoka |
120a6e |
return 0;
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
//--------------------------------------------------------
|
|
Shinya Kitaoka |
120a6e |
|
|
shun-iwasawa |
21e838 |
void StageSchematicNodePort::hideSnappedLinks(SchematicPort *linkingPort) {
|
|
shun-iwasawa |
21e838 |
if (!linkingPort) return;
|
|
Shinya Kitaoka |
120a6e |
if (getType() == eStageChildPort &&
|
|
shun-iwasawa |
21e838 |
linkingPort->getType() == eStageParentPort &&
|
|
shun-iwasawa |
21e838 |
linkingPort->getLinkCount() == 1)
|
|
shun-iwasawa |
21e838 |
linkingPort->getLink(0)->hide();
|
|
Shinya Kitaoka |
120a6e |
if (getType() == eStageParentPort &&
|
|
shun-iwasawa |
21e838 |
linkingPort->getType() == eStageChildPort && getLinkCount() == 1)
|
|
Shinya Kitaoka |
120a6e |
getLink(0)->hide();
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
//--------------------------------------------------------
|
|
Shinya Kitaoka |
120a6e |
|
|
shun-iwasawa |
21e838 |
void StageSchematicNodePort::showSnappedLinks(SchematicPort *linkingPort) {
|
|
shun-iwasawa |
21e838 |
if (!linkingPort) return;
|
|
Shinya Kitaoka |
120a6e |
if (getType() == eStageChildPort &&
|
|
shun-iwasawa |
21e838 |
linkingPort->getType() == eStageParentPort &&
|
|
shun-iwasawa |
21e838 |
linkingPort->getLinkCount() == 1) {
|
|
shun-iwasawa |
21e838 |
linkingPort->getLink(0)->show();
|
|
shun-iwasawa |
21e838 |
linkingPort->highLight(true);
|
|
shun-iwasawa |
21e838 |
linkingPort->update();
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Shinya Kitaoka |
120a6e |
if (getType() == eStageParentPort &&
|
|
shun-iwasawa |
21e838 |
linkingPort->getType() == eStageChildPort && getLinkCount() == 1) {
|
|
Shinya Kitaoka |
120a6e |
getLink(0)->show();
|
|
shun-iwasawa |
21e838 |
linkingPort->highLight(true);
|
|
shun-iwasawa |
21e838 |
linkingPort->update();
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//========================================================
|
|
Toshihiro Shimizu |
890ddd |
//
|
|
Shinya Kitaoka |
120a6e |
// StageSchematicSplinePort
|
|
Toshihiro Shimizu |
890ddd |
//
|
|
Toshihiro Shimizu |
890ddd |
//========================================================
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
StageSchematicSplinePort::StageSchematicSplinePort(
|
|
Shinya Kitaoka |
120a6e |
StageSchematicSplineDock *parent, int type)
|
|
Shinya Kitaoka |
120a6e |
: SchematicPort(parent, parent->getNode(), type), m_parent(parent) {
|
|
Shinya Kitaoka |
120a6e |
m_squarePixmap = QPixmap(":Resources/schematic_spline_aim_square.svg");
|
|
Shinya Kitaoka |
120a6e |
m_rhombPixmap = QPixmap(":Resources/schematic_spline_aim_rhomb.svg");
|
|
Shinya Kitaoka |
120a6e |
QRectF rect = boundingRect();
|
|
Shinya Kitaoka |
120a6e |
if (parent->isParentPort())
|
|
Shinya Kitaoka |
120a6e |
m_hook = QPointF((rect.left() + rect.right()) * 0.5, rect.bottom() - 5);
|
|
Shinya Kitaoka |
120a6e |
else
|
|
Shinya Kitaoka |
120a6e |
m_hook = QPointF((rect.left() + rect.right()) * 0.5, rect.top() + 5);
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//--------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
StageSchematicSplinePort::~StageSchematicSplinePort() {}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//--------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
QRectF StageSchematicSplinePort::boundingRect() const {
|
|
Shinya Kitaoka |
120a6e |
return QRectF(0, 0, 16, 8);
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//--------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
void StageSchematicSplinePort::paint(QPainter *painter,
|
|
Shinya Kitaoka |
120a6e |
const QStyleOptionGraphicsItem *option,
|
|
Shinya Kitaoka |
120a6e |
QWidget *widget) {
|
|
shun_iwasawa |
3cc41f |
QRect rect(0, 0, 16, 8);
|
|
shun_iwasawa |
3cc41f |
QRect sourceRect = scene()->views()[0]->matrix().mapRect(rect);
|
|
shun_iwasawa |
3cc41f |
QPixmap pixmap;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
if (!m_parent->isParentPort()) {
|
|
shun_iwasawa |
3cc41f |
if (getLinkCount() > 0) {
|
|
shun_iwasawa |
3cc41f |
static QIcon splineChildIcon(":Resources/spline_child_port.svg");
|
|
shun_iwasawa |
3cc41f |
pixmap = splineChildIcon.pixmap(sourceRect.size());
|
|
shun_iwasawa |
3cc41f |
} else {
|
|
shun_iwasawa |
3cc41f |
static QIcon splineChildDisconIcon(
|
|
shun_iwasawa |
3cc41f |
":Resources/spline_child_port_disconnect.svg");
|
|
shun_iwasawa |
3cc41f |
pixmap = splineChildDisconIcon.pixmap(sourceRect.size());
|
|
shun_iwasawa |
3cc41f |
}
|
|
shun_iwasawa |
3cc41f |
} else {
|
|
shun_iwasawa |
3cc41f |
static QIcon splineParentIcon(":Resources/spline_parent_port.svg");
|
|
shun_iwasawa |
3cc41f |
pixmap = splineParentIcon.pixmap(sourceRect.size());
|
|
shun_iwasawa |
3cc41f |
}
|
|
shun_iwasawa |
3cc41f |
sourceRect = QRect(0, 0, sourceRect.width() * getDevPixRatio(),
|
|
shun_iwasawa |
3cc41f |
sourceRect.height() * getDevPixRatio());
|
|
shun_iwasawa |
3cc41f |
painter->drawPixmap(rect, pixmap, sourceRect);
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//--------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
bool StageSchematicSplinePort::linkTo(SchematicPort *port, bool checkOnly) {
|
|
Shinya Kitaoka |
120a6e |
assert(port != 0);
|
|
Shinya Kitaoka |
120a6e |
StageSchematicScene *stageScene =
|
|
Shinya Kitaoka |
120a6e |
dynamic_cast<stageschematicscene *="">(scene());</stageschematicscene>
|
|
Shinya Kitaoka |
120a6e |
StageSchematicNode *node = dynamic_cast<stageschematicnode *="">(getNode());</stageschematicnode>
|
|
Shinya Kitaoka |
120a6e |
StageSchematicSplineNode *splineNode =
|
|
Shinya Kitaoka |
120a6e |
dynamic_cast<stageschematicsplinenode *="">(getNode());</stageschematicsplinenode>
|
|
Shinya Kitaoka |
120a6e |
if (node) {
|
|
Shinya Kitaoka |
120a6e |
StageSchematicSplineNode *targetSplineNode =
|
|
Shinya Kitaoka |
120a6e |
dynamic_cast<stageschematicsplinenode *="">(port->getNode());</stageschematicsplinenode>
|
|
Shinya Kitaoka |
120a6e |
if (!targetSplineNode && port != this) return false;
|
|
Shinya Kitaoka |
120a6e |
if (!checkOnly && targetSplineNode) {
|
|
Shinya Kitaoka |
120a6e |
TStageObjectSpline *spline = targetSplineNode->getSpline();
|
|
Shinya Kitaoka |
120a6e |
TStageObjectCmd::setSplineParent(spline, node->getStageObject(),
|
|
Shinya Kitaoka |
120a6e |
stageScene->getXsheetHandle());
|
|
Shinya Kitaoka |
120a6e |
} else if (!checkOnly && port == this)
|
|
Shinya Kitaoka |
120a6e |
node->getStageObject()->setSpline(0);
|
|
Shinya Kitaoka |
120a6e |
return true;
|
|
Shinya Kitaoka |
120a6e |
} else if (splineNode) {
|
|
Shinya Kitaoka |
120a6e |
StageSchematicNode *targetNode =
|
|
Shinya Kitaoka |
120a6e |
dynamic_cast<stageschematicnode *="">(port->getNode());</stageschematicnode>
|
|
Shinya Kitaoka |
120a6e |
if (!targetNode || port->getType() != eStageSplinePort) return false;
|
|
Shinya Kitaoka |
120a6e |
if (!checkOnly) {
|
|
Shinya Kitaoka |
120a6e |
TStageObjectSpline *spline = splineNode->getSpline();
|
|
Shinya Kitaoka |
120a6e |
TStageObjectCmd::setSplineParent(spline, targetNode->getStageObject(),
|
|
Shinya Kitaoka |
120a6e |
stageScene->getXsheetHandle());
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Shinya Kitaoka |
120a6e |
return true;
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Shinya Kitaoka |
120a6e |
return false;
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//--------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
SchematicPort *StageSchematicSplinePort::searchPort(const QPointF &scenePos) {
|
|
Shinya Kitaoka |
120a6e |
QList<qgraphicsitem *=""> items = scene()->items(scenePos);</qgraphicsitem>
|
|
Shinya Kitaoka |
120a6e |
int i;
|
|
Shinya Kitaoka |
120a6e |
for (i = 0; i < items.size(); i++) {
|
|
Shinya Kitaoka |
120a6e |
StageSchematicSplinePort *linkingTo =
|
|
Shinya Kitaoka |
120a6e |
dynamic_cast<stageschematicsplineport *="">(items[i]);</stageschematicsplineport>
|
|
Shinya Kitaoka |
120a6e |
if (linkingTo) return linkingTo;
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Shinya Kitaoka |
120a6e |
return 0;
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//--------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
shun-iwasawa |
21e838 |
void StageSchematicSplinePort::hideSnappedLinks(SchematicPort *) {
|
|
Shinya Kitaoka |
120a6e |
if (!m_linkingTo) return;
|
|
Shinya Kitaoka |
120a6e |
StageSchematicNode *node = dynamic_cast<stageschematicnode *="">(getNode());</stageschematicnode>
|
|
Shinya Kitaoka |
120a6e |
StageSchematicSplineNode *splineNode =
|
|
Shinya Kitaoka |
120a6e |
dynamic_cast<stageschematicsplinenode *="">(getNode());</stageschematicsplinenode>
|
|
Shinya Kitaoka |
120a6e |
if (node && getLinkCount() == 1) getLink(0)->hide();
|
|
Shinya Kitaoka |
120a6e |
if (splineNode && m_linkingTo->getLinkCount() == 1)
|
|
Shinya Kitaoka |
120a6e |
m_linkingTo->getLink(0)->hide();
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//--------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
shun-iwasawa |
21e838 |
void StageSchematicSplinePort::showSnappedLinks(SchematicPort *) {
|
|
Shinya Kitaoka |
120a6e |
if (!m_linkingTo) return;
|
|
Shinya Kitaoka |
120a6e |
StageSchematicNode *node = dynamic_cast<stageschematicnode *="">(getNode());</stageschematicnode>
|
|
Shinya Kitaoka |
120a6e |
StageSchematicSplineNode *splineNode =
|
|
Shinya Kitaoka |
120a6e |
dynamic_cast<stageschematicsplinenode *="">(getNode());</stageschematicsplinenode>
|
|
Shinya Kitaoka |
120a6e |
if (node && getLinkCount() == 1) getLink(0)->show();
|
|
Shinya Kitaoka |
120a6e |
if (splineNode && m_linkingTo->getLinkCount() == 1)
|
|
Shinya Kitaoka |
120a6e |
m_linkingTo->getLink(0)->show();
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//========================================================
|
|
Toshihiro Shimizu |
890ddd |
//
|
|
Shinya Kitaoka |
120a6e |
// class SplineAimChanger
|
|
Toshihiro Shimizu |
890ddd |
//
|
|
Toshihiro Shimizu |
890ddd |
//========================================================
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
SplineAimChanger::SplineAimChanger(QGraphicsItem *parent)
|
|
Shinya Kitaoka |
120a6e |
: SchematicHandleSpinBox(parent), m_aim(false) {}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//--------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
SplineAimChanger::~SplineAimChanger() {}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//--------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
void SplineAimChanger::mouseMoveEvent(QGraphicsSceneMouseEvent *me) {
|
|
Shinya Kitaoka |
120a6e |
if (m_buttonState == Qt::LeftButton) {
|
|
Shinya Kitaoka |
120a6e |
bool increase = false;
|
|
Shinya Kitaoka |
120a6e |
int delta = me->screenPos().y() - me->lastScreenPos().y();
|
|
Shinya Kitaoka |
120a6e |
if (delta < 0) increase = true;
|
|
Shinya Kitaoka |
120a6e |
m_delta += abs(delta);
|
|
Shinya Kitaoka |
120a6e |
if (m_delta > 15) {
|
|
Shinya Kitaoka |
120a6e |
emit(changeStatus());
|
|
Shinya Kitaoka |
120a6e |
m_delta = 0;
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//--------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
void SplineAimChanger::mousePressEvent(QGraphicsSceneMouseEvent *me) {
|
|
Shinya Kitaoka |
120a6e |
SchematicHandleSpinBox::mousePressEvent(me);
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//--------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
void SplineAimChanger::mouseReleaseEvent(QGraphicsSceneMouseEvent *me) {
|
|
Shinya Kitaoka |
120a6e |
SchematicHandleSpinBox::mouseReleaseEvent(me);
|
|
Shinya Kitaoka |
120a6e |
m_delta = 0;
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//========================================================
|
|
Toshihiro Shimizu |
890ddd |
//
|
|
Shinya Kitaoka |
120a6e |
// class StageSchematicNodeDock
|
|
Toshihiro Shimizu |
890ddd |
//
|
|
Toshihiro Shimizu |
890ddd |
//========================================================
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
StageSchematicNodeDock::StageSchematicNodeDock(StageSchematicNode *parent,
|
|
Shinya Kitaoka |
120a6e |
bool isParentPort,
|
|
Shinya Kitaoka |
120a6e |
eStageSchematicPortType type)
|
|
Shinya Kitaoka |
120a6e |
: QGraphicsItem(parent), m_parent(parent), m_isParentPort(isParentPort) {
|
|
Shinya Kitaoka |
120a6e |
setFlag(QGraphicsItem::ItemIsSelectable, false);
|
|
Shinya Kitaoka |
120a6e |
setFlag(QGraphicsItem::ItemIsFocusable, false);
|
|
Shinya Kitaoka |
120a6e |
m_port = new StageSchematicNodePort(this, type);
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
m_handleSpinBox = new SchematicHandleSpinBox(this);
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
m_port->setPos(0, 0);
|
|
Shinya Kitaoka |
120a6e |
if (isParentPort) {
|
|
Shinya Kitaoka |
120a6e |
StageSchematicScene *stageScene =
|
|
Shinya Kitaoka |
120a6e |
dynamic_cast<stageschematicscene *="">(scene());</stageschematicscene>
|
|
Shinya Kitaoka |
120a6e |
if (stageScene && stageScene->isShowLetterOnPortFlagEnabled())
|
|
Shinya Kitaoka |
120a6e |
m_port->setPos(m_handleSpinBox->boundingRect().width(), 0);
|
|
Shinya Kitaoka |
120a6e |
m_handleSpinBox->setPos(0, 1);
|
|
Shinya Kitaoka |
120a6e |
} else
|
|
Shinya Kitaoka |
120a6e |
m_handleSpinBox->setPos(m_port->boundingRect().width(), 1);
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
m_handleSpinBox->hide();
|
|
Shinya Kitaoka |
120a6e |
connect(m_handleSpinBox, SIGNAL(modifyHandle(int)), this,
|
|
Shinya Kitaoka |
120a6e |
SLOT(onModifyHandle(int)));
|
|
Shinya Kitaoka |
120a6e |
connect(m_handleSpinBox, SIGNAL(sceneChanged()), parent,
|
|
Shinya Kitaoka |
120a6e |
SIGNAL(sceneChanged()));
|
|
Shinya Kitaoka |
120a6e |
connect(m_handleSpinBox, SIGNAL(handleReleased()), parent,
|
|
Shinya Kitaoka |
120a6e |
SLOT(onHandleReleased()));
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
connect(this, SIGNAL(sceneChanged()), parent, SIGNAL(sceneChanged()));
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
connect(m_port, SIGNAL(isClicked()), this, SLOT(onPortClicked()));
|
|
Shinya Kitaoka |
120a6e |
connect(m_port, SIGNAL(isReleased(const QPointF &)), this,
|
|
Shinya Kitaoka |
120a6e |
SLOT(onPortReleased(const QPointF &)));
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
m_timer = new QTimer(this);
|
|
Shinya Kitaoka |
120a6e |
m_timer->setInterval(200);
|
|
Shinya Kitaoka |
120a6e |
m_timer->setSingleShot(true);
|
|
Shinya Kitaoka |
120a6e |
connect(m_timer, SIGNAL(timeout()), this, SLOT(onTimeOut()));
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
connect(m_port, SIGNAL(sceneChanged()), parent, SIGNAL(sceneChanged()));
|
|
Shinya Kitaoka |
120a6e |
connect(m_port, SIGNAL(xsheetChanged()), parent, SIGNAL(xsheetChanged()));
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
setZValue(1.5);
|
|
Toshihiro Shimizu |
890ddd |
#if QT_VERSION >= 0x050000
|
|
Shinya Kitaoka |
120a6e |
setAcceptHoverEvents(true);
|
|
Toshihiro Shimizu |
890ddd |
#else
|
|
Shinya Kitaoka |
120a6e |
setAcceptsHoverEvents(true);
|
|
Toshihiro Shimizu |
890ddd |
#endif
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//--------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
StageSchematicNodeDock::~StageSchematicNodeDock() {}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//--------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
QRectF StageSchematicNodeDock::boundingRect() const {
|
|
Shinya Kitaoka |
120a6e |
StageSchematicScene *stageScene =
|
|
Shinya Kitaoka |
120a6e |
dynamic_cast<stageschematicscene *="">(scene());</stageschematicscene>
|
|
Shinya Kitaoka |
120a6e |
QRectF portRect = m_port->boundingRect();
|
|
Shinya Kitaoka |
120a6e |
portRect.moveTopLeft(QPointF(0, 0));
|
|
Shinya Kitaoka |
120a6e |
if (stageScene && stageScene->isShowLetterOnPortFlagEnabled()) {
|
|
Shinya Kitaoka |
120a6e |
QRectF handleRect = m_handleSpinBox->boundingRect();
|
|
Shinya Kitaoka |
120a6e |
handleRect.moveTopLeft(QPointF(portRect.width(), handleRect.topLeft().y()));
|
|
shun_iwasawa |
22eaa4 |
#if QT_VERSION >= 0x050000
|
|
Shinya Kitaoka |
120a6e |
portRect = portRect.united(handleRect);
|
|
shun_iwasawa |
22eaa4 |
#else
|
|
Shinya Kitaoka |
120a6e |
portRect = portRect.unite(handleRect);
|
|
shun_iwasawa |
22eaa4 |
#endif
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Shinya Kitaoka |
120a6e |
return portRect;
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//--------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
void StageSchematicNodeDock::paint(QPainter *painter,
|
|
Shinya Kitaoka |
120a6e |
const QStyleOptionGraphicsItem *option,
|
|
Shinya Kitaoka |
120a6e |
QWidget *widget) {}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//--------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
void StageSchematicNodeDock::onModifyHandle(int increase) {
|
|
Shinya Kitaoka |
120a6e |
StageSchematicScene *stageScene =
|
|
Shinya Kitaoka |
120a6e |
dynamic_cast<stageschematicscene *="">(scene());</stageschematicscene>
|
|
Shinya Kitaoka |
120a6e |
std::string handle(getPort()->getHandle().toStdString());
|
|
shun_iwasawa |
22eaa4 |
|
|
Shinya Kitaoka |
120a6e |
int index;
|
|
Shinya Kitaoka |
120a6e |
if (handle[0] == 'H' && handle.length() > 1)
|
|
Shinya Kitaoka |
120a6e |
index = -(std::stoi(handle.substr(1)));
|
|
Shinya Kitaoka |
120a6e |
else
|
|
Shinya Kitaoka |
120a6e |
index = handle[0] - 'A';
|
|
Shinya Kitaoka |
120a6e |
index += -increase; //==1 ? -1 : 1;
|
|
shun_iwasawa |
22eaa4 |
|
|
Shinya Kitaoka |
120a6e |
int min = (getNode()->getStageObject()->getId().isColumn())
|
|
Shinya Kitaoka |
120a6e |
? -HookSet::maxHooksCount
|
|
Shinya Kitaoka |
120a6e |
: 0;
|
|
Shinya Kitaoka |
120a6e |
index = tcrop(index, min, 25);
|
|
shun_iwasawa |
22eaa4 |
|
|
Shinya Kitaoka |
120a6e |
if (index >= 0)
|
|
Shinya Kitaoka |
120a6e |
handle = std::string(1, (char)('A' + index));
|
|
Shinya Kitaoka |
120a6e |
else
|
|
Shinya Kitaoka |
120a6e |
handle = "H" + std::to_string(-index);
|
|
shun_iwasawa |
22eaa4 |
|
|
Shinya Kitaoka |
120a6e |
if (m_isParentPort)
|
|
Shinya Kitaoka |
120a6e |
TStageObjectCmd::setHandle(getNode()->getStageObject()->getId(), handle,
|
|
Shinya Kitaoka |
120a6e |
stageScene->getXsheetHandle());
|
|
Shinya Kitaoka |
120a6e |
else {
|
|
Shinya Kitaoka |
120a6e |
int i, linkCount = getPort()->getLinkCount();
|
|
Shinya Kitaoka |
120a6e |
std::vector<tstageobjectid> ids;</tstageobjectid>
|
|
Shinya Kitaoka |
120a6e |
for (i = 0; i < linkCount; i++) {
|
|
Shinya Kitaoka |
120a6e |
StageSchematicNode *node =
|
|
Shinya Kitaoka |
120a6e |
dynamic_cast<stageschematicnode *="">(getPort()->getLinkedNode(i));</stageschematicnode>
|
|
Shinya Kitaoka |
120a6e |
if (node) ids.push_back(node->getStageObject()->getId());
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Shinya Kitaoka |
120a6e |
TStageObjectCmd::setParentHandle(ids, handle,
|
|
Shinya Kitaoka |
120a6e |
stageScene->getXsheetHandle());
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Shinya Kitaoka |
120a6e |
getPort()->setHandle(QString::fromStdString(handle));
|
|
Shinya Kitaoka |
120a6e |
getPort()->update();
|
|
shun_iwasawa |
22eaa4 |
}
|
|
shun_iwasawa |
22eaa4 |
|
|
shun_iwasawa |
22eaa4 |
//--------------------------------------------------------
|
|
shun_iwasawa |
22eaa4 |
|
|
Shinya Kitaoka |
120a6e |
void StageSchematicNodeDock::hoverEnterEvent(QGraphicsSceneHoverEvent *he) {
|
|
Shinya Kitaoka |
120a6e |
QList<qgraphicsitem *=""> items = scene()->items(he->scenePos());</qgraphicsitem>
|
|
Shinya Kitaoka |
120a6e |
eStageSchematicPortType type = (eStageSchematicPortType)getPort()->getType();
|
|
Shinya Kitaoka |
120a6e |
if (items.contains(m_port) && type != 103 && type != 104 && type != 105) {
|
|
Shinya Kitaoka |
120a6e |
m_port->highLight(true);
|
|
Shinya Kitaoka |
120a6e |
m_timer->start();
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Shinya Kitaoka |
120a6e |
QGraphicsItem::hoverEnterEvent(he);
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//--------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
void StageSchematicNodeDock::hoverLeaveEvent(QGraphicsSceneHoverEvent *he) {
|
|
Shinya Kitaoka |
120a6e |
m_port->highLight(false);
|
|
Shinya Kitaoka |
120a6e |
m_timer->stop();
|
|
Shinya Kitaoka |
120a6e |
m_handleSpinBox->hide();
|
|
Shinya Kitaoka |
120a6e |
QGraphicsItem::hoverLeaveEvent(he);
|
|
Shinya Kitaoka |
120a6e |
int i;
|
|
Shinya Kitaoka |
120a6e |
for (i = 0; i < m_port->getLinkCount(); i++) m_port->getLink(i)->updatePath();
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//--------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
void StageSchematicNodeDock::hoverMoveEvent(QGraphicsSceneHoverEvent *he) {
|
|
Shinya Kitaoka |
120a6e |
QList<qgraphicsitem *=""> items = scene()->items(he->scenePos());</qgraphicsitem>
|
|
Shinya Kitaoka |
120a6e |
if (!m_port->isHighlighted() && items.contains(m_port)) {
|
|
Shinya Kitaoka |
120a6e |
m_port->highLight(true);
|
|
Shinya Kitaoka |
120a6e |
eStageSchematicPortType type =
|
|
Shinya Kitaoka |
120a6e |
(eStageSchematicPortType)getPort()->getType();
|
|
Shinya Kitaoka |
120a6e |
if (!m_timer->isActive() && type != 103 && type != 104 && type != 105)
|
|
Shinya Kitaoka |
120a6e |
m_timer->start();
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Shinya Kitaoka |
120a6e |
QGraphicsItem::hoverMoveEvent(he);
|
|
Shinya Kitaoka |
120a6e |
update();
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//--------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
void StageSchematicNodeDock::onPortClicked() {
|
|
Shinya Kitaoka |
120a6e |
m_handleSpinBox->hide();
|
|
Shinya Kitaoka |
120a6e |
m_timer->stop();
|
|
Shinya Kitaoka |
120a6e |
int i;
|
|
Shinya Kitaoka |
120a6e |
for (i = 0; i < m_port->getLinkCount(); i++) m_port->getLink(i)->updatePath();
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//--------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
void StageSchematicNodeDock::onPortReleased(const QPointF &pos) {
|
|
Shinya Kitaoka |
120a6e |
QRectF portRect = m_port->boundingRect();
|
|
Shinya Kitaoka |
120a6e |
portRect.moveTopLeft(m_port->scenePos());
|
|
Shinya Kitaoka |
120a6e |
if (portRect.contains(pos)) m_timer->start();
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//--------------------------------------------------------
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
void StageSchematicNodeDock::onTimeOut() {
|
|
Shinya Kitaoka |
120a6e |
StageSchematicScene *stageScene =
|
|
Shinya Kitaoka |
120a6e |
dynamic_cast<stageschematicscene *="">(scene());</stageschematicscene>
|
|
Shinya Kitaoka |
120a6e |
if (stageScene && stageScene->isShowLetterOnPortFlagEnabled())
|
|
Shinya Kitaoka |
120a6e |
m_handleSpinBox->show();
|
|
Shinya Kitaoka |
120a6e |
StageSchematicNodePort *port = getPort();
|
|
Shinya Kitaoka |
120a6e |
int i;
|
|
Shinya Kitaoka |
120a6e |
for (i = 0; i < port->getLinkCount(); i++) {
|
|
Shinya Kitaoka |
120a6e |
SchematicLink *link = port->getLink(i);
|
|
Shinya Kitaoka |
120a6e |
SchematicPort *startPort = link->getStartPort();
|
|
Shinya Kitaoka |
120a6e |
SchematicPort *endPort = link->getEndPort();
|
|
Shinya Kitaoka |
120a6e |
QPointF startPos = startPort->getLinkEndPoint();
|
|
Shinya Kitaoka |
120a6e |
QPointF endPos = endPort->getLinkEndPoint();
|
|
Shinya Kitaoka |
120a6e |
if (startPort == port) {
|
|
Shinya Kitaoka |
120a6e |
if (port->getType() == 101 && startPos.x() > endPos.x())
|
|
Shinya Kitaoka |
120a6e |
startPos = mapToScene(0, boundingRect().height() * 0.5);
|
|
Shinya Kitaoka |
120a6e |
if (port->getType() == 102 && startPos.x() < endPos.x())
|
|
Shinya Kitaoka |
120a6e |
startPos =
|
|
Shinya Kitaoka |
120a6e |
mapToScene(boundingRect().width(), boundingRect().height() * 0.5);
|
|
Shinya Kitaoka |
120a6e |
link->updatePath(startPos, endPos);
|
|
Shinya Kitaoka |
120a6e |
} else {
|
|
Shinya Kitaoka |
120a6e |
if (port->getType() == 101 && startPos.x() < endPos.x())
|
|
Shinya Kitaoka |
120a6e |
endPos = mapToScene(0, boundingRect().height() * 0.5);
|
|
Shinya Kitaoka |
120a6e |
if (port->getType() == 102 && startPos.x() > endPos.x())
|
|
Shinya Kitaoka |
120a6e |
endPos =
|
|
Shinya Kitaoka |
120a6e |
mapToScene(boundingRect().width(), boundingRect().height() * 0.5);
|
|
Shinya Kitaoka |
120a6e |
link->updatePath(startPos, endPos);
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//========================================================
|
|
Toshihiro Shimizu |
890ddd |
//
|
|
Shinya Kitaoka |
120a6e |
// class StageSchematicSplineDock
|
|
Toshihiro Shimizu |
890ddd |
//
|
|
Toshihiro Shimizu |
890ddd |
//========================================================
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
StageSchematicSplineDock::StageSchematicSplineDock(SchematicNode *parent,
|
|
Shinya Kitaoka |
120a6e |
bool isParentPort,
|
|
Shinya Kitaoka |
120a6e |
eStageSchematicPortType type)
|
|
Shinya Kitaoka |
120a6e |
: QGraphicsItem(parent), m_parent(parent), m_isParentPort(isParentPort) {
|
|
Shinya Kitaoka |
120a6e |
setFlag(QGraphicsItem::ItemIsSelectable, false);
|
|
Shinya Kitaoka |
120a6e |
setFlag(QGraphicsItem::ItemIsFocusable, false);
|
|
Shinya Kitaoka |
120a6e |
m_port = new StageSchematicSplinePort(this, type);
|
|
Toshihiro Shimizu |
890ddd |
#if QT_VERSION >= 0x050000
|
|
Shinya Kitaoka |
120a6e |
setAcceptHoverEvents(true);
|
|
Toshihiro Shimizu |
890ddd |
#else
|
|
Shinya Kitaoka |
120a6e |
setAcceptsHoverEvents(true);
|
|
Toshihiro Shimizu |
890ddd |
#endif
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
connect(m_port, SIGNAL(sceneChanged()), parent, SIGNAL(sceneChanged()));
|
|
Shinya Kitaoka |
120a6e |
connect(m_port, SIGNAL(xsheetChanged()), parent, SIGNAL(xsheetChanged()));
|
|
Shinya Kitaoka |
120a6e |
connect(this, SIGNAL(sceneChanged()), parent, SIGNAL(sceneChanged()));
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//--------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
StageSchematicSplineDock::~StageSchematicSplineDock() {}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//--------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
QRectF StageSchematicSplineDock::boundingRect() const {
|
|
Shinya Kitaoka |
120a6e |
QRectF portRect = m_port->boundingRect();
|
|
Shinya Kitaoka |
120a6e |
portRect.moveTopLeft(QPointF(0, 0));
|
|
Shinya Kitaoka |
120a6e |
return portRect;
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//--------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
void StageSchematicSplineDock::paint(QPainter *painter,
|
|
Shinya Kitaoka |
120a6e |
const QStyleOptionGraphicsItem *option,
|
|
Shinya Kitaoka |
120a6e |
QWidget *widget) {}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//========================================================
|
|
Toshihiro Shimizu |
890ddd |
//
|
|
Shinya Kitaoka |
120a6e |
// class StageSchematicNode
|
|
Toshihiro Shimizu |
890ddd |
//
|
|
Toshihiro Shimizu |
890ddd |
//========================================================
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
StageSchematicNode::StageSchematicNode(StageSchematicScene *scene,
|
|
Shinya Kitaoka |
120a6e |
TStageObject *obj, int width, int height,
|
|
Shinya Kitaoka |
120a6e |
bool isGroup)
|
|
Shinya Kitaoka |
120a6e |
: SchematicNode(scene), m_stageObject(obj), m_isGroup(isGroup) {
|
|
Shinya Kitaoka |
120a6e |
m_stageObject->addRef();
|
|
Shinya Kitaoka |
120a6e |
m_width = width;
|
|
Shinya Kitaoka |
120a6e |
m_height = height;
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
// aggiunge le porte
|
|
Shinya Kitaoka |
120a6e |
qreal y = m_height * 0.5 - 5;
|
|
Shinya Kitaoka |
120a6e |
qreal x = m_width * 0.5 - 8;
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
if (m_isGroup)
|
|
Shinya Kitaoka |
120a6e |
m_splineDock =
|
|
Shinya Kitaoka |
120a6e |
new StageSchematicSplineDock(this, false, eStageSplineGroupPort);
|
|
Shinya Kitaoka |
120a6e |
else
|
|
Shinya Kitaoka |
120a6e |
m_splineDock = new StageSchematicSplineDock(this, false, eStageSplinePort);
|
|
Shinya Kitaoka |
120a6e |
addPort(-1, m_splineDock->getPort());
|
|
Shinya Kitaoka |
120a6e |
m_splineDock->setPos(x, m_height);
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
m_pathToggle = new SchematicToggle_SplineOptions(
|
|
manongjohn |
7b18ae |
this, QIcon(":Resources/schematic_spline_aim_rhomb.svg"),
|
|
manongjohn |
7b18ae |
QIcon(":Resources/schematic_spline_aim_square.svg"), 0);
|
|
Shinya Kitaoka |
120a6e |
m_cpToggle = new SchematicToggle_SplineOptions(
|
|
manongjohn |
7b18ae |
this, QIcon(":Resources/schematic_spline_cp.svg"), 0);
|
|
Kite |
521c84 |
m_pathToggle->setSize(16, 16);
|
|
Kite |
521c84 |
m_cpToggle->setSize(16, 16);
|
|
Kite |
521c84 |
m_cpToggle->setPos(m_splineDock->pos() - QPointF(16, 0));
|
|
Kite |
521c84 |
m_pathToggle->setPos(m_cpToggle->pos() - QPointF(16, 0));
|
|
manongjohn |
4f5378 |
m_pathToggle->setToolTip(tr("Toggle Autorotate Along Motion Path"));
|
|
manongjohn |
4f5378 |
m_cpToggle->setToolTip(tr("Toggle Link Motion Path to Control Points"));
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
if (m_stageObject->isPathEnabled()) {
|
|
Shinya Kitaoka |
120a6e |
if (m_stageObject->isAimEnabled())
|
|
Shinya Kitaoka |
120a6e |
m_pathToggle->setState(1);
|
|
Shinya Kitaoka |
120a6e |
else
|
|
Shinya Kitaoka |
120a6e |
m_pathToggle->setState(2);
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Shinya Kitaoka |
120a6e |
m_cpToggle->setIsActive(m_stageObject->isUppkEnabled());
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
connect(m_pathToggle, SIGNAL(stateChanged(int)), scene,
|
|
Shinya Kitaoka |
120a6e |
SLOT(onPathToggled(int)));
|
|
Shinya Kitaoka |
120a6e |
connect(m_cpToggle, SIGNAL(toggled(bool)), scene, SLOT(onCpToggled(bool)));
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
if (!m_stageObject->getSpline()) {
|
|
Shinya Kitaoka |
120a6e |
m_pathToggle->hide();
|
|
Shinya Kitaoka |
120a6e |
m_cpToggle->hide();
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
if (m_isGroup)
|
|
Shinya Kitaoka |
120a6e |
m_parentDock =
|
|
Shinya Kitaoka |
120a6e |
new StageSchematicNodeDock(this, true, eStageParentGroupPort);
|
|
Shinya Kitaoka |
120a6e |
else
|
|
Shinya Kitaoka |
120a6e |
m_parentDock = new StageSchematicNodeDock(this, true, eStageParentPort);
|
|
Shinya Kitaoka |
120a6e |
addPort(0, m_parentDock->getPort());
|
|
Shinya Kitaoka |
120a6e |
if (scene->isShowLetterOnPortFlagEnabled())
|
|
Shinya Kitaoka |
120a6e |
m_parentDock->setPos(-m_parentDock->boundingRect().width(), m_height - 15);
|
|
Shinya Kitaoka |
120a6e |
else
|
|
Shinya Kitaoka |
120a6e |
m_parentDock->setPos(0, 0);
|
|
Shinya Kitaoka |
120a6e |
m_parentDock->getPort()->setHandle("B");
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
StageSchematicNodeDock *childDock;
|
|
Shinya Kitaoka |
120a6e |
if (m_isGroup)
|
|
Shinya Kitaoka |
120a6e |
childDock = new StageSchematicNodeDock(this, false, eStageChildGroupPort);
|
|
Shinya Kitaoka |
120a6e |
else
|
|
Shinya Kitaoka |
120a6e |
childDock = new StageSchematicNodeDock(this, false, eStageChildPort);
|
|
Shinya Kitaoka |
120a6e |
addPort(1, childDock->getPort());
|
|
Shinya Kitaoka |
120a6e |
m_childDocks.append(childDock);
|
|
Shinya Kitaoka |
120a6e |
if (scene->isShowLetterOnPortFlagEnabled())
|
|
Shinya Kitaoka |
120a6e |
childDock->setPos(m_width, m_height - 15);
|
|
Shinya Kitaoka |
120a6e |
else
|
|
Shinya Kitaoka |
120a6e |
childDock->setPos(m_width - 18, 0);
|
|
Shinya Kitaoka |
120a6e |
childDock->getPort()->setHandle("B");
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
//--------------------------------------------------------
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
StageSchematicNode::~StageSchematicNode() { m_stageObject->release(); }
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
//--------------------------------------------------------
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
void StageSchematicNode::setSchematicNodePos(const QPointF &pos) const {
|
|
Shinya Kitaoka |
120a6e |
if (!m_stageObject->isGrouped() || m_stageObject->isGroupEditing())
|
|
Shinya Kitaoka |
120a6e |
m_stageObject->setDagNodePos(TPointD(pos.x(), pos.y()));
|
|
Shinya Kitaoka |
120a6e |
else {
|
|
Shinya Kitaoka |
120a6e |
const StageSchematicGroupNode *groupNode =
|
|
Shinya Kitaoka |
120a6e |
dynamic_cast<const *="" stageschematicgroupnode="">(this);</const>
|
|
Shinya Kitaoka |
120a6e |
assert(groupNode);
|
|
Shinya Kitaoka |
120a6e |
groupNode->updateObjsDagPosition(TPointD(pos.x(), pos.y()));
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
//--------------------------------------------------------
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
StageSchematicNodePort *StageSchematicNode::makeChildPort(
|
|
Shinya Kitaoka |
120a6e |
const QString &label) {
|
|
Shinya Kitaoka |
120a6e |
int i, n = m_childDocks.size();
|
|
Shinya Kitaoka |
120a6e |
assert(n > 0);
|
|
Shinya Kitaoka |
120a6e |
for (i = 0; i < n - 1; i++)
|
|
Shinya Kitaoka |
120a6e |
if (m_childDocks[i]->getPort()->getHandle() == label)
|
|
Shinya Kitaoka |
120a6e |
return m_childDocks[i]->getPort();
|
|
Shinya Kitaoka |
120a6e |
StageSchematicNodeDock *dock = m_childDocks.back();
|
|
Shinya Kitaoka |
120a6e |
dock->getPort()->setHandle(label);
|
|
Shinya Kitaoka |
120a6e |
int k;
|
|
Shinya Kitaoka |
120a6e |
QString newPortName;
|
|
Shinya Kitaoka |
120a6e |
for (k = 0;; k++) {
|
|
Shinya Kitaoka |
120a6e |
newPortName = QString(1, (char)('A' + k));
|
|
Shinya Kitaoka |
120a6e |
int j;
|
|
Shinya Kitaoka |
120a6e |
for (j = 0; j < n; j++) {
|
|
Shinya Kitaoka |
120a6e |
QString name = m_childDocks[j]->getPort()->getHandle();
|
|
Shinya Kitaoka |
120a6e |
if (name == newPortName) break;
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Shinya Kitaoka |
120a6e |
if (j == n) break;
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Shinya Kitaoka |
120a6e |
StageSchematicScene *stageScene =
|
|
Shinya Kitaoka |
120a6e |
dynamic_cast<stageschematicscene *="">(scene());</stageschematicscene>
|
|
Shinya Kitaoka |
120a6e |
if (stageScene && stageScene->isShowLetterOnPortFlagEnabled()) {
|
|
Shinya Kitaoka |
120a6e |
StageSchematicNodeDock *newDock;
|
|
Shinya Kitaoka |
120a6e |
if (m_isGroup)
|
|
Shinya Kitaoka |
120a6e |
newDock = new StageSchematicNodeDock(this, false, eStageChildGroupPort);
|
|
Shinya Kitaoka |
120a6e |
else
|
|
Shinya Kitaoka |
120a6e |
newDock = new StageSchematicNodeDock(this, false, eStageChildPort);
|
|
Shinya Kitaoka |
120a6e |
addPort(m_childDocks.size() + 1, newDock->getPort());
|
|
Shinya Kitaoka |
120a6e |
m_childDocks.append(newDock);
|
|
Shinya Kitaoka |
120a6e |
newDock->getPort()->setHandle(newPortName);
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Shinya Kitaoka |
120a6e |
updateChildDockPositions();
|
|
Shinya Kitaoka |
120a6e |
return dock->getPort();
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
//--------------------------------------------------------
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
StageSchematicNodePort *StageSchematicNode::makeParentPort(
|
|
Shinya Kitaoka |
120a6e |
const QString &label) {
|
|
Shinya Kitaoka |
120a6e |
m_parentDock->getPort()->setHandle(label);
|
|
Shinya Kitaoka |
120a6e |
return m_parentDock->getPort();
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
//--------------------------------------------------------
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
void StageSchematicNode::setPosition(const QPointF &newPos) {
|
|
Shinya Kitaoka |
120a6e |
if (m_stageObject->isGrouped() && m_stageObject->getEditingGroupId() != -1) {
|
|
Shinya Kitaoka |
120a6e |
StageSchematicScene *stageScene =
|
|
Shinya Kitaoka |
120a6e |
dynamic_cast<stageschematicscene *="">(scene());</stageschematicscene>
|
|
Shinya Kitaoka |
120a6e |
assert(stageScene);
|
|
Shinya Kitaoka |
120a6e |
stageScene->updateNestedGroupEditors(this, newPos);
|
|
Shinya Kitaoka |
120a6e |
} else
|
|
Shinya Kitaoka |
120a6e |
setPos(newPos);
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
//--------------------------------------------------------
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
void StageSchematicNode::updateChildDockPositions() {
|
|
Shinya Kitaoka |
120a6e |
int i, size = m_childDocks.size();
|
|
Shinya Kitaoka |
120a6e |
StageSchematicScene *stageScene =
|
|
Shinya Kitaoka |
120a6e |
dynamic_cast<stageschematicscene *="">(scene());</stageschematicscene>
|
|
Shinya Kitaoka |
120a6e |
if (stageScene && stageScene->isShowLetterOnPortFlagEnabled()) {
|
|
Shinya Kitaoka |
120a6e |
double portHeight = m_childDocks.at(0)->getPort()->boundingRect().height();
|
|
Shinya Kitaoka |
120a6e |
double height = size * portHeight;
|
|
Shinya Kitaoka |
120a6e |
double y = (m_height - 15 - portHeight * 0.5) + height * 0.5;
|
|
Shinya Kitaoka |
120a6e |
for (i = 0; i < size; i++) {
|
|
Shinya Kitaoka |
120a6e |
m_childDocks[i]->setPos(m_width, y);
|
|
Shinya Kitaoka |
120a6e |
m_childDocks[i]->getPort()->updateLinksGeometry();
|
|
Shinya Kitaoka |
120a6e |
y -= portHeight;
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Shinya Kitaoka |
120a6e |
} else {
|
|
Shinya Kitaoka |
120a6e |
double y = 18;
|
|
Shinya Kitaoka |
120a6e |
for (i = 0; i < size; i++) {
|
|
Shinya Kitaoka |
120a6e |
m_childDocks[i]->setPos(m_width - 18, m_height - y);
|
|
Shinya Kitaoka |
120a6e |
m_childDocks[i]->getPort()->updateLinksGeometry();
|
|
Shinya Kitaoka |
120a6e |
y += m_childDocks.at(0)->getPort()->boundingRect().height();
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
//--------------------------------------------------------
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
void StageSchematicNode::onClicked() {
|
|
Shinya Kitaoka |
120a6e |
TStageObjectId id = m_stageObject->getId();
|
|
Shinya Kitaoka |
120a6e |
emit currentObjectChanged(id, false);
|
|
Shinya Kitaoka |
120a6e |
if (id.isColumn())
|
|
Shinya Kitaoka |
120a6e |
emit currentColumnChanged(id.getIndex());
|
|
Shinya Kitaoka |
120a6e |
else if (id.isCamera() || id.isPegbar() || id.isTable())
|
|
Shinya Kitaoka |
120a6e |
emit editObject();
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
//--------------------------------------------------------
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
void StageSchematicNode::onHandleReleased() {
|
|
Shinya Kitaoka |
120a6e |
int i;
|
|
Shinya Kitaoka |
120a6e |
bool updated = false;
|
|
Shinya Kitaoka |
120a6e |
for (i = m_childDocks.size() - 1; i >= 0; i--) {
|
|
Shinya Kitaoka |
120a6e |
StageSchematicNodePort *port = m_childDocks[i]->getPort();
|
|
Shinya Kitaoka |
120a6e |
assert(port);
|
|
Shinya Kitaoka |
120a6e |
if (!port) continue;
|
|
Shinya Kitaoka |
120a6e |
QString label = port->getHandle();
|
|
Shinya Kitaoka |
120a6e |
int j;
|
|
Shinya Kitaoka |
120a6e |
for (j = 0; j < m_childDocks.size(); j++) {
|
|
Shinya Kitaoka |
120a6e |
StageSchematicNodePort *refPort = m_childDocks[j]->getPort();
|
|
Shinya Kitaoka |
120a6e |
assert(refPort);
|
|
Shinya Kitaoka |
120a6e |
if (!refPort) continue;
|
|
Shinya Kitaoka |
120a6e |
if (refPort->getHandle() == label && i != j) {
|
|
Shinya Kitaoka |
120a6e |
StageSchematicNodeDock *dock = m_childDocks[i];
|
|
Shinya Kitaoka |
120a6e |
int k;
|
|
Shinya Kitaoka |
120a6e |
if (port->getLinkCount() == 0 || refPort->getLinkCount() == 0) {
|
|
Shinya Kitaoka |
120a6e |
updated = true;
|
|
Shinya Kitaoka |
120a6e |
break;
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Shinya Kitaoka |
120a6e |
for (k = port->getLinkCount() - 1; k >= 0; k--) {
|
|
Shinya Kitaoka |
120a6e |
SchematicLink *link = port->getLink(k);
|
|
Shinya Kitaoka |
120a6e |
assert(link);
|
|
Shinya Kitaoka |
120a6e |
if (!link) continue;
|
|
Shinya Kitaoka |
120a6e |
if (link->getStartPort() == port)
|
|
Shinya Kitaoka |
120a6e |
link->setStartPort(refPort);
|
|
Shinya Kitaoka |
120a6e |
else if (link->getEndPort() == port)
|
|
Shinya Kitaoka |
120a6e |
link->setEndPort(refPort);
|
|
Shinya Kitaoka |
120a6e |
port->removeLink(link);
|
|
Shinya Kitaoka |
120a6e |
refPort->addLink(link);
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Shinya Kitaoka |
120a6e |
m_childDocks.removeAt(i);
|
|
Shinya Kitaoka |
120a6e |
delete dock;
|
|
Shinya Kitaoka |
120a6e |
updateChildDockPositions();
|
|
Shinya Kitaoka |
120a6e |
update();
|
|
Shinya Kitaoka |
120a6e |
updated = true;
|
|
Shinya Kitaoka |
120a6e |
break;
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Shinya Kitaoka |
120a6e |
if (updated) break;
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
if (updated) {
|
|
Shinya Kitaoka |
120a6e |
QSet<qstring> labels;</qstring>
|
|
Shinya Kitaoka |
120a6e |
StageSchematicNodePort *freePort = 0;
|
|
Shinya Kitaoka |
120a6e |
for (i = 0; i < m_childDocks.size(); i++) {
|
|
Shinya Kitaoka |
120a6e |
StageSchematicNodePort *port = m_childDocks[i]->getPort();
|
|
Shinya Kitaoka |
120a6e |
assert(port);
|
|
Shinya Kitaoka |
120a6e |
if (!port) continue;
|
|
Shinya Kitaoka |
120a6e |
if (port->getLinkCount() == 0)
|
|
Shinya Kitaoka |
120a6e |
freePort = port;
|
|
Shinya Kitaoka |
120a6e |
else
|
|
Shinya Kitaoka |
120a6e |
labels.insert(port->getHandle());
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
i = 0;
|
|
Shinya Kitaoka |
120a6e |
while (labels.contains(QString(1, (char)('A' + i)))) i++;
|
|
Shinya Kitaoka |
120a6e |
freePort->setHandle(QString(1, (char)('A' + i)));
|
|
Shinya Kitaoka |
120a6e |
freePort->update();
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//========================================================
|
|
Toshihiro Shimizu |
890ddd |
//
|
|
Shinya Kitaoka |
120a6e |
// class StageSchematicPegbarNode
|
|
Toshihiro Shimizu |
890ddd |
//
|
|
Toshihiro Shimizu |
890ddd |
//========================================================
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
StageSchematicPegbarNode::StageSchematicPegbarNode(StageSchematicScene *scene,
|
|
Shinya Kitaoka |
120a6e |
TStageObject *pegbar)
|
|
Shinya Kitaoka |
120a6e |
: StageSchematicNode(scene, pegbar, 90, 18) {
|
|
Shinya Kitaoka |
120a6e |
std::string name = m_stageObject->getFullName();
|
|
Shinya Kitaoka |
120a6e |
std::string id = m_stageObject->getId().toString();
|
|
Shinya Kitaoka |
120a6e |
m_name = QString::fromStdString(name);
|
|
Shinya Kitaoka |
120a6e |
m_nameItem = new SchematicName(this, 72, 20);
|
|
Shinya Kitaoka |
120a6e |
m_nameItem->setName(m_name);
|
|
Shinya Kitaoka |
120a6e |
m_nameItem->setPos(16, -1);
|
|
Shinya Kitaoka |
120a6e |
m_nameItem->setZValue(2);
|
|
Shinya Kitaoka |
120a6e |
connect(m_nameItem, SIGNAL(focusOut()), this, SLOT(onNameChanged()));
|
|
Shinya Kitaoka |
120a6e |
m_nameItem->hide();
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
m_pegbarPainter = new PegbarPainter(this, m_width, m_height, m_name);
|
|
Shinya Kitaoka |
120a6e |
m_pegbarPainter->setZValue(1);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
QString toolTip =
|
|
Shinya Kitaoka |
120a6e |
name == id ? m_name : m_name + " (" + QString::fromStdString(id) + ")";
|
|
Shinya Kitaoka |
120a6e |
setToolTip(toolTip);
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//--------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
StageSchematicPegbarNode::~StageSchematicPegbarNode() {}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//--------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
QRectF StageSchematicPegbarNode::boundingRect() const {
|
|
Shinya Kitaoka |
120a6e |
return QRectF(-5, -5, m_width + 10, m_height + 10);
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//--------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
void StageSchematicPegbarNode::paint(QPainter *painter,
|
|
Shinya Kitaoka |
120a6e |
const QStyleOptionGraphicsItem *option,
|
|
Shinya Kitaoka |
120a6e |
QWidget *widget) {
|
|
Shinya Kitaoka |
120a6e |
StageSchematicNode::paint(painter, option, widget);
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//--------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
void StageSchematicPegbarNode::mouseDoubleClickEvent(
|
|
Shinya Kitaoka |
120a6e |
QGraphicsSceneMouseEvent *me) {
|
|
Shinya Kitaoka |
120a6e |
QRectF nameArea(18, 0, m_width - 36, 14);
|
|
Shinya Kitaoka |
120a6e |
if (nameArea.contains(me->pos())) {
|
|
Shinya Kitaoka |
120a6e |
m_nameItem->setPlainText(m_name);
|
|
Shinya Kitaoka |
120a6e |
m_nameItem->show();
|
|
Shinya Kitaoka |
120a6e |
m_nameItem->setFocus();
|
|
Shinya Kitaoka |
120a6e |
setFlag(QGraphicsItem::ItemIsSelectable, false);
|
|
Shinya Kitaoka |
120a6e |
return;
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//--------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
void StageSchematicPegbarNode::onNameChanged() {
|
|
Shinya Kitaoka |
120a6e |
StageSchematicScene *stageScene =
|
|
Shinya Kitaoka |
120a6e |
dynamic_cast<stageschematicscene *="">(scene());</stageschematicscene>
|
|
Shinya Kitaoka |
120a6e |
m_nameItem->hide();
|
|
Shinya Kitaoka |
120a6e |
m_name = m_nameItem->toPlainText();
|
|
Shinya Kitaoka |
120a6e |
m_pegbarPainter->setName(m_name);
|
|
Shinya Kitaoka |
120a6e |
setFlag(QGraphicsItem::ItemIsSelectable, true);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
TStageObjectId id = m_stageObject->getId();
|
|
Shinya Kitaoka |
120a6e |
std::string strId = id.toString();
|
|
Shinya Kitaoka |
120a6e |
std::string name = m_name.toStdString();
|
|
Shinya Kitaoka |
120a6e |
QString toolTip = name == strId
|
|
Shinya Kitaoka |
120a6e |
? m_name
|
|
Shinya Kitaoka |
120a6e |
: m_name + " (" + QString::fromStdString(strId) + ")";
|
|
Shinya Kitaoka |
120a6e |
setToolTip(toolTip);
|
|
Shinya Kitaoka |
120a6e |
if (id.isPegbar())
|
|
Shinya Kitaoka |
120a6e |
TStageObjectCmd::rename(id, m_name.toStdString(),
|
|
Shinya Kitaoka |
120a6e |
stageScene->getXsheetHandle());
|
|
Shinya Kitaoka |
120a6e |
update();
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//========================================================
|
|
Toshihiro Shimizu |
890ddd |
//
|
|
Shinya Kitaoka |
120a6e |
// class StageSchematicTableNode
|
|
Toshihiro Shimizu |
890ddd |
//
|
|
Toshihiro Shimizu |
890ddd |
//========================================================
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
StageSchematicTableNode::StageSchematicTableNode(StageSchematicScene *scene,
|
|
Shinya Kitaoka |
120a6e |
TStageObject *pegbar)
|
|
Shinya Kitaoka |
120a6e |
: StageSchematicNode(scene, pegbar, 90, 18) {
|
|
Shinya Kitaoka |
120a6e |
m_parentDock->hide();
|
|
Shinya Kitaoka |
120a6e |
updateChildDockPositions();
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
m_tablePainter = new TablePainter(this, m_width, m_height);
|
|
Shinya Kitaoka |
120a6e |
m_tablePainter->setZValue(1);
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//--------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
StageSchematicTableNode::~StageSchematicTableNode() {}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//--------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
QRectF StageSchematicTableNode::boundingRect() const {
|
|
Shinya Kitaoka |
120a6e |
return QRectF(-5, -5, m_width + 10, m_height + 10);
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//--------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
void StageSchematicTableNode::paint(QPainter *painter,
|
|
Shinya Kitaoka |
120a6e |
const QStyleOptionGraphicsItem *option,
|
|
Shinya Kitaoka |
120a6e |
QWidget *widget) {
|
|
Shinya Kitaoka |
120a6e |
StageSchematicNode::paint(painter, option, widget);
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//--------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//========================================================
|
|
Toshihiro Shimizu |
890ddd |
//
|
|
Shinya Kitaoka |
120a6e |
// class StageSchematicColumnNode
|
|
Toshihiro Shimizu |
890ddd |
//
|
|
Toshihiro Shimizu |
890ddd |
//========================================================
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
StageSchematicColumnNode::StageSchematicColumnNode(StageSchematicScene *scene,
|
|
Shinya Kitaoka |
120a6e |
TStageObject *pegbar)
|
|
Shinya Kitaoka |
120a6e |
: StageSchematicNode(scene, pegbar, 90, 32), m_isOpened(true) {
|
|
Shinya Kitaoka |
120a6e |
bool ret = true;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
assert(pegbar && pegbar->getId().isColumn());
|
|
manongjohn |
d6e3cc |
|
|
manongjohn |
d6e3cc |
SchematicViewer *viewer = scene->getSchematicViewer();
|
|
manongjohn |
d6e3cc |
|
|
manongjohn |
d6e3cc |
TXshColumn *column =
|
|
manongjohn |
d6e3cc |
scene->getXsheet()->getColumn(pegbar->getId().getIndex());
|
|
manongjohn |
d6e3cc |
|
|
Shinya Kitaoka |
120a6e |
std::string name = m_stageObject->getName();
|
|
Toshihiro Shimizu |
890ddd |
|
|
manongjohn |
d6e3cc |
if (column) {
|
|
manongjohn |
d6e3cc |
// ZeraryFx columns store name elsewhere
|
|
manongjohn |
d6e3cc |
TXshZeraryFxColumn *zColumn = dynamic_cast<txshzeraryfxcolumn *="">(column);</txshzeraryfxcolumn>
|
|
manongjohn |
d6e3cc |
if (zColumn)
|
|
manongjohn |
d6e3cc |
name =
|
|
manongjohn |
d6e3cc |
::to_string(zColumn->getZeraryColumnFx()->getZeraryFx()->getName());
|
|
manongjohn |
d6e3cc |
}
|
|
manongjohn |
d6e3cc |
|
|
Shinya Kitaoka |
120a6e |
m_name = QString::fromStdString(name);
|
|
Shinya Kitaoka |
120a6e |
m_resizeItem = new SchematicThumbnailToggle(this, m_stageObject->isOpened());
|
|
Shinya Kitaoka |
120a6e |
m_resizeItem->setPos(2, 0);
|
|
Shinya Kitaoka |
120a6e |
m_resizeItem->setZValue(2);
|
|
Shinya Kitaoka |
120a6e |
ret = ret && connect(m_resizeItem, SIGNAL(toggled(bool)), this,
|
|
Shinya Kitaoka |
120a6e |
SLOT(onChangedSize(bool)));
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
m_nameItem = new SchematicName(this, 54, 20);
|
|
Shinya Kitaoka |
120a6e |
m_nameItem->setName(m_name);
|
|
Shinya Kitaoka |
120a6e |
m_nameItem->setPos(16, -1);
|
|
Shinya Kitaoka |
120a6e |
m_nameItem->setZValue(2);
|
|
Shinya Kitaoka |
120a6e |
ret = ret &&
|
|
Shinya Kitaoka |
120a6e |
connect(m_nameItem, SIGNAL(focusOut()), this, SLOT(onNameChanged()));
|
|
Shinya Kitaoka |
120a6e |
m_nameItem->hide();
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
m_renderToggle =
|
|
manongjohn |
d6e3cc |
new SchematicToggle(this, viewer->getSchematicPreviewButtonOnImage(),
|
|
manongjohn |
d6e3cc |
viewer->getSchematicPreviewButtonBgOnColor(),
|
|
manongjohn |
d6e3cc |
viewer->getSchematicPreviewButtonOffImage(),
|
|
manongjohn |
d6e3cc |
viewer->getSchematicPreviewButtonBgOffColor(),
|
|
Shinya Kitaoka |
120a6e |
SchematicToggle::eIsParentColumn);
|
|
Shinya Kitaoka |
120a6e |
ret = ret && connect(m_renderToggle, SIGNAL(toggled(bool)), this,
|
|
Shinya Kitaoka |
120a6e |
SLOT(onRenderToggleClicked(bool)));
|
|
Shinya Kitaoka |
120a6e |
if (scene) {
|
|
Shinya Kitaoka |
120a6e |
if (column) m_renderToggle->setIsActive(column->isPreviewVisible());
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
m_renderToggle->setPos(72, 0);
|
|
Shinya Kitaoka |
120a6e |
m_renderToggle->setZValue(2);
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
m_cameraStandToggle = new SchematicToggle(
|
|
manongjohn |
d6e3cc |
this, viewer->getSchematicCamstandButtonOnImage(),
|
|
manongjohn |
d6e3cc |
viewer->getSchematicCamstandButtonTranspImage(),
|
|
manongjohn |
d6e3cc |
viewer->getSchematicCamstandButtonBgOnColor(),
|
|
manongjohn |
d6e3cc |
viewer->getSchematicCamstandButtonOffImage(),
|
|
manongjohn |
d6e3cc |
viewer->getSchematicCamstandButtonBgOffColor(),
|
|
Shinya Kitaoka |
120a6e |
SchematicToggle::eIsParentColumn | SchematicToggle::eEnableNullState);
|
|
Shinya Kitaoka |
120a6e |
ret = ret && connect(m_cameraStandToggle, SIGNAL(stateChanged(int)), this,
|
|
Shinya Kitaoka |
120a6e |
SLOT(onCameraStandToggleClicked(int)));
|
|
Shinya Kitaoka |
120a6e |
if (column)
|
|
Shinya Kitaoka |
120a6e |
m_cameraStandToggle->setState(column->isCamstandVisible()
|
|
Shinya Kitaoka |
120a6e |
? (column->getOpacity() < 255 ? 2 : 1)
|
|
Shinya Kitaoka |
120a6e |
: 0);
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
m_cameraStandToggle->setPos(72, 7);
|
|
Shinya Kitaoka |
120a6e |
m_cameraStandToggle->setZValue(2);
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
qreal y = 14;
|
|
Shinya Kitaoka |
120a6e |
m_parentDock->setY(y);
|
|
Shinya Kitaoka |
120a6e |
m_childDocks[0]->setY(y);
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
m_columnPainter = new ColumnPainter(this, m_width, m_height, m_name);
|
|
Shinya Kitaoka |
120a6e |
m_columnPainter->setZValue(1);
|
|
Shinya Kitaoka |
120a6e |
|
|
shun-iwasawa |
045b61 |
if (column && !column->isControl() && !column->isRendered() &&
|
|
shun-iwasawa |
045b61 |
!column->getMeshColumn())
|
|
shun-iwasawa |
045b61 |
m_columnPainter->setIsReference();
|
|
shun-iwasawa |
045b61 |
|
|
Shinya Kitaoka |
120a6e |
int levelType;
|
|
Shinya Kitaoka |
120a6e |
QString levelName;
|
|
Shinya Kitaoka |
120a6e |
getLevelTypeAndName(levelType, levelName);
|
|
Shinya Kitaoka |
120a6e |
setToolTip(QString("%1 : %2").arg(m_name, levelName));
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
onChangedSize(m_stageObject->isOpened());
|
|
Shinya Kitaoka |
120a6e |
assert(ret);
|
|
Shinya Kitaoka |
120a6e |
|
|
manongjohn |
d6e3cc |
if (levelType == PLT_XSHLEVEL) {
|
|
Shinya Kitaoka |
120a6e |
m_resizeItem->hide();
|
|
manongjohn |
d6e3cc |
m_cameraStandToggle->hide();
|
|
manongjohn |
d6e3cc |
}
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
//--------------------------------------------------------
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
StageSchematicColumnNode::~StageSchematicColumnNode() {}
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
//--------------------------------------------------------
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
QRectF StageSchematicColumnNode::boundingRect() const {
|
|
Shinya Kitaoka |
120a6e |
// iwasawa
|
|
Shinya Kitaoka |
120a6e |
if (m_isOpened)
|
|
Shinya Kitaoka |
120a6e |
return QRectF(-5, -54, m_width + 10, m_height + 59);
|
|
Shinya Kitaoka |
120a6e |
else
|
|
Shinya Kitaoka |
120a6e |
return QRectF(-5, -5, m_width + 10, m_height + 10);
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
//--------------------------------------------------------
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
void StageSchematicColumnNode::paint(QPainter *painter,
|
|
Shinya Kitaoka |
120a6e |
const QStyleOptionGraphicsItem *option,
|
|
Shinya Kitaoka |
120a6e |
QWidget *widget) {
|
|
Shinya Kitaoka |
120a6e |
StageSchematicNode::paint(painter, option, widget);
|
|
Shinya Kitaoka |
120a6e |
TStageObjectId id = m_stageObject->getId();
|
|
Shinya Kitaoka |
120a6e |
assert(id.isColumn());
|
|
Shinya Kitaoka |
120a6e |
QString colNumber = QString::number(id.getIndex() + 1);
|
|
Shinya Kitaoka |
120a6e |
QFont font("Verdana", 8);
|
|
Shinya Kitaoka |
120a6e |
painter->setFont(font);
|
|
Shinya Kitaoka |
120a6e |
StageSchematicScene *scene = dynamic_cast<stageschematicscene *="">(m_scene);</stageschematicscene>
|
|
manongjohn |
d6e3cc |
SchematicViewer *viewer = scene->getSchematicViewer();
|
|
manongjohn |
d6e3cc |
if (scene && scene->getCurrentObject() == id)
|
|
manongjohn |
d6e3cc |
painter->setPen(viewer->getSelectedNodeTextColor());
|
|
Shinya Kitaoka |
120a6e |
QFontMetrics metrix(font);
|
|
Shinya Kitaoka |
120a6e |
int srcWidth = metrix.width(colNumber);
|
|
Shinya Kitaoka |
120a6e |
int srcHeight = metrix.height();
|
|
Shinya Kitaoka |
120a6e |
QPointF pos(m_cameraStandToggle->pos() -
|
|
Shinya Kitaoka |
120a6e |
QPointF(srcWidth + 1, -srcHeight + 3));
|
|
Shinya Kitaoka |
120a6e |
painter->drawText(pos, colNumber);
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
//--------------------------------------------------------
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
QPixmap StageSchematicColumnNode::getPixmap() {
|
|
Shinya Kitaoka |
120a6e |
StageSchematicScene *stageScene =
|
|
Shinya Kitaoka |
120a6e |
dynamic_cast<stageschematicscene *="">(scene());</stageschematicscene>
|
|
Shinya Kitaoka |
120a6e |
if (!stageScene) return QPixmap();
|
|
Shinya Kitaoka |
120a6e |
int columnIndex = m_stageObject->getId().getIndex();
|
|
Shinya Kitaoka |
120a6e |
TXsheet *xsh = stageScene->getXsheet();
|
|
Shinya Kitaoka |
120a6e |
if (xsh && !xsh->isColumnEmpty(columnIndex)) {
|
|
Shinya Kitaoka |
120a6e |
int r0, r1;
|
|
Shinya Kitaoka |
120a6e |
xsh->getCellRange(columnIndex, r0, r1);
|
|
Shinya Kitaoka |
120a6e |
if (r1 >= r0) {
|
|
Shinya Kitaoka |
120a6e |
TXshCell cell = xsh->getCell(r0, columnIndex);
|
|
Shinya Kitaoka |
120a6e |
TXshLevel *xl = cell.m_level.getPointer();
|
|
Shinya Kitaoka |
120a6e |
if (xl) {
|
|
Shinya Kitaoka |
120a6e |
bool onDemand = false;
|
|
Shinya Kitaoka |
120a6e |
if (Preferences::instance()->getColumnIconLoadingPolicy() ==
|
|
Shinya Kitaoka |
120a6e |
Preferences::LoadOnDemand)
|
|
Shinya Kitaoka |
120a6e |
onDemand =
|
|
Shinya Kitaoka |
120a6e |
stageScene->getColumnHandle()->getColumnIndex() != columnIndex;
|
|
Shinya Kitaoka |
120a6e |
return IconGenerator::instance()->getIcon(xl, cell.m_frameId, false,
|
|
Shinya Kitaoka |
120a6e |
onDemand);
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Shinya Kitaoka |
120a6e |
return QPixmap();
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//--------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
void StageSchematicColumnNode::resize(bool maximized) {
|
|
Shinya Kitaoka |
120a6e |
m_resizeItem->setIsDown(!maximized);
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//--------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
void StageSchematicColumnNode::getLevelTypeAndName(int <ype,
|
|
Shinya Kitaoka |
120a6e |
QString &levelName) {
|
|
Shinya Kitaoka |
120a6e |
StageSchematicScene *stageScene =
|
|
Shinya Kitaoka |
120a6e |
dynamic_cast<stageschematicscene *="">(scene());</stageschematicscene>
|
|
Shinya Kitaoka |
120a6e |
if (!stageScene) {
|
|
Shinya Kitaoka |
120a6e |
ltype = NO_XSHLEVEL;
|
|
Shinya Kitaoka |
120a6e |
levelName = QString();
|
|
Shinya Kitaoka |
120a6e |
return;
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
int columnIndex = m_stageObject->getId().getIndex();
|
|
Shinya Kitaoka |
120a6e |
TXsheet *xsh = stageScene->getXsheet();
|
|
Shinya Kitaoka |
120a6e |
if (xsh && !xsh->isColumnEmpty(columnIndex)) {
|
|
Shinya Kitaoka |
120a6e |
int r0, r1;
|
|
Shinya Kitaoka |
120a6e |
xsh->getCellRange(columnIndex, r0, r1);
|
|
Shinya Kitaoka |
120a6e |
if (r1 >= r0) {
|
|
Shinya Kitaoka |
120a6e |
TXshCell cell = xsh->getCell(r0, columnIndex);
|
|
Shinya Kitaoka |
120a6e |
TXshLevel *xl = cell.m_level.getPointer();
|
|
Shinya Kitaoka |
120a6e |
if (xl) {
|
|
Shinya Kitaoka |
120a6e |
ltype = cell.m_level->getType();
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
// for Zerary Fx, display FxId
|
|
Shinya Kitaoka |
120a6e |
if (ltype == ZERARYFX_XSHLEVEL) {
|
|
Shinya Kitaoka |
120a6e |
TXshZeraryFxColumn *zColumn =
|
|
Shinya Kitaoka |
120a6e |
dynamic_cast<txshzeraryfxcolumn *="">(xsh->getColumn(columnIndex));</txshzeraryfxcolumn>
|
|
Shinya Kitaoka |
120a6e |
if (zColumn) {
|
|
Shinya Kitaoka |
120a6e |
TFx *fx = zColumn->getZeraryColumnFx()->getZeraryFx();
|
|
Shinya Kitaoka |
120a6e |
levelName = QString::fromStdWString(fx->getFxId());
|
|
Shinya Kitaoka |
120a6e |
return;
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
levelName = QString::fromStdWString(xl->getName());
|
|
Shinya Kitaoka |
120a6e |
return;
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
ltype = NO_XSHLEVEL;
|
|
Shinya Kitaoka |
120a6e |
levelName = QString();
|
|
Shinya Kitaoka |
120a6e |
return;
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Shinya Kitaoka |
120a6e |
//--------------------------------------------------------
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
void StageSchematicColumnNode::onChangedSize(bool expand) {
|
|
Shinya Kitaoka |
120a6e |
prepareGeometryChange();
|
|
Shinya Kitaoka |
120a6e |
m_isOpened = expand;
|
|
Shinya Kitaoka |
120a6e |
m_stageObject->setIsOpened(m_isOpened);
|
|
Shinya Kitaoka |
120a6e |
m_height = 32;
|
|
Shinya Kitaoka |
120a6e |
updatePortsPosition();
|
|
Shinya Kitaoka |
120a6e |
updateLinksGeometry();
|
|
Shinya Kitaoka |
120a6e |
update();
|
|
manongjohn |
adae7d |
emit nodeChangedSize();
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
//--------------------------------------------------------
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
void StageSchematicColumnNode::updatePortsPosition() {
|
|
Shinya Kitaoka |
120a6e |
qreal x = m_width * 0.5 - 5;
|
|
Shinya Kitaoka |
120a6e |
m_splineDock->setPos(x, m_height);
|
|
Shinya Kitaoka |
120a6e |
updateChildDockPositions();
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
//--------------------------------------------------------
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
void StageSchematicColumnNode::mouseDoubleClickEvent(
|
|
Shinya Kitaoka |
120a6e |
QGraphicsSceneMouseEvent *me) {
|
|
Shinya Kitaoka |
120a6e |
StageSchematicScene *stageScene =
|
|
Shinya Kitaoka |
120a6e |
dynamic_cast<stageschematicscene *="">(scene());</stageschematicscene>
|
|
Shinya Kitaoka |
120a6e |
if (!stageScene) return;
|
|
Shinya Kitaoka |
120a6e |
QRectF nameArea(14, 0, m_width - 15, 14);
|
|
Shinya Kitaoka |
120a6e |
if (nameArea.contains(me->pos())) {
|
|
manongjohn |
d6e3cc |
std::string name = m_stageObject->getName();
|
|
manongjohn |
d6e3cc |
|
|
manongjohn |
d6e3cc |
TStageObjectId id = m_stageObject->getId();
|
|
manongjohn |
d6e3cc |
TXshColumn *column = stageScene->getXsheet()->getColumn(id.getIndex());
|
|
manongjohn |
d6e3cc |
if (column) {
|
|
manongjohn |
d6e3cc |
TXshZeraryFxColumn *fxColumn = dynamic_cast<txshzeraryfxcolumn *="">(column);</txshzeraryfxcolumn>
|
|
manongjohn |
d6e3cc |
if (fxColumn)
|
|
manongjohn |
d6e3cc |
name = ::to_string(
|
|
manongjohn |
d6e3cc |
fxColumn->getZeraryColumnFx()->getZeraryFx()->getName());
|
|
manongjohn |
d6e3cc |
}
|
|
manongjohn |
d6e3cc |
|
|
manongjohn |
d6e3cc |
m_name = QString::fromStdString(name);
|
|
Shinya Kitaoka |
120a6e |
m_nameItem->setPlainText(m_name);
|
|
Shinya Kitaoka |
120a6e |
m_nameItem->show();
|
|
Shinya Kitaoka |
120a6e |
m_nameItem->setFocus();
|
|
Shinya Kitaoka |
120a6e |
setFlag(QGraphicsItem::ItemIsSelectable, false);
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//--------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
void StageSchematicColumnNode::onNameChanged() {
|
|
Shinya Kitaoka |
120a6e |
StageSchematicScene *stageScene =
|
|
Shinya Kitaoka |
120a6e |
dynamic_cast<stageschematicscene *="">(scene());</stageschematicscene>
|
|
Shinya Kitaoka |
120a6e |
if (!stageScene) return;
|
|
Shinya Kitaoka |
120a6e |
m_nameItem->hide();
|
|
Shinya Kitaoka |
120a6e |
m_name = m_nameItem->toPlainText();
|
|
Shinya Kitaoka |
120a6e |
m_columnPainter->setName(m_name);
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
int levelType;
|
|
Shinya Kitaoka |
120a6e |
QString levelName;
|
|
Shinya Kitaoka |
120a6e |
getLevelTypeAndName(levelType, levelName);
|
|
Shinya Kitaoka |
120a6e |
setToolTip(QString("%1 : %2").arg(m_name, levelName));
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
setFlag(QGraphicsItem::ItemIsSelectable, true);
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
TStageObjectId id = m_stageObject->getId();
|
|
Shinya Kitaoka |
120a6e |
if (!id.isColumn()) return;
|
|
Shinya Kitaoka |
120a6e |
TXshColumn *column = stageScene->getXsheet()->getColumn(id.getIndex());
|
|
Shinya Kitaoka |
120a6e |
TXshZeraryFxColumn *fxColumn = dynamic_cast<txshzeraryfxcolumn *="">(column);</txshzeraryfxcolumn>
|
|
Shinya Kitaoka |
120a6e |
if (fxColumn)
|
|
Shinya Kitaoka |
120a6e |
TFxCommand::renameFx(fxColumn->getZeraryColumnFx(), m_name.toStdWString(),
|
|
Shinya Kitaoka |
120a6e |
stageScene->getXsheetHandle());
|
|
Shinya Kitaoka |
120a6e |
else {
|
|
Shinya Kitaoka |
120a6e |
TStageObjectCmd::rename(id, m_name.toStdString(),
|
|
Shinya Kitaoka |
120a6e |
stageScene->getXsheetHandle());
|
|
Shinya Kitaoka |
120a6e |
update();
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//--------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
void StageSchematicColumnNode::onRenderToggleClicked(bool isActive) {
|
|
Shinya Kitaoka |
120a6e |
StageSchematicScene *stageScene =
|
|
Shinya Kitaoka |
120a6e |
dynamic_cast<stageschematicscene *="">(scene());</stageschematicscene>
|
|
Shinya Kitaoka |
120a6e |
if (!stageScene) return;
|
|
Shinya Kitaoka |
120a6e |
TXshColumn *column =
|
|
Shinya Kitaoka |
120a6e |
stageScene->getXsheet()->getColumn(m_stageObject->getId().getIndex());
|
|
Shinya Kitaoka |
120a6e |
if (column) {
|
|
Shinya Kitaoka |
120a6e |
column->setPreviewVisible(isActive);
|
|
Shinya Kitaoka |
120a6e |
emit sceneChanged();
|
|
Shinya Kitaoka |
120a6e |
emit xsheetChanged();
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//--------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
void StageSchematicColumnNode::onCameraStandToggleClicked(int state) {
|
|
Shinya Kitaoka |
120a6e |
StageSchematicScene *stageScene =
|
|
Shinya Kitaoka |
120a6e |
dynamic_cast<stageschematicscene *="">(scene());</stageschematicscene>
|
|
Shinya Kitaoka |
120a6e |
if (!stageScene) return;
|
|
Shinya Kitaoka |
120a6e |
TXshColumn *column =
|
|
Shinya Kitaoka |
120a6e |
stageScene->getXsheet()->getColumn(m_stageObject->getId().getIndex());
|
|
Shinya Kitaoka |
120a6e |
if (column) {
|
|
Shinya Kitaoka |
120a6e |
// column->setCamstandNextState();
|
|
Shinya Kitaoka |
120a6e |
column->setCamstandVisible(!column->isCamstandVisible());
|
|
Shinya Kitaoka |
120a6e |
emit sceneChanged();
|
|
Shinya Kitaoka |
120a6e |
emit xsheetChanged();
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//========================================================
|
|
Toshihiro Shimizu |
890ddd |
//
|
|
Shinya Kitaoka |
120a6e |
// class StageSchematicCameraNode
|
|
Toshihiro Shimizu |
890ddd |
//
|
|
Toshihiro Shimizu |
890ddd |
//========================================================
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
StageSchematicCameraNode::StageSchematicCameraNode(StageSchematicScene *scene,
|
|
Shinya Kitaoka |
120a6e |
TStageObject *pegbar)
|
|
Shinya Kitaoka |
120a6e |
: StageSchematicNode(scene, pegbar, 90, 18) {
|
|
Shinya Kitaoka |
120a6e |
std::string name = m_stageObject->getFullName();
|
|
Shinya Kitaoka |
120a6e |
m_name = QString::fromStdString(name);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
m_nameItem = new SchematicName(this, 54, 20);
|
|
Shinya Kitaoka |
120a6e |
m_nameItem->setName(m_name);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
m_nameItem->setPos(16, -2);
|
|
Shinya Kitaoka |
120a6e |
connect(m_nameItem, SIGNAL(focusOut()), this, SLOT(onNameChanged()));
|
|
Shinya Kitaoka |
120a6e |
m_nameItem->hide();
|
|
Shinya Kitaoka |
120a6e |
m_nameItem->setZValue(2);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
m_cameraPainter = new CameraPainter(this, m_width, m_height, m_name);
|
|
Shinya Kitaoka |
120a6e |
m_cameraPainter->setZValue(1);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
setToolTip(m_name);
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//--------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
StageSchematicCameraNode::~StageSchematicCameraNode() {}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//--------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
QRectF StageSchematicCameraNode::boundingRect() const {
|
|
Shinya Kitaoka |
120a6e |
return QRectF(-5, -5, m_width + 10, m_height + 10);
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//--------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
void StageSchematicCameraNode::paint(QPainter *painter,
|
|
Shinya Kitaoka |
120a6e |
const QStyleOptionGraphicsItem *option,
|
|
Shinya Kitaoka |
120a6e |
QWidget *widget) {
|
|
Shinya Kitaoka |
120a6e |
StageSchematicNode::paint(painter, option, widget);
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//--------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
void StageSchematicCameraNode::mouseDoubleClickEvent(
|
|
Shinya Kitaoka |
120a6e |
QGraphicsSceneMouseEvent *me) {
|
|
Shinya Kitaoka |
120a6e |
QRectF nameArea(0, -14, m_width, 14);
|
|
Shinya Kitaoka |
120a6e |
if (nameArea.contains(me->pos())) {
|
|
Shinya Kitaoka |
120a6e |
m_nameItem->setPlainText(m_name);
|
|
Shinya Kitaoka |
120a6e |
m_nameItem->show();
|
|
Shinya Kitaoka |
120a6e |
m_nameItem->setFocus();
|
|
Shinya Kitaoka |
120a6e |
setFlag(QGraphicsItem::ItemIsSelectable, false);
|
|
Shinya Kitaoka |
120a6e |
} else {
|
|
Shinya Kitaoka |
120a6e |
QAction *cameraSettingsPopup =
|
|
Shinya Kitaoka |
120a6e |
CommandManager::instance()->getAction("MI_CameraStage");
|
|
Shinya Kitaoka |
120a6e |
cameraSettingsPopup->trigger();
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//--------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
void StageSchematicCameraNode::onNameChanged() {
|
|
Shinya Kitaoka |
120a6e |
StageSchematicScene *stageScene =
|
|
Shinya Kitaoka |
120a6e |
dynamic_cast<stageschematicscene *="">(scene());</stageschematicscene>
|
|
Shinya Kitaoka |
120a6e |
m_nameItem->hide();
|
|
Shinya Kitaoka |
120a6e |
m_name = m_nameItem->toPlainText();
|
|
Shinya Kitaoka |
120a6e |
m_cameraPainter->setName(m_name);
|
|
Shinya Kitaoka |
120a6e |
setToolTip(m_name);
|
|
Shinya Kitaoka |
120a6e |
setFlag(QGraphicsItem::ItemIsSelectable, true);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
TStageObjectId id = m_stageObject->getId();
|
|
Shinya Kitaoka |
120a6e |
if (id.isCamera())
|
|
Shinya Kitaoka |
120a6e |
TStageObjectCmd::rename(id, m_name.toStdString(),
|
|
Shinya Kitaoka |
120a6e |
stageScene->getXsheetHandle());
|
|
Shinya Kitaoka |
120a6e |
update();
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//========================================================
|
|
Toshihiro Shimizu |
890ddd |
//
|
|
Shinya Kitaoka |
120a6e |
// class StageSchematicSplineNode
|
|
Toshihiro Shimizu |
890ddd |
//
|
|
Toshihiro Shimizu |
890ddd |
//========================================================
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
StageSchematicSplineNode::StageSchematicSplineNode(StageSchematicScene *scene,
|
|
Shinya Kitaoka |
120a6e |
TStageObjectSpline *spline)
|
|
Shinya Kitaoka |
120a6e |
: SchematicNode(scene), m_spline(spline), m_isOpened(false) {
|
|
Shinya Kitaoka |
120a6e |
m_width = 90;
|
|
Shinya Kitaoka |
120a6e |
m_height = 18;
|
|
Shinya Kitaoka |
120a6e |
assert(spline);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
m_dock = new StageSchematicSplineDock(this, true, eStageSplinePort);
|
|
Shinya Kitaoka |
120a6e |
addPort(-1, m_dock->getPort());
|
|
Shinya Kitaoka |
120a6e |
QRectF rect = m_dock->getPort()->boundingRect();
|
|
Shinya Kitaoka |
120a6e |
m_dock->setPos(m_width * 0.5 - rect.width() * 0.5, -rect.height());
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
m_resizeItem = new SchematicThumbnailToggle(this, m_spline->isOpened());
|
|
Shinya Kitaoka |
120a6e |
m_resizeItem->setPos(2, 2);
|
|
Shinya Kitaoka |
120a6e |
m_resizeItem->setZValue(2);
|
|
Shinya Kitaoka |
120a6e |
connect(m_resizeItem, SIGNAL(toggled(bool)), this, SLOT(onChangedSize(bool)));
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
std::string name = m_spline->getName();
|
|
Shinya Kitaoka |
120a6e |
m_splineName = QString::fromStdString(name);
|
|
Shinya Kitaoka |
120a6e |
m_nameItem = new SchematicName(this, 72, 20);
|
|
Shinya Kitaoka |
120a6e |
m_nameItem->setName(m_splineName);
|
|
Shinya Kitaoka |
120a6e |
m_nameItem->setPos(16, -1);
|
|
Shinya Kitaoka |
120a6e |
m_nameItem->setZValue(2);
|
|
Shinya Kitaoka |
120a6e |
connect(m_nameItem, SIGNAL(focusOut()), this, SLOT(onNameChanged()));
|
|
Shinya Kitaoka |
120a6e |
m_nameItem->hide();
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
m_splinePainter = new SplinePainter(this, m_width, m_height, m_splineName);
|
|
Shinya Kitaoka |
120a6e |
m_splinePainter->setZValue(1);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
setToolTip(m_splineName);
|
|
Shinya Kitaoka |
120a6e |
onChangedSize(m_spline->isOpened());
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//--------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
StageSchematicSplineNode::~StageSchematicSplineNode() {}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//--------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
QRectF StageSchematicSplineNode::boundingRect() const {
|
|
Shinya Kitaoka |
120a6e |
if (m_isOpened)
|
|
Shinya Kitaoka |
120a6e |
return QRectF(-5, -5, m_width + 10, m_height + 59);
|
|
Shinya Kitaoka |
120a6e |
else
|
|
Shinya Kitaoka |
120a6e |
return QRectF(-5, -5, m_width + 10, m_height + 10);
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//--------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
void StageSchematicSplineNode::paint(QPainter *painter,
|
|
Shinya Kitaoka |
120a6e |
const QStyleOptionGraphicsItem *option,
|
|
Shinya Kitaoka |
120a6e |
QWidget *widget) {
|
|
Shinya Kitaoka |
120a6e |
SchematicNode::paint(painter, option, widget);
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//--------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
void StageSchematicSplineNode::onClicked() {
|
|
Shinya Kitaoka |
120a6e |
if (m_dock->getPort()->getLinkCount() > 0) {
|
|
Shinya Kitaoka |
120a6e |
StageSchematicNode *parentNode =
|
|
Shinya Kitaoka |
120a6e |
dynamic_cast<stageschematicnode *="">(m_dock->getPort()->getLinkedNode(0));</stageschematicnode>
|
|
Shinya Kitaoka |
120a6e |
TStageObjectId parentId = parentNode->getStageObject()->getId();
|
|
Shinya Kitaoka |
120a6e |
emit currentObjectChanged(parentId, true);
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//--------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
void StageSchematicSplineNode::setSchematicNodePos(const QPointF &pos) const {
|
|
Shinya Kitaoka |
120a6e |
m_spline->setDagNodePos(TPointD(pos.x(), pos.y()));
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//--------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
QPixmap StageSchematicSplineNode::getPixmap() {
|
|
Shinya Kitaoka |
120a6e |
return IconGenerator::instance()->getIcon(m_spline);
|
|
Shinya Kitaoka |
120a6e |
return QPixmap();
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//--------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
void StageSchematicSplineNode::resize(bool maximized) {
|
|
Shinya Kitaoka |
120a6e |
m_resizeItem->setIsDown(!maximized);
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//--------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
void StageSchematicSplineNode::mouseDoubleClickEvent(
|
|
Shinya Kitaoka |
120a6e |
QGraphicsSceneMouseEvent *me) {
|
|
Shinya Kitaoka |
120a6e |
QRectF nameArea(14, 0, m_width - 15, 14);
|
|
Shinya Kitaoka |
120a6e |
if (nameArea.contains(me->pos())) {
|
|
Shinya Kitaoka |
120a6e |
m_nameItem->setPlainText(m_splineName);
|
|
Shinya Kitaoka |
120a6e |
m_nameItem->show();
|
|
Shinya Kitaoka |
120a6e |
m_nameItem->setFocus();
|
|
Shinya Kitaoka |
120a6e |
setFlag(QGraphicsItem::ItemIsSelectable, false);
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//--------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
void StageSchematicSplineNode::onNameChanged() {
|
|
Shinya Kitaoka |
120a6e |
m_nameItem->hide();
|
|
Shinya Kitaoka |
120a6e |
m_splineName = m_nameItem->toPlainText();
|
|
Shinya Kitaoka |
120a6e |
m_splinePainter->setName(m_splineName);
|
|
Shinya Kitaoka |
120a6e |
setToolTip(m_splineName);
|
|
Shinya Kitaoka |
120a6e |
setFlag(QGraphicsItem::ItemIsSelectable, true);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
m_spline->setName(m_splineName.toStdString());
|
|
Shinya Kitaoka |
120a6e |
update();
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//--------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
void StageSchematicSplineNode::onChangedSize(bool expanded) {
|
|
Shinya Kitaoka |
120a6e |
prepareGeometryChange();
|
|
Shinya Kitaoka |
120a6e |
m_isOpened = expanded;
|
|
Shinya Kitaoka |
120a6e |
m_spline->setIsOpened(m_isOpened);
|
|
Shinya Kitaoka |
120a6e |
m_height = 18;
|
|
Shinya Kitaoka |
120a6e |
updateLinksGeometry();
|
|
Shinya Kitaoka |
120a6e |
update();
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//========================================================
|
|
Toshihiro Shimizu |
890ddd |
//
|
|
Shinya Kitaoka |
120a6e |
// class StageSchematicSplineNode
|
|
Toshihiro Shimizu |
890ddd |
//
|
|
Toshihiro Shimizu |
890ddd |
//========================================================
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
StageSchematicGroupNode::StageSchematicGroupNode(
|
|
Shinya Kitaoka |
120a6e |
StageSchematicScene *scene, TStageObject *root,
|
|
Shinya Kitaoka |
120a6e |
const QList<tstageobject *=""> groupedObj)</tstageobject>
|
|
Shinya Kitaoka |
120a6e |
: StageSchematicNode(scene, root, 90, 18, true)
|
|
Shinya Kitaoka |
120a6e |
, m_root(root)
|
|
Shinya Kitaoka |
120a6e |
, m_groupedObj(groupedObj) {
|
|
Shinya Kitaoka |
120a6e |
int i;
|
|
Shinya Kitaoka |
120a6e |
for (i = 0; i < m_groupedObj.size(); i++) m_groupedObj[i]->addRef();
|
|
Shinya Kitaoka |
120a6e |
bool ret = true;
|
|
Shinya Kitaoka |
120a6e |
std::wstring name = m_stageObject->getGroupName(false);
|
|
Shinya Kitaoka |
120a6e |
m_name = QString::fromStdWString(name);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
m_nameItem = new SchematicName(this, 72, 20);
|
|
Shinya Kitaoka |
120a6e |
m_nameItem->setName(m_name);
|
|
Shinya Kitaoka |
120a6e |
m_nameItem->setPos(16, -1);
|
|
Shinya Kitaoka |
120a6e |
m_nameItem->setZValue(2);
|
|
Shinya Kitaoka |
120a6e |
ret = ret &&
|
|
Shinya Kitaoka |
120a6e |
connect(m_nameItem, SIGNAL(focusOut()), this, SLOT(onNameChanged()));
|
|
Shinya Kitaoka |
120a6e |
m_nameItem->hide();
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
// m_childDocks[0]->setPos(m_width - 18, 0);
|
|
Shinya Kitaoka |
120a6e |
// m_parentDock->setPos(0, 0);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
m_painter = new GroupPainter(this, m_width, m_height, m_name);
|
|
Shinya Kitaoka |
120a6e |
m_painter->setZValue(1);
|
|
Toshihiro Shimizu |
890ddd |
|
|
manongjohn |
d6e3cc |
QString id = "Group " + QString::number(getGroupId());
|
|
manongjohn |
d6e3cc |
if (m_name != id)
|
|
manongjohn |
d6e3cc |
setToolTip(QString("%1 (%2)").arg(m_name, id));
|
|
manongjohn |
d6e3cc |
else
|
|
manongjohn |
d6e3cc |
setToolTip(m_name);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
assert(ret);
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//--------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
StageSchematicGroupNode::~StageSchematicGroupNode() {
|
|
Shinya Kitaoka |
120a6e |
int i;
|
|
Shinya Kitaoka |
120a6e |
for (i = 0; i < m_groupedObj.size(); i++) m_groupedObj[i]->release();
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//--------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
QRectF StageSchematicGroupNode::boundingRect() const {
|
|
Shinya Kitaoka |
120a6e |
return QRectF(-5, -5, m_width + 10, m_height + 10);
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//--------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
void StageSchematicGroupNode::paint(QPainter *painter,
|
|
Shinya Kitaoka |
120a6e |
const QStyleOptionGraphicsItem *option,
|
|
Shinya Kitaoka |
120a6e |
QWidget *widget) {}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//--------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
void StageSchematicGroupNode::mouseDoubleClickEvent(
|
|
Shinya Kitaoka |
120a6e |
QGraphicsSceneMouseEvent *me) {
|
|
Shinya Kitaoka |
120a6e |
QRectF nameArea(14, 0, m_width - 15, 14);
|
|
Shinya Kitaoka |
120a6e |
if (nameArea.contains(me->pos())) {
|
|
Shinya Kitaoka |
120a6e |
m_name = QString::fromStdWString(m_root->getGroupName(false));
|
|
Shinya Kitaoka |
120a6e |
m_nameItem->setPlainText(m_name);
|
|
Shinya Kitaoka |
120a6e |
m_nameItem->show();
|
|
Shinya Kitaoka |
120a6e |
m_nameItem->setFocus();
|
|
Shinya Kitaoka |
120a6e |
setFlag(QGraphicsItem::ItemIsSelectable, false);
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//--------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
void StageSchematicGroupNode::onNameChanged() {
|
|
Shinya Kitaoka |
120a6e |
StageSchematicScene *stageScene =
|
|
Shinya Kitaoka |
120a6e |
dynamic_cast<stageschematicscene *="">(scene());</stageschematicscene>
|
|
Shinya Kitaoka |
120a6e |
if (!stageScene) return;
|
|
Shinya Kitaoka |
120a6e |
m_nameItem->hide();
|
|
Shinya Kitaoka |
120a6e |
m_name = m_nameItem->toPlainText();
|
|
Shinya Kitaoka |
120a6e |
m_painter->setName(m_name);
|
|
manongjohn |
d6e3cc |
QString id = "Group " + QString::number(getGroupId());
|
|
manongjohn |
d6e3cc |
if (m_name != id)
|
|
manongjohn |
d6e3cc |
setToolTip(QString("%1 (%2)").arg(m_name, id));
|
|
manongjohn |
d6e3cc |
else
|
|
manongjohn |
d6e3cc |
setToolTip(m_name);
|
|
Shinya Kitaoka |
120a6e |
setFlag(QGraphicsItem::ItemIsSelectable, true);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
TStageObjectCmd::renameGroup(m_groupedObj, m_name.toStdWString(), false,
|
|
Shinya Kitaoka |
120a6e |
stageScene->getXsheetHandle());
|
|
Shinya Kitaoka |
120a6e |
update();
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//--------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
int StageSchematicGroupNode::getGroupId() { return m_root->getGroupId(); }
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//--------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
void StageSchematicGroupNode::onChangedSize(bool expanded) {
|
|
Shinya Kitaoka |
120a6e |
prepareGeometryChange();
|
|
Shinya Kitaoka |
120a6e |
m_isOpened = expanded;
|
|
Shinya Kitaoka |
120a6e |
int i;
|
|
Shinya Kitaoka |
120a6e |
for (i = 0; i < m_groupedObj.size(); i++)
|
|
Shinya Kitaoka |
120a6e |
m_groupedObj[i]->setIsOpened(m_isOpened);
|
|
Shinya Kitaoka |
120a6e |
if (m_isOpened) {
|
|
Shinya Kitaoka |
120a6e |
m_height = 59;
|
|
Shinya Kitaoka |
120a6e |
m_nameItem->setPos(4, -6);
|
|
Shinya Kitaoka |
120a6e |
} else {
|
|
Shinya Kitaoka |
120a6e |
m_height = 14;
|
|
Shinya Kitaoka |
120a6e |
m_nameItem->setPos(8, -2);
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Shinya Kitaoka |
120a6e |
updatePortsPosition();
|
|
Shinya Kitaoka |
120a6e |
updateLinksGeometry();
|
|
Shinya Kitaoka |
120a6e |
update();
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//--------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
void StageSchematicGroupNode::updateObjsDagPosition(const TPointD &pos) const {
|
|
Shinya Kitaoka |
120a6e |
TPointD oldPos = m_root->getDagNodePos();
|
|
Shinya Kitaoka |
120a6e |
TPointD delta = pos - oldPos;
|
|
Shinya Kitaoka |
120a6e |
int i;
|
|
Shinya Kitaoka |
120a6e |
for (i = 0; i < m_groupedObj.size(); i++) {
|
|
Shinya Kitaoka |
120a6e |
// If the node position is unidentified, then leave the placement of it to
|
|
Shinya Kitaoka |
120a6e |
// placeNode() function.
|
|
Shinya Kitaoka |
120a6e |
if (m_groupedObj[i]->getDagNodePos() != TConst::nowhere)
|
|
Shinya Kitaoka |
120a6e |
m_groupedObj[i]->setDagNodePos(m_groupedObj[i]->getDagNodePos() + delta);
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//--------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
void StageSchematicGroupNode::updatePortsPosition() {
|
|
Shinya Kitaoka |
120a6e |
qreal middleY = m_isOpened ? (14 + m_height) * 0.5 : m_height * 0.5;
|
|
Shinya Kitaoka |
120a6e |
qreal y = middleY - (m_parentDock->getPort()->boundingRect().height() * 0.5);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
m_parentDock->setPos(-m_parentDock->boundingRect().width(), y);
|
|
Shinya Kitaoka |
120a6e |
updateChildDockPositions();
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//--------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
void StageSchematicGroupNode::resize(bool maximized) {}
|