diff --git a/src/Mod/TechDraw/Gui/CommandAnnotate.cpp b/src/Mod/TechDraw/Gui/CommandAnnotate.cpp index 702f4fd9dc..d36a178fc4 100644 --- a/src/Mod/TechDraw/Gui/CommandAnnotate.cpp +++ b/src/Mod/TechDraw/Gui/CommandAnnotate.cpp @@ -581,13 +581,13 @@ void CmdTechDrawCenterLineGroup::activated(int iMsg) Gui::ActionGroup* pcAction = qobject_cast(_pcAction); pcAction->setIcon(pcAction->actions().at(iMsg)->icon()); switch(iMsg) { - case 0: + case 0: //faces execCenterLine(this); break; - case 1: + case 1: //2 lines exec2LineCenterLine(this); break; - case 2: + case 2: //2 points exec2PointCenterLine(this); break; default: @@ -743,29 +743,23 @@ void execCenterLine(Gui::Command* cmd) if (!faceNames.empty()) { Gui::Control().showDialog(new TaskDlgCenterLine(baseFeat, page, - faceNames)); + faceNames, + false)); } else if (edgeNames.empty()) { QMessageBox::warning(Gui::getMainWindow(), QObject::tr("Wrong Selection"), QObject::tr("No CenterLine in selection.")); return; } else { - std::string edgeName = edgeNames.front(); - int geomIdx = DrawUtil::getIndexFromName(edgeName); - const std::vector &geoms = baseFeat->getEdgeGeometry(); - BaseGeom* bg = geoms.at(geomIdx); -// int clIdx = bg->sourceIndex(); -// TechDraw::CenterLine* cl = baseFeat->getCenterLineByIndex(clIdx); - std::string tag = bg->getCosmeticTag(); - TechDraw::CenterLine* cl = baseFeat->getCenterLine(tag); + TechDraw::CenterLine* cl = baseFeat->getCenterLineBySelection(edgeNames.front()); if (cl == nullptr) { QMessageBox::warning(Gui::getMainWindow(), QObject::tr("Wrong Selection"), - QObject::tr("No CenterLine in selection.")); + QObject::tr("Selection is not a CenterLine.")); return; } - Gui::Control().showDialog(new TaskDlgCenterLine(baseFeat, page, - edgeNames.front())); + edgeNames.front(), + true)); } } @@ -825,25 +819,19 @@ void exec2LineCenterLine(Gui::Command* cmd) if (selectedEdges.size() == 2) { Gui::Control().showDialog(new TaskDlgCenterLine(dvp, page, - selectedEdges)); + selectedEdges, + false)); } else if (selectedEdges.size() == 1) { - std::string edgeName = selectedEdges.front(); - int geomIdx = DrawUtil::getIndexFromName(edgeName); - const std::vector &geoms = dvp->getEdgeGeometry(); - BaseGeom* bg = geoms.at(geomIdx); -// int clIdx = bg->sourceIndex(); -// TechDraw::CenterLine* cl = dvp->getCenterLineByIndex(clIdx); - std::string tag = bg->getCosmeticTag(); - TechDraw::CenterLine* cl = dvp->getCenterLine(tag); + TechDraw::CenterLine* cl = dvp->getCenterLineBySelection(selectedEdges.front()); if (cl == nullptr) { QMessageBox::warning(Gui::getMainWindow(), QObject::tr("Wrong Selection"), - QObject::tr("No CenterLine in selection.")); + QObject::tr("Selection is not a CenterLine.")); return; } else { -// Base::Console().Message("CMD::2LineCenter - show edit dialog here\n"); Gui::Control().showDialog(new TaskDlgCenterLine(dvp, page, - selectedEdges.front())); + selectedEdges.front(), + true)); } } else { //not create, not edit, what is this??? QMessageBox::warning(Gui::getMainWindow(), QObject::tr("Wrong Selection"), @@ -942,14 +930,23 @@ void exec2PointCenterLine(Gui::Command* cmd) if (!vertexNames.empty() && (vertexNames.size() == 2)) { Gui::Control().showDialog(new TaskDlgCenterLine(baseFeat, page, - vertexNames)); + vertexNames, + false)); } else if (!edgeNames.empty() && (edgeNames.size() == 1)) { + TechDraw::CenterLine* cl = baseFeat->getCenterLineBySelection(edgeNames.front()); + if (cl == nullptr) { + QMessageBox::warning(Gui::getMainWindow(), QObject::tr("Wrong Selection"), + QObject::tr("Selection is not a CenterLine.")); + return; + } + Gui::Control().showDialog(new TaskDlgCenterLine(baseFeat, page, - edgeNames.front())); + edgeNames.front(), + false)); } else if (vertexNames.empty()) { QMessageBox::warning(Gui::getMainWindow(), QObject::tr("Wrong Selection"), - QObject::tr("No CenterLine in selection.")); + QObject::tr("Need 2 Vertices or 1 CenterLine.")); return; } } diff --git a/src/Mod/TechDraw/Gui/TaskCenterLine.cpp b/src/Mod/TechDraw/Gui/TaskCenterLine.cpp index 79d110eca2..f6701cfa86 100644 --- a/src/Mod/TechDraw/Gui/TaskCenterLine.cpp +++ b/src/Mod/TechDraw/Gui/TaskCenterLine.cpp @@ -74,15 +74,16 @@ using namespace TechDrawGui; //ctor for edit TaskCenterLine::TaskCenterLine(TechDraw::DrawViewPart* partFeat, TechDraw::DrawPage* page, - std::string edgeName) : + std::string edgeName, + bool editMode) : ui(new Ui_TaskCenterLine), m_partFeat(partFeat), m_basePage(page), m_createMode(false), m_edgeName(edgeName), m_type(0), //0 - Face, 1 - 2 Lines, 2 - 2 points - m_mode(0) //0 - vertical, 1 - horizontal, 2 - aligned - + m_mode(0), //0 - vertical, 1 - horizontal, 2 - aligned + m_editMode(editMode) { // Base::Console().Message("TCL::TCL() - edit mode\n"); ui->setupUi(this); @@ -104,14 +105,16 @@ TaskCenterLine::TaskCenterLine(TechDraw::DrawViewPart* partFeat, //ctor for creation TaskCenterLine::TaskCenterLine(TechDraw::DrawViewPart* partFeat, TechDraw::DrawPage* page, - std::vector subNames) : + std::vector subNames, + bool editMode) : ui(new Ui_TaskCenterLine), m_partFeat(partFeat), m_basePage(page), m_createMode(true), m_subNames(subNames), m_type(0), //0 - Face, 1 - 2 Lines, 2 - 2 points - m_mode(0) //0 - vertical, 1 - horizontal, 2 - aligned + m_mode(0), //0 - vertical, 1 - horizontal, 2 - aligned + m_editMode(editMode) { // Base::Console().Message("TCL::TCL() - create mode\n"); if ( (m_basePage == nullptr) || @@ -501,10 +504,11 @@ bool TaskCenterLine::reject() ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// TaskDlgCenterLine::TaskDlgCenterLine(TechDraw::DrawViewPart* partFeat, TechDraw::DrawPage* page, - std::vector subNames) + std::vector subNames, + bool editMode) : TaskDialog() { - widget = new TaskCenterLine(partFeat,page,subNames); + widget = new TaskCenterLine(partFeat,page,subNames, editMode); taskbox = new Gui::TaskView::TaskBox(Gui::BitmapFactory().pixmap("actions/techdraw-facecenterline"), widget->windowTitle(), true, 0); taskbox->groupLayout()->addWidget(widget); @@ -513,10 +517,11 @@ TaskDlgCenterLine::TaskDlgCenterLine(TechDraw::DrawViewPart* partFeat, TaskDlgCenterLine::TaskDlgCenterLine(TechDraw::DrawViewPart* partFeat, TechDraw::DrawPage* page, - std::string edgeName) + std::string edgeName, + bool editMode) : TaskDialog() { - widget = new TaskCenterLine(partFeat,page, edgeName); + widget = new TaskCenterLine(partFeat,page, edgeName, editMode); taskbox = new Gui::TaskView::TaskBox(Gui::BitmapFactory().pixmap("actions/techdraw-facecenterline"), widget->windowTitle(), true, 0); taskbox->groupLayout()->addWidget(widget); diff --git a/src/Mod/TechDraw/Gui/TaskCenterLine.h b/src/Mod/TechDraw/Gui/TaskCenterLine.h index e63973e944..43f6fdb0dc 100644 --- a/src/Mod/TechDraw/Gui/TaskCenterLine.h +++ b/src/Mod/TechDraw/Gui/TaskCenterLine.h @@ -75,10 +75,12 @@ class TaskCenterLine : public QWidget public: TaskCenterLine(TechDraw::DrawViewPart* baseFeat, TechDraw::DrawPage* page, - std::vector subNames); + std::vector subNames, + bool editMode); TaskCenterLine(TechDraw::DrawViewPart* baseFeat, TechDraw::DrawPage* page, - std::string edgeName); + std::string edgeName, + bool editMode); ~TaskCenterLine(); public Q_SLOTS: @@ -145,6 +147,7 @@ private: int m_clIdx; int m_type; int m_mode; + bool m_editMode; }; class TaskDlgCenterLine : public Gui::TaskView::TaskDialog @@ -154,10 +157,12 @@ class TaskDlgCenterLine : public Gui::TaskView::TaskDialog public: TaskDlgCenterLine(TechDraw::DrawViewPart* baseFeat, TechDraw::DrawPage* page, - std::vector subNames); + std::vector subNames, + bool editMode); TaskDlgCenterLine(TechDraw::DrawViewPart* baseFeat, TechDraw::DrawPage* page, - std::string edgeName); + std::string edgeName, + bool editMode); ~TaskDlgCenterLine(); public: