9#include "ControlHealthMonitorWidget.h"
12#include "ControlNet.h"
19#include <QGuiApplication>
24#include <QProgressBar>
27#include <QTableWidgetItem>
31#include <QDesktopWidget>
33#include <QWidgetAction>
36#include <ControlNet.h>
37#include <ControlNetVitals.h>
38#include <ControlPoint.h>
55 connect (m_vitals, SIGNAL(networkChanged()),
58 connect (m_vitals, SIGNAL(
historyEntry(QString, QString, QVariant, QVariant, QString)),
59 this, SLOT (
historyEntry(QString, QString, QVariant, QVariant, QString)));
75 m_netLabel->setText(
"Control Network: " + m_vitals->
getNetworkId());
76 m_statusLabel->setText(m_vitals->
getStatus());
88 freePercent = ( (int) (freePercent * 100) ) / 100.0;
90 m_pointsFreeProgressbar->setValue(freePercent);
91 m_pointsFreeProgressbar->setFormat(freeFormat);
95 constrainedPercent = ( (int) (constrainedPercent * 100) ) / 100.0;
97 m_pointsConstrainedProgressbar->setValue(constrainedPercent);
98 m_pointsConstrainedProgressbar->setFormat(constrainedFormat);
101 fixedPercent = ( (int) (fixedPercent * 100) ) / 100.0;
103 m_pointsFixedProgressbar->setValue(fixedPercent);
104 m_pointsFixedProgressbar->setFormat(fixedFormat);
108 if (m_vitals->
getStatus() ==
"Broken!") updateStatus(0);
109 else if (m_vitals->
getStatus() ==
"Weak!") updateStatus(1);
110 else if (m_vitals->
getStatus() ==
"Healthy!") updateStatus(2);
150 void ControlHealthMonitorWidget::updateStatus(
int code) {
151 QPalette p = m_statusBar->palette();
154 p.setColor(QPalette::Highlight, Qt::red);
155 p.setColor(QPalette::Text, Qt::black);
158 p.setColor(QPalette::Highlight, Qt::yellow);
159 p.setColor(QPalette::Text, Qt::black);
162 p.setColor(QPalette::Highlight, Qt::green);
163 p.setColor(QPalette::Text, Qt::white);
166 m_statusBar->setPalette(p);
176 setWindowTitle(
"Control Net Health Monitor");
179 QFont fontBig(
"Arial", 18, QFont::Bold);
180 QFont fontNormal(
"Arial", 14);
181 QFont searchFont(
"Seqoe UI Symbol", 12);
184 QVBoxLayout *gridLayout =
new QVBoxLayout;
185 gridLayout->setAlignment(Qt::AlignTop);
186 gridLayout->setSpacing(5);
187 setLayout(gridLayout);
190 QLabel *titleLabel =
new QLabel(
"Control Net Health Monitor");
191 titleLabel->setFont(fontBig);
192 titleLabel->setAlignment(Qt::AlignTop);
195 QHBoxLayout *netLayout =
new QHBoxLayout;
196 netLayout->setAlignment(Qt::AlignLeft);
198 m_netLabel =
new QLabel(
"Control Network:");
199 m_netLabel->setFont(fontNormal);
200 m_netLabel->setAlignment(Qt::AlignTop | Qt::AlignLeft);
201 gridLayout->addWidget(titleLabel);
203 netLayout->addWidget(m_netLabel);
204 netWidget->setLayout(netLayout);
206 gridLayout->addWidget(netWidget);
210 QHBoxLayout *netStatsLayout =
new QHBoxLayout;
211 netStatsLayout->setAlignment(Qt::AlignLeft);
212 netStatsLayout->setSpacing(25);
213 m_numImagesLabel =
new QLabel(
"Images:");
214 m_numPointsLabel =
new QLabel(
"Points:");
215 m_numMeasuresLabel =
new QLabel(
"Measures:");
217 netStatsLayout->addWidget(m_numImagesLabel);
218 netStatsLayout->addWidget(m_numPointsLabel);
219 netStatsLayout->addWidget(m_numMeasuresLabel);
221 stats->setLayout(netStatsLayout);
222 gridLayout->addWidget(stats);
226 QPalette p = m_statusBar->palette();
227 p.setColor(QPalette::Highlight, Qt::green);
228 p.setColor(QPalette::Text, Qt::red);
229 m_statusBar->setPalette(p);
230 m_statusBar->setRange(0, 0);
232 m_statusBar->setFormat(
"Loading...");
233 gridLayout->addWidget(m_statusBar);
235 m_lastModLabel =
new QLabel(
"Last Modification:");
236 gridLayout->addWidget(m_lastModLabel);
239 line->setFrameShape(QFrame::HLine);
240 line->setFrameShadow(QFrame::Sunken);
241 gridLayout->addSpacing(15);
243 gridLayout->addWidget(line);
244 gridLayout->addSpacing(15);
247 QTabWidget *tabs =
new QTabWidget();
249 QWidget *overviewTab = createOverviewTab();
250 QWidget *imagesTab = createImagesTab();
251 QWidget *pointsTab = createPointsTab();
254 tabs->insertTab(0, overviewTab,
"Overview");
255 tabs->insertTab(1, imagesTab,
"Images");
256 tabs->insertTab(2, pointsTab,
"Points");
259 gridLayout->addWidget(tabs);
268 m_historyTable = NULL;
269 m_imagesHullValue = NULL;
270 m_imagesMeasuresValue = NULL;
271 m_imagesShowingLabel = NULL;
272 m_imagesTable = NULL;
273 m_lastModLabel = NULL;
274 m_numImagesLabel = NULL;
275 m_numMeasuresLabel = NULL;
276 m_numPointsLabel = NULL;
278 m_pointsEditLockedLabel = NULL;
279 m_pointsFewMeasuresLabel = NULL;
280 m_pointsIgnoredLabel = NULL;
281 m_pointsShowingLabel = NULL;
282 m_pointsTable = NULL;
284 m_statusDetails = NULL;
285 m_statusLabel = NULL;
294 QWidget* ControlHealthMonitorWidget::createOverviewTab() {
298 QVBoxLayout *overviewLayout =
new QVBoxLayout;
299 overviewLayout->setAlignment(Qt::AlignTop);
300 overviewLayout->setSpacing(5);
302 QFont fontBig(
"Arial", 16, QFont::Bold);
303 QFont fontNormal(
"Arial", 14);
304 QFont fontSmall(
"Arial", 12);
306 m_statusLabel =
new QLabel(
"Healthy!");
307 m_statusLabel->setFont(fontBig);
308 m_statusLabel->setAlignment(Qt::AlignTop | Qt::AlignLeft);
310 m_statusDetails =
new QLabel(
"Your network is healthy.");
311 m_statusDetails->setFont(fontNormal);
312 m_statusDetails->setAlignment(Qt::AlignTop | Qt::AlignLeft);
314 m_statusDetails->setFont(fontNormal);
315 m_statusDetails->setAlignment(Qt::AlignTop | Qt::AlignLeft);
317 overviewLayout->addWidget(m_statusLabel);
318 overviewLayout->addWidget(m_statusDetails);
319 overviewLayout->addSpacing(50);
321 QLabel *modLabel =
new QLabel(
"Modification History");
322 modLabel->setFont(fontSmall);
323 overviewLayout->addWidget(modLabel);
326 headers.append(
"Action");
327 headers.append(
"Id");
328 headers.append(
"Old Value");
329 headers.append(
"New Value");
330 headers.append(
"Timestamp");
332 m_historyTable =
new QTableWidget();
333 m_historyTable->setColumnCount(5);
334 m_historyTable->setHorizontalHeaderLabels(headers);
335 m_historyTable->horizontalHeader()->setSectionResizeMode(QHeaderView::ResizeToContents);
336 m_historyTable->horizontalHeader()->setStretchLastSection(
true);
337 m_historyTable->verticalHeader()->setVisible(
false);
338 m_historyTable->setEditTriggers(QAbstractItemView::NoEditTriggers);
339 m_historyTable->setSelectionBehavior(QAbstractItemView::SelectRows);
340 m_historyTable->setSelectionMode(QAbstractItemView::SingleSelection);
341 m_historyTable->setGeometry(QGuiApplication::primaryScreen()->availableGeometry());
343 overviewLayout->addWidget(m_historyTable);
344 overview->setLayout(overviewLayout);
354 QWidget* ControlHealthMonitorWidget::createImagesTab() {
355 QFont fontSmall(
"Arial", 12);
356 QFont fontMedium(
"Arial", 14);
360 QVBoxLayout *imagesLayout =
new QVBoxLayout;
361 imagesLayout->setAlignment(Qt::AlignTop);
362 imagesLayout->setSpacing(15);
363 imagesLayout->addSpacing(10);
366 QGridLayout *tempLayout =
new QGridLayout;
369 QLabel *threeMeasure =
new QLabel(
"Less than 3 valid Measures:");
370 m_imagesMeasuresValue =
new QLabel(
"");
372 QLabel *withoutMeasures =
new QLabel(
"Exceeding convex hull tolerance:");
373 m_imagesHullValue =
new QLabel(
"");
376 m_imagesMeasuresValue->setFont(fontSmall);
377 threeMeasure->setFont(fontSmall);
378 withoutMeasures->setFont(fontSmall);
379 m_imagesHullValue->setFont(fontSmall);
382 QPushButton *button =
new QPushButton(
"View");
383 QPushButton *button2 =
new QPushButton(
"View");
385 connect(button, SIGNAL(clicked()),
this, SLOT(viewImageFewMeasures()));
386 connect(button2, SIGNAL(clicked()),
this, SLOT(viewImageHullTolerance()));
389 tempLayout->addWidget(threeMeasure, 0, 0);
390 tempLayout->addWidget(m_imagesMeasuresValue, 0, 1);
391 tempLayout->addWidget(button, 0, 2);
393 tempLayout->addWidget(withoutMeasures, 1, 0);
394 tempLayout->addWidget(m_imagesHullValue, 1, 1);
395 tempLayout->addWidget(button2, 1, 2);
397 temp->setLayout(tempLayout);
398 imagesLayout->addWidget(temp);
401 m_imagesTable =
new QTableWidget();
403 connect(m_imagesTable, SIGNAL(itemDoubleClicked(QTableWidgetItem *)),
408 headers.append(
"Cube Serial");
410 m_imagesTable->setColumnCount(2);
411 m_imagesTable->setHorizontalHeaderLabels(headers);
412 m_imagesTable->horizontalHeader()->setStretchLastSection(
true);
413 m_imagesTable->verticalHeader()->setVisible(
false);
414 m_imagesTable->setEditTriggers(QAbstractItemView::NoEditTriggers);
415 m_imagesTable->setSelectionBehavior(QAbstractItemView::SelectRows);
416 m_imagesTable->setSelectionMode(QAbstractItemView::ExtendedSelection);
418 m_imagesTable->setShowGrid(
true);
419 m_imagesTable->setGeometry(QGuiApplication::primaryScreen()->availableGeometry());
420 m_imagesTable->horizontalHeader()->setSectionResizeMode(QHeaderView::ResizeToContents);
422 imagesLayout->addSpacing(30);
424 m_imagesShowingLabel =
new QLabel(
"");
425 m_imagesShowingLabel->setFont(fontMedium);
427 QPushButton *viewAllButton =
new QPushButton(
"View All");
428 connect(viewAllButton, SIGNAL(clicked()),
429 this, SLOT(viewImageAll()));
431 QGridLayout *showingLayout =
new QGridLayout;
434 showingLayout->addWidget(m_imagesShowingLabel, 0, 0, 1, 2);
435 showingLayout->addWidget(viewAllButton, 0, 2);
436 showingWidget->setLayout(showingLayout);
438 imagesLayout->addWidget(showingWidget);
439 imagesLayout->addWidget(m_imagesTable);
441 imagesTab->setLayout(imagesLayout);
450 QWidget* ControlHealthMonitorWidget::createPointsTab() {
452 QFont fontSmall(
"Arial", 12);
453 QFont fontMedium(
"Arial", 14);
454 QFont searchFont(
"Seqoe UI Symbol", 12);
458 QVBoxLayout *pointsLayout =
new QVBoxLayout;
459 pointsLayout->setAlignment(Qt::AlignTop);
460 pointsLayout->setSpacing(15);
461 pointsLayout->addSpacing(10);
464 QGridLayout *viewLayout =
new QGridLayout;
467 QLabel *pointsIgnored =
new QLabel(
"Points Ignored:");
468 m_pointsIgnoredLabel =
new QLabel(
"");
470 QLabel *freePoints =
new QLabel(
"Points Free:");
471 m_pointsFreeLabel =
new QLabel(
"");
473 QPalette p = m_pointsFreeProgressbar->palette();
474 p.setColor(QPalette::Highlight, Qt::blue);
475 p.setColor(QPalette::Text, Qt::black);
476 m_pointsFreeProgressbar->setPalette(p);
477 m_pointsFreeProgressbar->setRange(0, 100);
479 QLabel *constrainedPoints =
new QLabel(
"Points Constrained:");
480 m_pointsConstrainedLabel =
new QLabel(
"");
482 m_pointsConstrainedProgressbar->setPalette(p);
483 m_pointsConstrainedProgressbar->setRange(0, 100);
485 QLabel *fixedPoints =
new QLabel(
"Points Fixed:");
486 m_pointsFixedLabel =
new QLabel(
"");
488 m_pointsFixedProgressbar->setPalette(p);
489 m_pointsFixedProgressbar->setRange(0, 100);
491 QLabel *pointsLocked =
new QLabel(
"Points Edit Locked:");
492 m_pointsEditLockedLabel =
new QLabel(
"");
494 QLabel *pointsMeasure =
new QLabel(
"Less than 3 valid Measures:");
495 m_pointsFewMeasuresLabel =
new QLabel(
"");
498 pointsLocked->setFont(fontSmall);
499 m_pointsEditLockedLabel->setFont(fontSmall);
500 pointsMeasure->setFont(fontSmall);
501 m_pointsFewMeasuresLabel->setFont(fontSmall);
502 freePoints->setFont(fontSmall);
503 m_pointsFreeLabel->setFont(fontSmall);
504 fixedPoints->setFont(fontSmall);
505 constrainedPoints->setFont(fontSmall);
506 pointsIgnored->setFont(fontSmall);
507 m_pointsFixedLabel->setFont(fontSmall);
508 m_pointsConstrainedLabel->setFont(fontSmall);
509 m_pointsIgnoredLabel->setFont(fontSmall);
512 QPushButton *viewIgnoredButton =
new QPushButton(
"View");
513 QPushButton *viewLockedButton =
new QPushButton(
"View");
514 QPushButton *viewMeasureButton =
new QPushButton(
"View");
515 QPushButton *viewFreePoints =
new QPushButton(
"View");
516 QPushButton *viewFixedPoints =
new QPushButton(
"View");
517 QPushButton *viewConstrainedPoints =
new QPushButton(
"View");
520 connect(viewIgnoredButton, SIGNAL(clicked()),
this, SLOT(viewPointIgnored()));
521 connect(viewLockedButton, SIGNAL(clicked()),
this, SLOT(viewPointEditLocked()));
522 connect(viewMeasureButton, SIGNAL(clicked()),
this, SLOT(viewPointFewMeasures()));
523 connect(viewFreePoints, SIGNAL(clicked()),
this, SLOT(viewPointFree()));
524 connect(viewFixedPoints, SIGNAL(clicked()),
this, SLOT(viewPointFixed()));
525 connect(viewConstrainedPoints, SIGNAL(clicked()),
this, SLOT(viewPointConstrained()));
528 viewLayout->addWidget(freePoints, 0, 0);
529 viewLayout->addWidget(m_pointsFreeProgressbar, 0, 1);
530 viewLayout->addWidget(viewFreePoints, 0, 2);
532 viewLayout->addWidget(fixedPoints, 1, 0);
533 viewLayout->addWidget(m_pointsFixedProgressbar, 1, 1);
534 viewLayout->addWidget(viewFixedPoints, 1, 2);
536 viewLayout->addWidget(constrainedPoints, 2, 0);
537 viewLayout->addWidget(m_pointsConstrainedProgressbar, 2, 1);
538 viewLayout->addWidget(viewConstrainedPoints, 2, 2);
540 viewLayout->addWidget(pointsIgnored, 3, 0);
541 viewLayout->addWidget(m_pointsIgnoredLabel, 3, 1);
542 viewLayout->addWidget(viewIgnoredButton, 3, 2);
544 viewLayout->addWidget(pointsLocked, 4, 0);
545 viewLayout->addWidget(m_pointsEditLockedLabel, 4, 1);
546 viewLayout->addWidget(viewLockedButton, 4, 2);
548 viewLayout->addWidget(pointsMeasure, 5, 0);
549 viewLayout->addWidget(m_pointsFewMeasuresLabel, 5, 1);
550 viewLayout->addWidget(viewMeasureButton, 5, 2);
552 viewWidget->setLayout(viewLayout);
553 pointsLayout->addWidget(viewWidget);
556 m_pointsTable =
new QTableWidget();
559 headers.append(
"Point ID");
560 headers.append(
"Type");
561 headers.append(
"Ignored");
562 headers.append(
"Rejected");
563 headers.append(
"Edit Locked");
565 m_pointsTable->setColumnCount(6);
566 m_pointsTable->setHorizontalHeaderLabels(headers);
567 m_pointsTable->horizontalHeader()->setStretchLastSection(
true);
568 m_pointsTable->verticalHeader()->setVisible(
false);
569 m_pointsTable->setEditTriggers(QAbstractItemView::NoEditTriggers);
570 m_pointsTable->setSelectionBehavior(QAbstractItemView::SelectRows);
571 m_pointsTable->setSelectionMode(QAbstractItemView::SingleSelection);
572 m_pointsTable->setShowGrid(
true);
573 m_pointsTable->setGeometry(QGuiApplication::primaryScreen()->availableGeometry());
574 m_pointsTable->horizontalHeader()->setSectionResizeMode(QHeaderView::ResizeToContents);
576 connect(m_pointsTable, SIGNAL(itemDoubleClicked(QTableWidgetItem *)),
579 m_pointsShowingLabel =
new QLabel(
"");
580 m_pointsShowingLabel->setFont(fontMedium);
581 QPushButton *showAllButton =
new QPushButton(
"View All");
583 QGridLayout *showLayout =
new QGridLayout;
586 connect(showAllButton, SIGNAL(clicked()),
587 this, SLOT(viewPointAll()));
589 showLayout->addWidget(m_pointsShowingLabel, 0, 0, 1, 2);
590 showLayout->addWidget(showAllButton, 0, 2);
591 showWidget->setLayout(showLayout);
593 pointsLayout->addSpacing(30);
594 pointsLayout->addWidget(showWidget);
595 pointsLayout->addWidget(m_pointsTable);
597 pointsTab->setLayout(pointsLayout);
611 QList<QString> serials;
612 QModelIndexList rows = m_imagesTable->selectionModel()->selectedRows(1);
613 foreach (QModelIndex index, rows) {
614 serials.append(index.data().toString());
616 emit openImageEditor(serials);
630 QModelIndex pointId = m_pointsTable->selectionModel()->selectedIndexes()[1];
632 emit openPointEditor(point);
649 QVariant oldValue, QVariant newValue,
652 m_lastModLabel->setText(
"Last Modification: " + timeStamp);
654 m_historyTable->insertRow(0);
655 m_historyTable->setItem(0, 0,
new QTableWidgetItem(entry));
656 m_historyTable->setItem(0, 1,
new QTableWidgetItem(
id));
657 m_historyTable->setItem(0, 2,
new QTableWidgetItem(oldValue.toString()));
658 m_historyTable->setItem(0, 3,
new QTableWidgetItem(newValue.toString()));
659 m_historyTable->setItem(0, 4,
new QTableWidgetItem(timeStamp));
667 QWidget* ControlHealthMonitorWidget::createGraphTab() {
670 QVBoxLayout *graphLayout =
new QVBoxLayout;
671 graphLayout->setAlignment(Qt::AlignTop);
672 graphLayout->setSpacing(5);
685 graph->setLayout(graphLayout);
695 void ControlHealthMonitorWidget::updateImageTable(QList<QString> serials) {
696 m_imagesTable->setRowCount(0);
697 for (
int i = 0; i < serials.size(); i++) {
698 m_imagesTable->insertRow(i);
699 m_imagesTable->setItem(i, 0,
new QTableWidgetItem(
toString(i + 1)));
700 m_imagesTable->setItem(i, 1,
new QTableWidgetItem(serials.at(i)));
709 void ControlHealthMonitorWidget::updatePointTable(QList<ControlPoint*> points) {
710 m_pointsTable->setRowCount(0);
711 for (
int i = 0; i < points.size(); i++) {
712 ControlPoint *point = points.at(i);
713 m_pointsTable->insertRow(i);
714 m_pointsTable->setItem(i, 0,
new QTableWidgetItem(
toString(i + 1)));
715 m_pointsTable->setItem(i, 1,
new QTableWidgetItem(point->GetId()));
716 m_pointsTable->setItem(i, 2,
new QTableWidgetItem(point->GetPointTypeString()));
717 m_pointsTable->setItem(i, 3,
new QTableWidgetItem(
toString(point->IsIgnored())));
718 m_pointsTable->setItem(i, 4,
new QTableWidgetItem(
toString(point->IsRejected())));
719 m_pointsTable->setItem(i, 5,
new QTableWidgetItem(
toString(point->IsEditLocked())));
728 void ControlHealthMonitorWidget::viewPointAll() {
730 m_pointsShowingLabel->setText(
"Showing: All Points <sup>" +
740 void ControlHealthMonitorWidget::viewPointIgnored() {
742 m_pointsShowingLabel->setText(
"Showing: Ignored Points <sup>" +
752 void ControlHealthMonitorWidget::viewPointFree() {
754 m_pointsShowingLabel->setText(
"Showing: Free Points <sup>" +
764 void ControlHealthMonitorWidget::viewPointFixed() {
766 m_pointsShowingLabel->setText(
"Showing: Fixed Points <sup>" +
776 void ControlHealthMonitorWidget::viewPointConstrained() {
778 m_pointsShowingLabel->setText(
"Showing: Constrained Points <sup>" +
788 void ControlHealthMonitorWidget::viewPointEditLocked() {
790 m_pointsShowingLabel->setText(
"Showing: Locked Points <sup>" +
801 void ControlHealthMonitorWidget::viewPointFewMeasures() {
803 m_pointsShowingLabel->setText(
"Showing: Points with less than 3 Measures <sup>" +
813 void ControlHealthMonitorWidget::viewImageAll() {
815 m_imagesShowingLabel->setText(
"Showing: All Images <sup>" +
825 void ControlHealthMonitorWidget::viewImageFewMeasures() {
827 m_imagesShowingLabel->setText(
"Showing: Images with less than 3 Measures <sup>" +
837 void ControlHealthMonitorWidget::viewImageHullTolerance() {
839 m_imagesShowingLabel->setText(
"Showing: Images below a hull tolerance of 75% <sup>" +
850 delete m_historyTable;
851 delete m_imagesHullValue;
852 delete m_imagesMeasuresValue;
853 delete m_imagesShowingLabel;
854 delete m_imagesTable;
855 delete m_lastModLabel;
856 delete m_numImagesLabel;
857 delete m_numMeasuresLabel;
858 delete m_numPointsLabel;
860 delete m_pointsEditLockedLabel;
861 delete m_pointsFewMeasuresLabel;
862 delete m_pointsIgnoredLabel;
863 delete m_pointsShowingLabel;
864 delete m_pointsTable;
866 delete m_statusDetails;
867 delete m_statusLabel;
870 m_historyTable = NULL;
871 m_imagesHullValue = NULL;
872 m_imagesMeasuresValue = NULL;
873 m_imagesShowingLabel = NULL;
874 m_imagesTable = NULL;
875 m_lastModLabel = NULL;
876 m_numImagesLabel = NULL;
877 m_numMeasuresLabel = NULL;
878 m_numPointsLabel = NULL;
880 m_pointsEditLockedLabel = NULL;
881 m_pointsFewMeasuresLabel = NULL;
882 m_pointsIgnoredLabel = NULL;
883 m_pointsShowingLabel = NULL;
884 m_pointsTable = NULL;
886 m_statusDetails = NULL;
887 m_statusLabel = NULL;
QList< QString > getCubeSerials()
This method is designed to return all cube serials present in the Control Network.
QList< ControlPoint * > getAllPoints()
This method is designed to return all points in the Control Network.
QList< ControlPoint * > getFixedPoints()
This method is designed to return all fixed points in the Control Network.
QString getNetworkId()
This method is designed to return networkId of the observed Control Network.
ControlPoint * getPoint(QString id)
This method is designed to return the Control Point with the associated point id from the Control Net...
int numFixedPoints()
This method is designed to return the number of fixed points in the Control Network.
QString getStatus()
This method is designed to return the current status of the network.
int numIgnoredPoints()
This method is designed to return the number of ignored points in the Control Network.
int numLockedPoints()
This method is designed to return the number of edit locked points in the Control Network.
int numPoints()
This method is designed to return the number of points in the Control Network.
QString getStatusDetails()
This method is designed to return details for the status of the network.
QList< QString > getImagesBelowHullTolerance(int num=75)
This method is designed to return a QList containing cube serials for all images that fall below a co...
int numImagesBelowMeasureThreshold(int num=3)
This method is designed to return the number of images that fall below a measure threshold.
int numImages()
This method is designed to return the number of images in the Control Network.
int numFreePoints()
This method is designed to return the number of free points in the Control Network.
int numPointsBelowMeasureThreshold(int num=3)
This method is designed to return the number of points that fall below a measure threshold.
int numImagesBelowHullTolerance(int tolerance=75)
This method is designed to return the number of images that fall below a hull tolerance.
QList< QString > getImagesBelowMeasureThreshold(int num=3)
This method is designed to return a QList containing cube serials for all images that fall below a me...
QList< ControlPoint * > getIgnoredPoints()
This method is designed to return all ignored points in the Control Network.
QList< ControlPoint * > getLockedPoints()
This method is designed to return all edit locked points in the Control Network.
QList< ControlPoint * > getFreePoints()
This method is designed to return all free points in the Control Network.
QList< ControlPoint * > getConstrainedPoints()
This method is designed to return all constrained points in the Control Network.
QList< ControlPoint * > getPointsBelowMeasureThreshold(int num=3)
This method is designed to return all points that fall below a measure threshold.
int numConstrainedPoints()
This method is designed to return the number of constrained points in the Control Network.
int numMeasures()
This method is designed to return the number of measures in the Control Network.
This is free and unencumbered software released into the public domain.
QString toString(bool boolToConvert)
Global function to convert a boolean to a string.