]> Shamusworld >> Repos - architektonas/blob - src/objectwidget.cpp
c7e0cf69e61178816bb4bda616399acec017102b
[architektonas] / src / objectwidget.cpp
1 // objectwidget.cpp: Object tweaking widget
2 //
3 // Part of the Architektonas Project
4 // (C) 2016 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 #if 0
21         QListWidget * qlw = new QListWidget;
22         QListWidgetItem * qli1 = new QListWidgetItem(qlw);
23         QListWidgetItem * qli2 = new QListWidgetItem(qlw);
24         QListWidgetItem * qli3 = new QListWidgetItem(qlw);
25         QListWidgetItem * qli4 = new QListWidgetItem(qlw);
26         QListWidgetItem * qli5 = new QListWidgetItem(qlw);
27 #endif
28         label = new QLabel;
29
30 #if 0
31         QPushButton * pb1 = new QPushButton("+");
32         QPushButton * pb2 = new QPushButton("-");
33         QPushButton * pb3 = new QPushButton("Edit");
34         QPushButton * pb4 = new QPushButton("Import");
35 #else
36         QToolButton * pb1 = new QToolButton;
37         QToolButton * pb2 = new QToolButton;
38         QToolButton * pb3 = new QToolButton;
39         QToolButton * pb4 = new QToolButton;
40
41         pb1->setIcon(QIcon(":/res/layer-add.png"));
42         pb2->setIcon(QIcon(":/res/layer-delete.png"));
43         pb3->setIcon(QIcon(":/res/layer-edit.png"));
44         pb4->setIcon(QIcon(":/res/block-import.png"));
45
46         pb1->setToolTip(tr("Add block"));
47         pb2->setToolTip(tr("Remove block"));
48         pb3->setToolTip(tr("Edit block"));
49         pb4->setToolTip(tr("Import block"));
50 #endif
51
52         QHBoxLayout * hbox1 = new QHBoxLayout;
53         hbox1->addWidget(pb1);
54         hbox1->addWidget(pb2);
55         hbox1->addWidget(pb3);
56         hbox1->addWidget(pb4);
57         hbox1->addStretch();
58
59         QVBoxLayout * mainLayout = new QVBoxLayout;
60         mainLayout->addWidget(label);
61         mainLayout->addLayout(hbox1);
62
63         setLayout(mainLayout);
64 }
65
66
67 ObjectWidget::~ObjectWidget()
68 {
69 }
70
71
72 void ObjectWidget::ShowInfo(Object * obj)
73 {
74         const char objName[OTCount][16] = {
75                 "None", "Line", "Circle", "Ellipse", "Arc", "Polygon", "Dimension", "Spline", "Text", "Container"
76         };
77
78         // Sanity check
79         if (obj == NULL)
80                 return;
81
82         QString s = QString("%1<br><br>").arg(QString(objName[obj->type]));
83
84         switch (obj->type)
85         {
86         case OTLine:
87         {
88                 Vector line(obj->p[0], obj->p[1]);
89                 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);
90                 break;
91         }
92         case OTCircle:
93                 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]);
94                 break;
95         case OTEllipse:
96                 break;
97         case OTArc:
98                 s += QString("Center: &lt;%1, %2&gt;<br>Radius: %3<br>Start: %4&#x00B0;<br>End: %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);
99                 break;
100                 break;
101         case OTPolygon:
102                 break;
103         case OTDimension:
104                 break;
105         case OTSpline:
106                 break;
107         case OTText:
108                 break;
109         case OTContainer:
110                 break;
111         default:
112                 break;
113         }
114
115         label->setText(s);
116 }
117