]> Shamusworld >> Repos - guemap/blob - src/roomwidget.cpp
Initial commit of GUEmap v3.
[guemap] / src / roomwidget.cpp
1 // roomwidget.cpp: room tweaking widget
2 //
3 // Part of the GUEmap Project
4 // (C) 2019 Underground Software
5 // See the README and GPLv2 files for licensing and warranty information
6 //
7
8 #include "roomwidget.h"
9 //#include "mathconstants.h"
10 #include "globals.h"
11 #include "mapdoc.h"
12
13
14 RoomWidget::RoomWidget(void): QWidget()
15 {
16 #if 0
17 #if 0
18         QListWidget * qlw = new QListWidget;
19         QListWidgetItem * qli1 = new QListWidgetItem(qlw);
20         QListWidgetItem * qli2 = new QListWidgetItem(qlw);
21         QListWidgetItem * qli3 = new QListWidgetItem(qlw);
22         QListWidgetItem * qli4 = new QListWidgetItem(qlw);
23         QListWidgetItem * qli5 = new QListWidgetItem(qlw);
24 #endif
25         label = new QLabel;
26
27 #if 0
28         QPushButton * pb1 = new QPushButton("+");
29         QPushButton * pb2 = new QPushButton("-");
30         QPushButton * pb3 = new QPushButton("Edit");
31         QPushButton * pb4 = new QPushButton("Import");
32 #else
33         QToolButton * pb1 = new QToolButton;
34         QToolButton * pb2 = new QToolButton;
35         QToolButton * pb3 = new QToolButton;
36         QToolButton * pb4 = new QToolButton;
37
38         pb1->setIcon(QIcon(":/res/layer-add.png"));
39         pb2->setIcon(QIcon(":/res/layer-delete.png"));
40         pb3->setIcon(QIcon(":/res/layer-edit.png"));
41         pb4->setIcon(QIcon(":/res/block-import.png"));
42
43         pb1->setToolTip(tr("Add block"));
44         pb2->setToolTip(tr("Remove block"));
45         pb3->setToolTip(tr("Edit block"));
46         pb4->setToolTip(tr("Import block"));
47 #endif
48
49         QHBoxLayout * hbox1 = new QHBoxLayout;
50         hbox1->addWidget(pb1);
51         hbox1->addWidget(pb2);
52         hbox1->addWidget(pb3);
53         hbox1->addWidget(pb4);
54         hbox1->addStretch();
55
56         QVBoxLayout * mainLayout = new QVBoxLayout;
57         mainLayout->addWidget(label);
58         mainLayout->addStretch();
59         mainLayout->addLayout(hbox1);
60
61         setLayout(mainLayout);
62 #endif
63         QFormLayout * fl = new QFormLayout;
64
65         fl->addRow("&Name:", &name);
66         fl->addRow("&Comment:", &comment);
67         fl->addRow("&Border:", &border);
68
69 //      buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel);
70
71 //      connect(buttonBox, SIGNAL(accepted()), this, SLOT(accept()));
72 //      connect(buttonBox, SIGNAL(rejected()), this, SLOT(reject()));
73
74         QVBoxLayout * mainLayout = new QVBoxLayout;
75         mainLayout->addLayout(fl);
76 //      mainLayout->addWidget(buttonBox);
77         setLayout(mainLayout);
78
79         setWindowTitle(tr("Room Settings"));
80 }
81
82
83 RoomWidget::~RoomWidget()
84 {
85 }
86
87
88 void RoomWidget::ShowInfo(MapDoc * doc, int roomNo)
89 {
90         MapRoom & rm = doc->room[roomNo];
91
92         name.setText(rm.name.c_str());
93         comment.clear();
94         comment.insertPlainText(rm.note.c_str());
95         border.setChecked(bool((rm.flags & rfBorder) != 0));
96 }
97
98 #if 0
99 void RoomWidget::ShowInfo(Object * obj)
100 {
101         const char objName[OTCount][16] = {
102                 "None", "Line", "Circle", "Ellipse", "Arc", "Polygon", "Dimension", "Spline", "Text", "Container"
103         };
104         const char dimName[DTCount][32] = {
105                 "Linear", "Vertical", "Horizontal", "Radial", "Diametric",
106                 "Circumferential", "Angular", "Leader"
107         };
108
109         // Sanity check
110         if (obj == NULL)
111                 return;
112
113         QString s = QString("<b>%1</b><br><br>").arg(QString(objName[obj->type]));
114
115         switch (obj->type)
116         {
117         case OTLine:
118         {
119                 Vector line(obj->p[0], obj->p[1]);
120                 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);
121                 break;
122         }
123
124         case OTCircle:
125                 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]);
126                 break;
127
128         case OTEllipse:
129                 break;
130
131         case OTArc:
132                 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);
133                 break;
134
135         case OTPolygon:
136                 break;
137
138         case OTDimension:
139         {
140                 Dimension * d = (Dimension *)obj;
141                 s += QString("Type: %1<br>").arg(dimName[d->subtype]);
142                 break;
143         }
144
145         case OTSpline:
146                 break;
147
148         case OTText:
149         {
150                 Text * t = (Text *)obj;
151                 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);
152                 break;
153         }
154
155         case OTContainer:
156                 break;
157
158         default:
159                 break;
160         }
161
162         label->setText(s);
163 }
164 #endif
165