]> Shamusworld >> Repos - architektonas/blob - src/objectwidget.cpp
915e103bba199b111901b34054b46d0807102363
[architektonas] / src / objectwidget.cpp
1 // objectwidget.cpp: Object tweaking widget
2 //
3 // Part of the Architektonas Project
4 // (C) 2020 Underground Software
5 // See the README and GPLv3 files for licensing and warranty information
6 //
7 // JLH = James Hammons <jlhamm@acm.org>
8 //
9 // WHO  WHEN        WHAT
10 // ---  ----------  ------------------------------------------------------------
11 // JLH  11/07/2016  Created this file
12 //
13
14 #include "objectwidget.h"
15 #include "mathconstants.h"
16
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
53 ObjectWidget::~ObjectWidget()
54 {
55 }
56
57
58 void ObjectWidget::ShowInfo(Object * obj)
59 {
60         // Sanity check
61         if (obj == NULL)
62                 return;
63
64         QString s = QString("<b>%1</b><br><br>").arg(QString(objName[obj->type]));
65
66         switch (obj->type)
67         {
68         case OTLine:
69         {
70                 Vector line(obj->p[0], obj->p[1]);
71                 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);
72                 break;
73         }
74
75         case OTCircle:
76                 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]);
77                 break;
78
79         case OTEllipse:
80                 break;
81
82         case OTArc:
83                 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);
84                 break;
85
86         case OTPolygon:
87                 break;
88
89         case OTDimension:
90         {
91                 Dimension * d = (Dimension *)obj;
92                 s += QString("Type: %1<br>").arg(dimName[d->subtype]);
93                 break;
94         }
95
96         case OTSpline:
97                 break;
98
99         case OTText:
100         {
101                 Text * t = (Text *)obj;
102                 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);
103                 break;
104         }
105
106         case OTContainer:
107                 break;
108
109         default:
110                 break;
111         }
112
113         label->setText(s);
114 }
115