LAMPCAE/src/GeometryWidgets/dialogCreateSphere.cpp

122 lines
3.0 KiB
C++

#include "dialogCreateSphere.h"
#include "ui_dialogCreateSphere.h"
#include "geoPointWidget.h"
#include "Geometry/geometrySet.h"
#include "GeometryCommand/GeoCommandCreateSphere.h"
#include "GeometryCommand/GeoCommandList.h"
#include <QMessageBox>
#include "Geometry/geometryParaSphere.h"
#include "PythonModule/PyAgent.h"
namespace GeometryWidget
{
CreateSphereDialog::CreateSphereDialog(GUI::MainWindow *m, MainWidget::PreWindow *p)
: GeoDialogBase(m, p)
{
_ui = new Ui::CreateSphere;
_ui->setupUi(this);
init();
}
CreateSphereDialog::CreateSphereDialog(GUI::MainWindow *m, MainWidget::PreWindow *p, Geometry::GeometrySet *set) : GeoDialogBase(m, p)
{
_ui = new Ui::CreateSphere;
_ui->setupUi(this);
_isEdit = true;
_editSet = set;
this->setWindowTitle("Edit Sphere");
init();
}
CreateSphereDialog::~CreateSphereDialog()
{
if (_ui != nullptr)
delete _ui;
}
//
// void CreateSphereDialog::closeEvent(QCloseEvent *e)
// {
// QDialog::closeEvent(e);
// delete this;
// }
void CreateSphereDialog::init()
{
_pw = new GeoPointWidget(_mainWindow, _preWindow);
_ui->verticalLayout->addWidget(_pw);
this->translateButtonBox(_ui->buttonBox);
if (!_isEdit)
{
int id = Geometry::GeometrySet::getMaxID() + 1;
_ui->namelineEdit->setPlaceholderText(QString("Sphere_%1").arg(id));
}
else
{
if (_editSet == nullptr)
return;
_ui->namelineEdit->setText(_editSet->getName());
_ui->namelineEdit->setEnabled(false);
Geometry::GeometryModelParaBase *pb = _editSet->getParameter();
Geometry::GeometryParaSphere *p = dynamic_cast<Geometry::GeometryParaSphere *>(pb);
if (p == nullptr)
return;
double loc[3] = {0.0};
p->getLocation(loc);
_ui->doubleSpinBoxR->setValue(p->getRadius());
_pw->setCoordinate(loc);
}
}
void CreateSphereDialog::reject()
{
QDialog::reject();
this->close();
}
void CreateSphereDialog::accept()
{
double corner[3] = {0.0};
bool ok = _pw->getCoordinate(corner);
QString name = _ui->namelineEdit->text();
if (name.isEmpty())
name = _ui->namelineEdit->placeholderText();
if (ok)
ok = !name.isEmpty();
if (!ok)
{
QMessageBox::warning(this, tr("Warning"), tr("Input Wrong !"));
return;
}
double r = _ui->doubleSpinBoxR->value();
/*
Command::GeoCommandCreateSphere* c = new Command::GeoCommandCreateSphere(_mainWindow, _preWindow);
c->setLocation(corner);
c->setName(name);
c->setRadius(r);
if (_isEdit) c->setEditData(_editSet);
Command::GeoComandList::getInstance()->executeCommand(c);
*/
QStringList codes{};
codes += QString("sphere = CAD.Sphere()");
if (_isEdit)
codes += QString("sphere.setEditID(%1)").arg(_editSet->getID());
else
codes += QString("sphere.setName('%1')").arg(name);
codes += QString("sphere.setLocation(%1,%2,%3)").arg(corner[0]).arg(corner[1]).arg(corner[2]);
codes += QString("sphere.setRadius(%1)").arg(r);
if (_isEdit)
codes += QString("sphere.edit()");
else
codes += QString("sphere.create()");
_pyAgent->submit(codes);
QDialog::accept();
this->close();
}
}