3 #include "ChipViewportsWidget.h"
10 #include <QMessageBox>
15 #include "ControlMeasureEditWidget.h"
25 #include "MainWindow.h"
28 #include "PvlEditDialog.h"
33 #include "ViewportMainWindow.h"
47 ChipViewportsWidget::ChipViewportsWidget (
QWidget *parent) :
QWidget(parent) {
54 m_serialNumberList = NULL;
65 ChipViewportsWidget::~ChipViewportsWidget () {
81 setWindowTitle(
"ChipViewports");
82 setObjectName(
"ChipViewportsWidget");
83 connect(
this, SIGNAL(destroyed(
QObject *)),
this, SLOT(clearPoint()));
87 m_chipViewportsLayout =
new QGridLayout;
90 centralWidget->setLayout(m_chipViewportsLayout);
92 QScrollArea *scrollArea =
new QScrollArea();
93 scrollArea->setObjectName(
"ChipViewportsWidgetScroll");
94 scrollArea->setWidgetResizable(
true);
95 scrollArea->setWidget(centralWidget);
96 centralWidget->adjustSize();
98 QVBoxLayout *mainLayout =
new QVBoxLayout;
100 m_ptIdValue =
new QLabel();
102 QCheckBox *
showPoints =
new QCheckBox(
"Show control points");
103 showPoints->setToolTip(
"Draw control point crosshairs");
104 showPoints->setWhatsThis(
"This will toggle whether crosshairs are drawn"
105 " for the control points located within the measure''s"
106 " view. For areas of dense measurements, turning this"
107 " off will allow easier viewing of features.");
108 connect(showPoints, SIGNAL(toggled(
bool)),
this, SLOT(
showPoints(
bool)));
109 showPoints->setChecked(
true);
111 QCheckBox *geomChips =
new QCheckBox(
"Geom Chips to Reference");
112 geomChips->setToolTip(
"Geom Chips to Reference Control Measure");
113 geomChips->setWhatsThis(
"This will toggle whether chips are geomed to"
114 " the reference control measure.");
115 connect(geomChips, SIGNAL(toggled(
bool)),
this, SLOT(geomChips(
bool)));
116 geomChips->setChecked(
false);
118 QHBoxLayout *pointsGeomLayout =
new QHBoxLayout;
119 pointsGeomLayout->addWidget(showPoints);
120 pointsGeomLayout->addWidget(geomChips);
121 pointsGeomLayout->addStretch();
123 mainLayout->addWidget(m_ptIdValue);
124 mainLayout->addLayout(pointsGeomLayout);
125 mainLayout->addWidget(scrollArea);
126 setLayout(mainLayout);
133 void ChipViewportsWidget::createActions() {
139 void ChipViewportsWidget::setSerialNumberList(SerialNumberList *snList) {
143 m_serialNumberList = snList;
160 m_cnetFileName = cnetFilename;
164 emit newControlNetwork(cnet);
169 void ChipViewportsWidget::setPoint(
ControlPoint *controlPoint) {
182 if (m_chipViewports.size() > 0) clearPoint();
183 m_controlPoint = controlPoint;
186 QString CPId = m_controlPoint->GetId();
187 QString ptId(
"Point ID: ");
188 ptId += (QString) CPId;
189 m_ptIdValue->setText(ptId);
193 qDebug()<<
" Control Net = "<<m_controlNet;
196 if (m_controlPoint->IsReferenceExplicit()) {
200 m_controlPoint->GetRefMeasure()->GetCubeSerialNumber()));
203 chip->
TackCube(measure->GetSample(), measure->GetLine());
204 chip->
Load(*measureCube);
206 measureChipViewport->
setChip(chip, measureCube);
209 m_chipViewports.append(measureChipViewport);
214 for (
int i = 0; i < m_controlPoint->GetNumMeasures(); i++) {
215 ControlMeasure *measure = (*m_controlPoint)[i];
216 if (!m_controlPoint->IsReferenceExplicit() && i == 0) {
221 else if (m_controlPoint->IsReferenceExplicit() &&
222 (QString) measure->GetCubeSerialNumber() == m_controlPoint->GetReferenceSN()) {
228 Cube *measureCube =
new Cube(m_serialNumberList->
fileName(measure->GetCubeSerialNumber()));
231 chip->TackCube(measure->GetSample(), measure->GetLine());
232 chip->Load(*measureCube);
233 ChipViewport *measureChipViewport =
new ChipViewport(
VIEWSIZE,
VIEWSIZE,
this);
234 measureChipViewport->setChip(chip, measureCube);
235 measureChipViewport->setControlNet(m_controlNet);
236 measureChipViewport->setPoints(
true);
237 m_chipViewports.append(measureChipViewport);
243 int gridDimension = sqrt(qreal(m_chipViewports.size())) -1;
246 foreach(ChipViewport *measurechipViewport, m_chipViewports) {
247 if (x > gridDimension) {
251 m_chipViewportsLayout->addWidget(measurechipViewport, y, x);
264 void ChipViewportsWidget::readSettings() {
265 FileName config(
"$HOME/.Isis/qview/ChipViewportsWidget.config");
266 QSettings settings(config.expanded(),
267 QSettings::NativeFormat);
268 QPoint pos = settings.value(
"pos", QPoint(300, 100)).toPoint();
269 QSize size = settings.value(
"size", QSize(900, 500)).toSize();
281 void ChipViewportsWidget::writeSettings()
const {
284 if (!this->isVisible())
return;
285 FileName config(
"$HOME/.Isis/qview/ChipViewportsWidget.config");
286 QSettings settings(config.expanded(),
287 QSettings::NativeFormat);
288 settings.setValue(
"pos", this->pos());
289 settings.setValue(
"size", this->size());
304 void ChipViewportsWidget::geomChips(
bool geomChips) {
307 for (
int i=1; i<m_chipViewports.size(); i++) {
308 m_chipViewports.at(i)->nogeomChip();
313 for (
int i=1; i<m_chipViewports.size(); i++) {
314 m_chipViewports.at(i)->geomChip(m_chipViewports.at(0)->chip(),
315 m_chipViewports.at(0)->chipCube());
322 void ChipViewportsWidget::clearPoint() {
324 if (m_chipViewports.size() > 0) {
325 foreach (ChipViewport *measureChipViewport, m_chipViewports) {
327 delete measureChipViewport;
329 m_chipViewports.clear();
A small chip of data used for pattern matching.
void TackCube(const double cubeSample, const double cubeLine)
This sets which cube position will be located at the chip tack position.
void setControlNet(ControlNet *newControlNet)
sets the ControlNet to be used for drawing measure locations
QString fileName(const QString &sn)
Return a filename given a serial number.
void Load(Cube &cube, const double rotation=0.0, const double scale=1.0, const int band=1)
Load cube data into the Chip.
Unless noted otherwise, the portions of Isis written by the USGS are public domain.
void setChip(Chip *chip, Cube *chipCube)
Set chip.
void setPoints(bool checked)
Slot to set whether control points are drawn.
const int VIEWSIZE
Constant representing the length and width of the chip viewports.
Unless noted otherwise, the portions of Isis written by the USGS are public domain.
IO Handler for Isis Cubes.