[TD]apply tester feedback on DimRepair
This commit is contained in:
@@ -22,12 +22,12 @@
|
||||
|
||||
#include "PreCompiled.h"
|
||||
#ifndef _PreComp_
|
||||
# include <string>
|
||||
# include <vector>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
# include <QMessageBox>
|
||||
# include <QTableWidgetItem>
|
||||
#endif // #ifndef _PreComp_
|
||||
#include <QMessageBox>
|
||||
#include <QTableWidgetItem>
|
||||
#endif// #ifndef _PreComp_
|
||||
|
||||
#include <App/Document.h>
|
||||
#include <Base/Tools.h>
|
||||
@@ -38,32 +38,21 @@
|
||||
#include <Mod/TechDraw/App/DrawView.h>
|
||||
#include <Mod/TechDraw/App/DrawViewPart.h>
|
||||
|
||||
#include "DimensionValidators.h"
|
||||
#include "TaskDimRepair.h"
|
||||
#include "ui_TaskDimRepair.h"
|
||||
#include "DimensionValidators.h"
|
||||
|
||||
|
||||
using namespace Gui;
|
||||
using namespace TechDraw;
|
||||
using namespace TechDrawGui;
|
||||
|
||||
TaskDimRepair::TaskDimRepair(TechDraw::DrawViewDimension* inDvd,
|
||||
ReferenceVector references2d,
|
||||
ReferenceVector references3d) :
|
||||
ui(new Ui_TaskDimRepair),
|
||||
m_dim(inDvd),
|
||||
m_references2d(references2d),
|
||||
m_references3d(references3d)
|
||||
TaskDimRepair::TaskDimRepair(TechDraw::DrawViewDimension* inDvd)
|
||||
: ui(new Ui_TaskDimRepair),
|
||||
m_dim(inDvd)
|
||||
{
|
||||
ui->setupUi(this);
|
||||
|
||||
if (m_references2d.size() == 1 &&
|
||||
m_references2d.front().getSubName().empty() &&
|
||||
m_references3d.empty()) {
|
||||
//the entry in references2d is a spurious View reference (from getReferencesFromSelection),
|
||||
// not a geometry reference, so we treat it as empty
|
||||
m_references2d.clear();
|
||||
}
|
||||
connect(ui->pbSelection, SIGNAL(clicked(bool)), this, SLOT(slotUseSelection()));
|
||||
|
||||
saveDimState();
|
||||
@@ -71,8 +60,7 @@ TaskDimRepair::TaskDimRepair(TechDraw::DrawViewDimension* inDvd,
|
||||
}
|
||||
|
||||
TaskDimRepair::~TaskDimRepair()
|
||||
{
|
||||
}
|
||||
{}
|
||||
|
||||
void TaskDimRepair::setUiPrimary()
|
||||
{
|
||||
@@ -90,19 +78,11 @@ void TaskDimRepair::setUiPrimary()
|
||||
std::vector<std::string> noLabels(subElements2d.size());
|
||||
fillList(ui->lwGeometry2d, subElements2d, noLabels);
|
||||
|
||||
const std::vector<App::DocumentObject*>& objs3d = m_dim->References3D.getValues();
|
||||
QStringList headers;
|
||||
headers << tr("Object Name")
|
||||
<< tr("Object Label")
|
||||
<< tr("SubElement");
|
||||
headers << tr("Object Name") << tr("Object Label") << tr("SubElement");
|
||||
ui->twReferences3d->setHorizontalHeaderLabels(headers);
|
||||
|
||||
ReferenceVector references3d;
|
||||
if (!m_references3d.empty()) {
|
||||
references3d = m_references3d;
|
||||
} else if (!objs3d.empty()) {
|
||||
references3d = m_dim->getReferences3d();
|
||||
}
|
||||
ReferenceVector references3d = m_dim->getReferences3d();
|
||||
loadTableWidget(ui->twReferences3d, references3d);
|
||||
}
|
||||
|
||||
@@ -129,13 +109,14 @@ void TaskDimRepair::restoreDimState()
|
||||
//use the current selection to replace the references in dim
|
||||
void TaskDimRepair::slotUseSelection()
|
||||
{
|
||||
const std::vector<App::DocumentObject*> dimObjects = Gui::Selection().getObjectsOfType(TechDraw::DrawViewDimension::getClassTypeId());
|
||||
const std::vector<App::DocumentObject*> dimObjects =
|
||||
Gui::Selection().getObjectsOfType(TechDraw::DrawViewDimension::getClassTypeId());
|
||||
if (dimObjects.empty()) {
|
||||
//selection does not include a dimension, so we need to add our dimension to keep the
|
||||
//validators happy
|
||||
//bool accepted =
|
||||
static_cast<void> (Gui::Selection().addSelection(m_dim->getDocument()->getName(),
|
||||
m_dim->getNameInDocument()));
|
||||
static_cast<void>(Gui::Selection().addSelection(m_dim->getDocument()->getName(),
|
||||
m_dim->getNameInDocument()));
|
||||
}
|
||||
ReferenceVector references2d;
|
||||
ReferenceVector references3d;
|
||||
@@ -147,13 +128,11 @@ void TaskDimRepair::slotUseSelection()
|
||||
return;
|
||||
}
|
||||
|
||||
StringVector acceptableGeometry( { "Edge", "Vertex" } );
|
||||
std::vector<int> minimumCounts( { 1, 1 } );
|
||||
std::vector<DimensionGeometryType> acceptableDimensionGeometrys; //accept anything
|
||||
DimensionGeometryType geometryRefs2d = validateDimSelection(references2d,
|
||||
acceptableGeometry,
|
||||
minimumCounts,
|
||||
acceptableDimensionGeometrys);
|
||||
StringVector acceptableGeometry({"Edge", "Vertex"});
|
||||
std::vector<int> minimumCounts({1, 1});
|
||||
std::vector<DimensionGeometryType> acceptableDimensionGeometrys;//accept anything
|
||||
DimensionGeometryType geometryRefs2d = validateDimSelection(
|
||||
references2d, acceptableGeometry, minimumCounts, acceptableDimensionGeometrys);
|
||||
if (geometryRefs2d == isInvalid) {
|
||||
QMessageBox::warning(Gui::getMainWindow(),
|
||||
QObject::tr("Incorrect Selection"),
|
||||
@@ -162,14 +141,10 @@ void TaskDimRepair::slotUseSelection()
|
||||
}
|
||||
//what 3d geometry configuration did we receive?
|
||||
DimensionGeometryType geometryRefs3d(isInvalid);
|
||||
if (geometryRefs2d == TechDraw::isViewReference &&
|
||||
!references3d.empty()) {
|
||||
geometryRefs3d = validateDimSelection3d(dvp,
|
||||
references3d,
|
||||
acceptableGeometry,
|
||||
minimumCounts,
|
||||
acceptableDimensionGeometrys);
|
||||
if ( geometryRefs3d == isInvalid) {
|
||||
if (geometryRefs2d == TechDraw::isViewReference && !references3d.empty()) {
|
||||
geometryRefs3d = validateDimSelection3d(
|
||||
dvp, references3d, acceptableGeometry, minimumCounts, acceptableDimensionGeometrys);
|
||||
if (geometryRefs3d == isInvalid) {
|
||||
QMessageBox::warning(Gui::getMainWindow(),
|
||||
QObject::tr("Incorrect Selection"),
|
||||
QObject::tr("Can not make dimension from selection"));
|
||||
@@ -177,14 +152,12 @@ void TaskDimRepair::slotUseSelection()
|
||||
}
|
||||
}
|
||||
|
||||
m_dimType = mapGeometryTypeToDimType(m_dim->Type.getValue(),
|
||||
geometryRefs2d,
|
||||
geometryRefs3d);
|
||||
m_references2d = references2d;
|
||||
m_dimType = mapGeometryTypeToDimType(m_dim->Type.getValue(), geometryRefs2d, geometryRefs3d);
|
||||
m_toApply2d = references2d;
|
||||
if (references3d.empty()) {
|
||||
m_references3d.clear();
|
||||
m_toApply3d.clear();
|
||||
} else {
|
||||
m_references3d = references3d;
|
||||
m_toApply3d = references3d;
|
||||
}
|
||||
updateUi();
|
||||
}
|
||||
@@ -196,12 +169,13 @@ void TaskDimRepair::updateUi()
|
||||
ui->leObject2d->setText(Base::Tools::fromStdString(objName + " / " + objLabel));
|
||||
|
||||
std::vector<std::string> subElements2d;
|
||||
for (auto& ref : m_references2d) {
|
||||
for (auto& ref : m_toApply2d) {
|
||||
subElements2d.push_back(ref.getSubName());
|
||||
}
|
||||
std::vector<std::string> noLabels(subElements2d.size());
|
||||
fillList(ui->lwGeometry2d, subElements2d, noLabels);
|
||||
loadTableWidget(ui->twReferences3d, m_references3d);
|
||||
|
||||
loadTableWidget(ui->twReferences3d, m_toApply3d);
|
||||
}
|
||||
|
||||
void TaskDimRepair::loadTableWidget(QTableWidget* tw, ReferenceVector refs)
|
||||
@@ -213,20 +187,21 @@ void TaskDimRepair::loadTableWidget(QTableWidget* tw, ReferenceVector refs)
|
||||
QString qName = Base::Tools::fromStdString(ref.getObject()->getNameInDocument());
|
||||
QTableWidgetItem* itemName = new QTableWidgetItem(qName);
|
||||
itemName->setTextAlignment(Qt::AlignRight | Qt::AlignVCenter);
|
||||
tw->setItem(iRow,0, itemName);
|
||||
tw->setItem(iRow, 0, itemName);
|
||||
QString qLabel = Base::Tools::fromStdString(std::string(ref.getObject()->Label.getValue()));
|
||||
QTableWidgetItem* itemLabel = new QTableWidgetItem(qLabel);
|
||||
itemLabel->setTextAlignment(Qt::AlignRight | Qt::AlignVCenter);
|
||||
tw->setItem(iRow,1, itemLabel);
|
||||
tw->setItem(iRow, 1, itemLabel);
|
||||
QString qSubName = Base::Tools::fromStdString(ref.getSubName());
|
||||
QTableWidgetItem* itemSubName = new QTableWidgetItem(qSubName);
|
||||
itemSubName->setTextAlignment(Qt::AlignRight | Qt::AlignVCenter);
|
||||
tw->setItem(iRow,2, itemSubName);
|
||||
tw->setItem(iRow, 2, itemSubName);
|
||||
iRow++;
|
||||
}
|
||||
}
|
||||
|
||||
void TaskDimRepair::fillList(QListWidget* lwItems, std::vector<std::string> labels, std::vector<std::string> names)
|
||||
void TaskDimRepair::fillList(QListWidget* lwItems, std::vector<std::string> labels,
|
||||
std::vector<std::string> names)
|
||||
{
|
||||
QListWidgetItem* item;
|
||||
QString qLabel;
|
||||
@@ -249,19 +224,23 @@ void TaskDimRepair::replaceReferences()
|
||||
if (!m_dim) {
|
||||
return;
|
||||
}
|
||||
if (!m_references2d.empty()) {
|
||||
m_dim->setReferences2d(m_references2d);
|
||||
if (!m_toApply2d.empty()) {
|
||||
m_dim->setReferences2d(m_toApply2d);
|
||||
}
|
||||
if (!m_references3d.empty()) {
|
||||
m_dim->setReferences3d(m_references3d);
|
||||
if (!m_toApply3d.empty()) {
|
||||
m_dim->setReferences3d(m_toApply3d);
|
||||
}
|
||||
}
|
||||
|
||||
bool TaskDimRepair::accept()
|
||||
{
|
||||
Gui::Command::doCommand(Gui::Command::Gui, "Gui.ActiveDocument.resetEdit()");
|
||||
|
||||
Gui::Command::openCommand(QT_TRANSLATE_NOOP("Command", "Repair Dimension"));
|
||||
replaceReferences();
|
||||
m_dim->Type.setValue(m_dimType);
|
||||
Gui::Command::commitCommand();
|
||||
|
||||
m_dim->recomputeFeature();
|
||||
return true;
|
||||
}
|
||||
@@ -273,7 +252,7 @@ bool TaskDimRepair::reject()
|
||||
return false;
|
||||
}
|
||||
|
||||
void TaskDimRepair::changeEvent(QEvent *e)
|
||||
void TaskDimRepair::changeEvent(QEvent* e)
|
||||
{
|
||||
if (e->type() == QEvent::LanguageChange) {
|
||||
ui->retranslateUi(this);
|
||||
@@ -281,22 +260,19 @@ void TaskDimRepair::changeEvent(QEvent *e)
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
TaskDlgDimReference::TaskDlgDimReference(TechDraw::DrawViewDimension* inDvd,
|
||||
ReferenceVector references2d,
|
||||
ReferenceVector references3d) :
|
||||
TaskDialog()
|
||||
TaskDlgDimReference::TaskDlgDimReference(TechDraw::DrawViewDimension* inDvd)
|
||||
: TaskDialog()
|
||||
{
|
||||
widget = new TaskDimRepair(inDvd, references2d, references3d);
|
||||
taskbox = new Gui::TaskView::TaskBox(Gui::BitmapFactory().pixmap("TechDraw_DimensionRepair"),
|
||||
widget->windowTitle(), true, 0);
|
||||
widget = new TaskDimRepair(inDvd);
|
||||
taskbox = new Gui::TaskView::TaskBox(
|
||||
Gui::BitmapFactory().pixmap("TechDraw_DimensionRepair"), widget->windowTitle(), true, 0);
|
||||
taskbox->groupLayout()->addWidget(widget);
|
||||
Content.push_back(taskbox);
|
||||
}
|
||||
|
||||
|
||||
TaskDlgDimReference::~TaskDlgDimReference()
|
||||
{
|
||||
}
|
||||
{}
|
||||
|
||||
void TaskDlgDimReference::update()
|
||||
{
|
||||
@@ -305,8 +281,7 @@ void TaskDlgDimReference::update()
|
||||
|
||||
//==== calls from the TaskView ===============================================================
|
||||
void TaskDlgDimReference::open()
|
||||
{
|
||||
}
|
||||
{}
|
||||
|
||||
void TaskDlgDimReference::clicked(int i)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user