+// arctangentialoptions.cpp
+//
+// Part of the Architektonas Project
+// Originally part of QCad Community Edition by Andrew Mustun
+// Extensively rewritten and refactored by James L. Hammons
+// (C) 2010 Underground Software
+//
+// JLH = James L. Hammons <jlhamm@acm.org>
+//
+// Who When What
+// --- ---------- -----------------------------------------------------------
+// JLH 06/08/2010 Created this file. :-)
+//
+
+#include "arctangentialoptions.h"
+
+#include "rs_actiondrawarctangential.h"
+#include "settings.h"
+
+ArcTangentialOptions::ArcTangentialOptions(QToolBar * parent/*= 0*/, Qt::WindowFlags flags/*= 0*/):
+ QWidget(parent, flags)
+{
+#if 1
+ QHBoxLayout * layout = new QHBoxLayout(this);
+ layout->setContentsMargins(0, 0, 0, 0);
+
+ lRadius = new QLabel(tr("Radius:"));
+ leRadius = new QLineEdit(this);
+ leRadius->setSizePolicy(QSizePolicy(QSizePolicy::Minimum, QSizePolicy::Ignored));
+
+ layout->addWidget(lRadius);
+ layout->addWidget(leRadius);
+
+ connect(leRadius, SIGNAL(textChanged(QString)), this, SLOT(updateRadius(QString)));
+
+ // We need to add the widget (this thing) to the toolbar passed in. Otherwise,
+ // nothing will show up on the screen. :-)
+ if (parent)
+ parent->addWidget(this);
+#else
+ if (objectName().isEmpty())
+ setObjectName(QString::fromUtf8("ArcTangentialOptions"));
+
+ resize(160, 24);
+ QSizePolicy policy(QSizePolicy::Fixed, QSizePolicy::Fixed);
+ policy.setHorizontalStretch(0);
+ policy.setVerticalStretch(0);
+ policy.setHeightForWidth(sizePolicy().hasHeightForWidth());
+ setSizePolicy(policy);
+ setMinimumSize(QSize(160, 22));
+
+ QHBoxLayout * hboxLayout = new QHBoxLayout(this);
+ hboxLayout->setSpacing(6);
+ hboxLayout->setContentsMargins(0, 0, 0, 0);
+ hboxLayout->setObjectName(QString::fromUtf8("hboxLayout"));
+ lRadius = new QLabel(this);
+ lRadius->setObjectName(QString::fromUtf8("lRadius"));
+ lRadius->setWordWrap(false);
+
+ hboxLayout->addWidget(lRadius);
+
+ leRadius = new QLineEdit(this);
+ leRadius->setObjectName(QString::fromUtf8("leRadius"));
+ QSizePolicy sizePolicy1(QSizePolicy::Ignored, QSizePolicy::Fixed);
+ sizePolicy1.setHorizontalStretch(0);
+ sizePolicy1.setVerticalStretch(0);
+ sizePolicy1.setHeightForWidth(leRadius->sizePolicy().hasHeightForWidth());
+ leRadius->setSizePolicy(sizePolicy1);
+
+ hboxLayout->addWidget(leRadius);
+
+ sep1 = new QFrame(this);
+ sep1->setObjectName(QString::fromUtf8("sep1"));
+ QSizePolicy sizePolicy2(QSizePolicy::Fixed, QSizePolicy::Minimum);
+ sizePolicy2.setHorizontalStretch(0);
+ sizePolicy2.setVerticalStretch(0);
+ sizePolicy2.setHeightForWidth(sep1->sizePolicy().hasHeightForWidth());
+ sep1->setSizePolicy(sizePolicy2);
+ sep1->setFrameShape(QFrame::VLine);
+ sep1->setFrameShadow(QFrame::Sunken);
+
+ hboxLayout->addWidget(sep1);
+
+// retranslateUi(ArcTangentialOptions);
+ QObject::connect(leRadius, SIGNAL(textChanged(QString)), this, SLOT(updateRadius(QString)));
+ QMetaObject::connectSlotsByName(this);
+#endif
+}
+
+ArcTangentialOptions::~ArcTangentialOptions()
+{
+ settings.beginGroup("Draw");
+ settings.setValue("ArcTangentialRadius", leRadius->text());
+ settings.endGroup();
+}
+
+void ArcTangentialOptions::setAction(RS_ActionInterface * a, bool update)
+{
+ if (a != NULL && a->rtti() == RS2::ActionDrawArcTangential)
+ {
+ action = (RS_ActionDrawArcTangential *)a;
+
+ QString sr;
+
+ if (update)
+ sr = QString("%1").arg(action->getRadius());
+ else
+ {
+ settings.beginGroup("Draw");
+ sr = settings.value("ArcTangentialRadius", "1.0").toString();
+ settings.endGroup();
+ action->setRadius(sr.toDouble());
+ }
+ leRadius->setText(sr);
+ }
+ else
+ {
+ RS_DEBUG->print(RS_Debug::D_ERROR,
+ "ArcTangentialOptions::setAction: wrong action type");
+ action = NULL;
+ }
+}
+
+/*void ArcTangentialOptions::init() {
+ data = NULL;
+ RS_SETTINGS->beginGroup("/Draw");
+ bool reversed = RS_SETTINGS->readNumEntry("/ArcReversed", 0);
+ RS_SETTINGS->endGroup();
+
+ rbNeg->setChecked(reversed);
+ }*/
+
+/*void ArcTangentialOptions::setData(RS_ArcData* d) {
+ data = d;
+ updateDirection(false);
+ }*/
+
+void ArcTangentialOptions::updateRadius(const QString & s)
+{
+ if (action != NULL)
+ action->setRadius(RS_Math::eval(s));
+}
+