]> Shamusworld >> Repos - architektonas/blob - src/objectwidget.cpp
Whitespace changes. :-P
[architektonas] / src / objectwidget.cpp
1 //
2 // objectwidget.cpp: Object tweaking widget
3 //
4 // Part of the Architektonas Project
5 // (C) 2020 Underground Software
6 // See the README and GPLv3 files for licensing and warranty information
7 //
8 // JLH = James Hammons <jlhamm@acm.org>
9 //
10 // WHO  WHEN        WHAT
11 // ---  ----------  ------------------------------------------------------------
12 // JLH  11/07/2016  Created this file
13 //
14
15 #include "objectwidget.h"
16 #include "mathconstants.h"
17
18 ObjectWidget::ObjectWidget(void): QWidget()
19 {
20         label = new QLabel;
21
22         QToolButton * pb1 = new QToolButton;
23         QToolButton * pb2 = new QToolButton;
24         QToolButton * pb3 = new QToolButton;
25         QToolButton * pb4 = new QToolButton;
26
27         pb1->setIcon(QIcon(":/res/layer-add.png"));
28         pb2->setIcon(QIcon(":/res/layer-delete.png"));
29         pb3->setIcon(QIcon(":/res/layer-edit.png"));
30         pb4->setIcon(QIcon(":/res/block-import.png"));
31
32         pb1->setToolTip(tr("Add block"));
33         pb2->setToolTip(tr("Remove block"));
34         pb3->setToolTip(tr("Edit block"));
35         pb4->setToolTip(tr("Import block"));
36
37         QHBoxLayout * hbox1 = new QHBoxLayout;
38         hbox1->addWidget(pb1);
39         hbox1->addWidget(pb2);
40         hbox1->addWidget(pb3);
41         hbox1->addWidget(pb4);
42         hbox1->addStretch();
43
44         QVBoxLayout * mainLayout = new QVBoxLayout;
45         mainLayout->addWidget(label);
46         mainLayout->addStretch();
47         mainLayout->addLayout(hbox1);
48
49         setLayout(mainLayout);
50 }
51
52 ObjectWidget::~ObjectWidget()
53 {
54 }
55
56 void ObjectWidget::ShowInfo(Object * obj)
57 {
58         // Sanity check
59         if (obj == NULL)
60                 return;
61
62         QString s = QString("<b>%1</b><br><br>").arg(QString(objName[obj->type]));
63
64         switch (obj->type)
65         {
66         case OTLine:
67         {
68                 Vector line(obj->p[0], obj->p[1]);
69                 s += QString("&lt;%1, %2&gt; to &lt;%3, %4&gt;<br>Length: %5<br>Angle: %6&#x00B0;<br>").arg(obj->p[0].x).arg(obj->p[0].y).arg(obj->p[1].x).arg(obj->p[1].y).arg(line.Magnitude()).arg(line.Angle() * RADIANS_TO_DEGREES);
70                 break;
71         }
72
73         case OTCircle:
74                 s += QString("Center: &lt;%1, %2&gt;<br>Radius: %3<br>").arg(obj->p[0].x).arg(obj->p[0].y).arg(obj->radius[0]);
75                 break;
76
77         case OTEllipse:
78                 break;
79
80         case OTArc:
81                 s += QString("Center: &lt;%1, %2&gt;<br>Radius: %3<br>Start: %4&#x00B0;<br>Span: %5&#x00B0;<br>").arg(obj->p[0].x).arg(obj->p[0].y).arg(obj->radius[0]).arg(obj->angle[0] * RADIANS_TO_DEGREES).arg(obj->angle[1] * RADIANS_TO_DEGREES);
82                 break;
83
84         case OTPolygon:
85                 break;
86
87         case OTDimension:
88         {
89                 Dimension * d = (Dimension *)obj;
90                 s += QString("Type: %1<br>").arg(dimName[d->subtype]);
91                 break;
92         }
93
94         case OTSpline:
95                 break;
96
97         case OTText:
98         {
99                 Text * t = (Text *)obj;
100                 s += QString("&lt;%1, %2&gt;<br>Width/Height: %3/%4<br>Angle: %5&#x00B0;<br>").arg(t->p[0].x).arg(t->p[0].y).arg(t->extents.Width()).arg(t->extents.Height()).arg(obj->angle[0] * RADIANS_TO_DEGREES);
101                 break;
102         }
103
104         case OTContainer:
105                 break;
106
107         default:
108                 break;
109         }
110
111         label->setText(s);
112 }