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/11/2010 Created this file. :-)
17 #include "rs_entitycontainer.h"
19 #include "rs_pattern.h"
20 #include "rs_patternlist.h"
23 DlgHatch::DlgHatch(QWidget * parent/*= NULL*/, Qt::WindowFlags flags/*= 0*/):
24 QDialog(parent, flags)
32 preview = new RS_EntityContainer();
33 ui.gvPreview->setContainer(preview);
34 ui.gvPreview->setBorders(15, 15, 15, 15);
43 settings.beginGroup("Draw");
44 settings.setValue("HatchSolid", ui.cbSolid->isChecked());
45 settings.setValue("HatchPattern", ui.cbPattern->currentText());
46 settings.setValue("HatchScale", ui.leScale->text());
47 settings.setValue("HatchAngle", ui.leAngle->text());
48 settings.setValue("HatchPreview", ui.cbEnablePreview->isChecked());
55 void DlgHatch::polish()
57 //WTF is this supposed to be for???
59 ui.gvPreview->zoomAuto();
62 void DlgHatch::showEvent(QShowEvent * e)
64 QDialog::showEvent(e);
65 ui.gvPreview->zoomAuto();
68 void DlgHatch::setHatch(RS_Hatch & h, bool isNew)
73 settings.beginGroup("Draw");
74 bool enablePrev = settings.value("HatchPreview", false).toBool();
77 ui.cbEnablePreview->setChecked(enablePrev);
79 // read defaults from config file:
82 settings.beginGroup("Draw");
83 bool solid = settings.value("HatchSolid", false).toBool();
84 QString pat = settings.value("HatchPattern", "ANSI31").toString();
85 QString scale = settings.value("HatchScale", "1.0").toString();
86 QString angle = settings.value("HatchAngle", "0.0").toString();
89 ui.cbSolid->setChecked(solid);
91 ui.leScale->setText(scale);
92 ui.leAngle->setText(angle);
94 // initialize dialog based on given hatch:
97 ui.cbSolid->setChecked(hatch->isSolid());
98 setPattern(hatch->getPattern());
100 s.setNum(hatch->getScale());
101 ui.leScale->setText(s);
102 s.setNum(RS_Math::rad2deg(hatch->getAngle()));
103 ui.leAngle->setText(s);
107 void DlgHatch::updateHatch()
112 hatch->setSolid(ui.cbSolid->isChecked());
113 hatch->setPattern(ui.cbPattern->currentText());
114 hatch->setScale(RS_Math::eval(ui.leScale->text()));
115 hatch->setAngle(RS_Math::deg2rad(RS_Math::eval(ui.leAngle->text())));
118 void DlgHatch::setPattern(const QString & p)
120 if (!RS_PATTERNLIST->contains(p))
121 // ui.cbPattern->insertItem(p);
122 ui.cbPattern->addItem(p);
124 // ui.cbPattern->setCurrentText(p);
125 ui.cbPattern->setCurrentIndex(ui.cbPattern->findText(p));
126 pattern = ui.cbPattern->getPattern();
129 void DlgHatch::resizeEvent(QResizeEvent *)
134 void DlgHatch::updatePreview()
139 void DlgHatch::updatePreview(RS_Pattern *)
144 if (!hatch || !ui.cbEnablePreview->isChecked())
147 ui.gvPreview->zoomAuto();
151 QString patName = ui.cbPattern->currentText();
152 bool isSolid = ui.cbSolid->isChecked();
154 //double scale = RS_Math::eval(leScale->text(), 1.0);
155 double angle = RS_Math::deg2rad(RS_Math::eval(ui.leAngle->text(), 0.0));
158 prevSize = pattern->getSize().x * 10;
164 RS_Hatch * prevHatch = new RS_Hatch(preview, RS_HatchData(isSolid, 0.2, angle, patName));
165 prevHatch->setPen(hatch->getPen());
167 RS_EntityContainer * loop = new RS_EntityContainer(prevHatch);
168 loop->setPen(RS_Pen(RS2::FlagInvalid));
169 loop->addEntity(new RS_Line(loop, RS_LineData(Vector(0.0, 0.0), Vector(10.0, 0.0))));
170 loop->addEntity(new RS_Line(loop, RS_LineData(Vector(10.0, 0.0), Vector(10.0, 10.0))));
171 loop->addEntity(new RS_Line(loop, RS_LineData(Vector(10.0, 10.0), Vector(0.0, 10.0))));
172 loop->addEntity(new RS_Line(loop, RS_LineData(Vector(0.0, 10.0), Vector(0.0, 0.0))));
173 prevHatch->addEntity(loop);
174 preview->addEntity(prevHatch);
179 ui.gvPreview->zoomAuto();