1 // arctangentialoptions.cpp
3 // Part of the Architektonas Project
4 // Originally part of QCad Community Edition by Andrew Mustun
5 // Extensively rewritten and refactored by James L. Hammons
6 // (C) 2010 Underground Software
8 // JLH = James L. Hammons <jlhamm@acm.org>
11 // --- ---------- -----------------------------------------------------------
12 // JLH 06/08/2010 Created this file. :-)
15 #include "arctangentialoptions.h"
17 #include "rs_actiondrawarctangential.h"
20 ArcTangentialOptions::ArcTangentialOptions(QToolBar * parent/*= 0*/, Qt::WindowFlags flags/*= 0*/):
21 QWidget(parent, flags)
24 QHBoxLayout * layout = new QHBoxLayout(this);
25 layout->setContentsMargins(0, 0, 0, 0);
27 lRadius = new QLabel(tr("Radius:"));
28 leRadius = new QLineEdit(this);
29 leRadius->setSizePolicy(QSizePolicy(QSizePolicy::Minimum, QSizePolicy::Ignored));
31 layout->addWidget(lRadius);
32 layout->addWidget(leRadius);
34 connect(leRadius, SIGNAL(textChanged(QString)), this, SLOT(updateRadius(QString)));
36 // We need to add the widget (this thing) to the toolbar passed in. Otherwise,
37 // nothing will show up on the screen. :-)
39 parent->addWidget(this);
41 if (objectName().isEmpty())
42 setObjectName(QString::fromUtf8("ArcTangentialOptions"));
45 QSizePolicy policy(QSizePolicy::Fixed, QSizePolicy::Fixed);
46 policy.setHorizontalStretch(0);
47 policy.setVerticalStretch(0);
48 policy.setHeightForWidth(sizePolicy().hasHeightForWidth());
49 setSizePolicy(policy);
50 setMinimumSize(QSize(160, 22));
52 QHBoxLayout * hboxLayout = new QHBoxLayout(this);
53 hboxLayout->setSpacing(6);
54 hboxLayout->setContentsMargins(0, 0, 0, 0);
55 hboxLayout->setObjectName(QString::fromUtf8("hboxLayout"));
56 lRadius = new QLabel(this);
57 lRadius->setObjectName(QString::fromUtf8("lRadius"));
58 lRadius->setWordWrap(false);
60 hboxLayout->addWidget(lRadius);
62 leRadius = new QLineEdit(this);
63 leRadius->setObjectName(QString::fromUtf8("leRadius"));
64 QSizePolicy sizePolicy1(QSizePolicy::Ignored, QSizePolicy::Fixed);
65 sizePolicy1.setHorizontalStretch(0);
66 sizePolicy1.setVerticalStretch(0);
67 sizePolicy1.setHeightForWidth(leRadius->sizePolicy().hasHeightForWidth());
68 leRadius->setSizePolicy(sizePolicy1);
70 hboxLayout->addWidget(leRadius);
72 sep1 = new QFrame(this);
73 sep1->setObjectName(QString::fromUtf8("sep1"));
74 QSizePolicy sizePolicy2(QSizePolicy::Fixed, QSizePolicy::Minimum);
75 sizePolicy2.setHorizontalStretch(0);
76 sizePolicy2.setVerticalStretch(0);
77 sizePolicy2.setHeightForWidth(sep1->sizePolicy().hasHeightForWidth());
78 sep1->setSizePolicy(sizePolicy2);
79 sep1->setFrameShape(QFrame::VLine);
80 sep1->setFrameShadow(QFrame::Sunken);
82 hboxLayout->addWidget(sep1);
84 // retranslateUi(ArcTangentialOptions);
85 QObject::connect(leRadius, SIGNAL(textChanged(QString)), this, SLOT(updateRadius(QString)));
86 QMetaObject::connectSlotsByName(this);
90 ArcTangentialOptions::~ArcTangentialOptions()
92 settings.beginGroup("Draw");
93 settings.setValue("ArcTangentialRadius", leRadius->text());
97 void ArcTangentialOptions::setAction(RS_ActionInterface * a, bool update)
99 if (a != NULL && a->rtti() == RS2::ActionDrawArcTangential)
101 action = (RS_ActionDrawArcTangential *)a;
106 sr = QString("%1").arg(action->getRadius());
109 settings.beginGroup("Draw");
110 sr = settings.value("ArcTangentialRadius", "1.0").toString();
112 action->setRadius(sr.toDouble());
114 leRadius->setText(sr);
118 RS_DEBUG->print(RS_Debug::D_ERROR,
119 "ArcTangentialOptions::setAction: wrong action type");
124 /*void ArcTangentialOptions::init() {
126 RS_SETTINGS->beginGroup("/Draw");
127 bool reversed = RS_SETTINGS->readNumEntry("/ArcReversed", 0);
128 RS_SETTINGS->endGroup();
130 rbNeg->setChecked(reversed);
133 /*void ArcTangentialOptions::setData(RS_ArcData* d) {
135 updateDirection(false);
138 void ArcTangentialOptions::updateRadius(const QString & s)
141 action->setRadius(RS_Math::eval(s));