]> Shamusworld >> Repos - architektonas/blob - src/forms/dimensionlabeleditor.cpp
Final round of dialogs/forms needing to be converted from Qt3 to 4
[architektonas] / src / forms / dimensionlabeleditor.cpp
1 // dimensionlabeleditor.cpp
2 //
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
7 //
8 // JLH = James L. Hammons <jlhamm@acm.org>
9 //
10 // Who  When        What
11 // ---  ----------  -----------------------------------------------------------
12 // JLH  06/11/2010  Created this file. :-)
13 //
14
15 #include "dimensionlabeleditor.h"
16
17 //#include "rs_arc.h"
18 //#include "drawing.h"
19 //#include "rs_math.h"
20
21 DimensionLabelEditor::DimensionLabelEditor(QWidget * parent/*= NULL*/, Qt::WindowFlags flags/*= 0*/):
22         QWidget(parent, flags)
23 {
24         ui.setupUi(this);
25 }
26
27 DimensionLabelEditor::~DimensionLabelEditor()
28 {
29 }
30
31 void DimensionLabelEditor::setLabel(const QString & l)
32 {
33         int i0, i1a, i1b, i2;
34         QString label, tol1, tol2;
35         bool hasDiameter = false;
36
37         label = l;
38
39         if (label.at(0) == QChar(0x2205) || label.at(0) == QChar(0xF8))
40         {
41                 hasDiameter = true;
42                 ui.bDiameter->setChecked(true);
43         }
44
45         i0 = l.indexOf("\\S");
46
47         if (i0 >= 0)
48         {
49                 i1a = l.indexOf("^ ", i0);
50                 i1b = i1a + 1;
51
52                 if (i1a < 0)
53                         i1a = i1b = l.indexOf('^', i0);
54
55
56                 if (i1a >= 0)
57                 {
58                         i2 = l.indexOf(';', i1b);
59                         label = l.mid(0, i0);
60                         tol1 = l.mid(i0 + 2, i1a - i0 - 2);
61                         tol2 = l.mid(i1b + 1, i2 - i1b - 1);
62                 }
63         }
64
65         ui.leLabel->setText(label.mid(hasDiameter));
66         ui.leTol1->setText(tol1);
67         ui.leTol2->setText(tol2);
68 }
69
70 QString DimensionLabelEditor::getLabel()
71 {
72         QString l = ui.leLabel->text();
73
74         // diameter:
75         if (ui.bDiameter->isChecked())
76         {
77                 if (l.isEmpty())
78                         l = QString("%1<>").arg(QChar(0x2205));
79                 else
80                         l = QChar(0x2205) + l;
81         }
82
83         if (ui.leTol1->text().isEmpty() && ui.leTol2->text().isEmpty())
84                 return l;
85         else
86                 return l + "\\S" + ui.leTol1->text() + "^ " + ui.leTol2->text() + ";";
87 }
88
89 void DimensionLabelEditor::insertSign(const QString & s)
90 {
91         ui.leLabel->insert(s.left(1));
92 }