Repository navigation
Expand file tree
/
Copy pathtrianglemeshtabwidget.cpp
More file actions
123 lines (107 loc) · 2.51 KB
/
Copy pathtrianglemeshtabwidget.cpp
File metadata and controls
123 lines (107 loc) · 2.51 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
#include "trianglemeshtabwidget.h"
TriangleMeshTabWidget::TriangleMeshTabWidget(QWidget * parent) : QTabWidget(parent)
{
xcom = 0;
reset();
}
TriangleMeshTabWidget::~TriangleMeshTabWidget(void)
{
freeMemory();
}
void TriangleMeshTabWidget::retranslate(void)
{
for (rmU32 i = 0, ie = count(); i != ie; ++i) {
try {
dynamic_cast<TriangleMeshWidget *>(widget(i))->retranslate();
}
catch (exception & e) {
}
}
}
void TriangleMeshTabWidget::freeMemory(void)
{
for (rmU32 i = this->count(), ie = 0; i != ie; --i) {
delete widget(i - 1);
}
delete xcom;
xcom = 0;
}
void TriangleMeshTabWidget::reset()
{
freeMemory();
xcom = new rmXcomFile;
this->addTab(new TriangleMeshWidget(0, this), "");
}
void TriangleMeshTabWidget::add(const rmMesh * src)
{
rmXcomFile::TriangleMesh * tm = xcom->addTriangleMesh();
tm->mesh = *src;
this->addTab(new TriangleMeshWidget(tm, this), "");
removePlaceholder();
renameTabs();
}
void TriangleMeshTabWidget::remove(rmU32 index)
{
if (index >= count()) {
return;
}
delete widget(index);
xcom->removeTriangleMesh(index);
if (count() == 0) {
reset();
}
renameTabs();
}
rmBool TriangleMeshTabWidget::hasContents(void)
{
return (xcom->getNumTriangleMeshes() != 0);
}
void TriangleMeshTabWidget::getMesh(rmU32 index, rmMesh & dest)
{
if (index >= count()) {
return;
}
dest = xcom->getTriangleMesh(index)->mesh;
}
QString TriangleMeshTabWidget::getMaterialString(rmU32 index)
{
if (index >= count()) {
return "";
}
return QString(rmXcomFile::shapeMaterialNames[xcom->getTriangleMesh(index)->shapeMaterial]);
}
rmBool TriangleMeshTabWidget::fromFile(string filePath)
{
reset();
if (!xcom->read(filePath)) {
return false;
}
for (rmU32 i = 0, ie = xcom->getNumTriangleMeshes(); i != ie; ++i) {
this->addTab(new TriangleMeshWidget(xcom->getTriangleMesh(i), this), "");
}
removePlaceholder();
renameTabs();
return true;
}
rmBool TriangleMeshTabWidget::toFile(string filePath)
{
return xcom->write(filePath);
}
void TriangleMeshTabWidget::removePlaceholder(void)
{
if (this->count() > 1) {
if (tabText(0) == "")
{
delete widget(0);
}
}
}
void TriangleMeshTabWidget::renameTabs(void)
{
if (!hasContents()) {
return;
}
for (rmU32 i = 0, ie = count(); i != ie; ++i) {
setTabText(i, QVariant(i + 1).toString());
}
}