3 #include "ChipViewportsWidget.h" 10 #include <QMessageBox> 11 #include <QMouseEvent> 16 #include "ControlMeasureEditWidget.h" 26 #include "MainWindow.h" 29 #include "PvlEditDialog.h" 34 #include "ViewportMainWindow.h" 48 ChipViewportsWidget::ChipViewportsWidget (
QWidget *parent) :
QWidget(parent) {
55 m_serialNumberList = NULL;
61 installEventFilter(
this);
68 ChipViewportsWidget::~ChipViewportsWidget () {
84 setWindowTitle(
"ChipViewports");
85 setObjectName(
"ChipViewportsWidget");
86 connect(
this, SIGNAL(destroyed(
QObject *)),
this, SLOT(clearPoint()));
90 m_chipViewportsLayout =
new QGridLayout;
93 centralWidget->setLayout(m_chipViewportsLayout);
95 QScrollArea *scrollArea =
new QScrollArea();
96 scrollArea->setObjectName(
"ChipViewportsWidgetScroll");
97 scrollArea->setWidgetResizable(
true);
98 scrollArea->setWidget(centralWidget);
99 centralWidget->adjustSize();
101 QVBoxLayout *mainLayout =
new QVBoxLayout;
103 m_ptIdValue =
new QLabel();
105 QCheckBox *
showPoints =
new QCheckBox(
"Show control points");
106 showPoints->setToolTip(
"Draw control point crosshairs");
107 showPoints->setWhatsThis(
"This will toggle whether crosshairs are drawn" 108 " for the control points located within the measure''s" 109 " view. For areas of dense measurements, turning this" 110 " off will allow easier viewing of features.");
114 QCheckBox *geomChips =
new QCheckBox(
"Geom Chips to Reference");
115 geomChips->setToolTip(
"Geom Chips to Reference Control Measure");
116 geomChips->setWhatsThis(
"This will toggle whether chips are geomed to" 117 " the reference control measure.");
118 connect(geomChips, SIGNAL(toggled(
bool)),
this, SLOT(geomChips(
bool)));
119 geomChips->setChecked(
false);
121 QHBoxLayout *pointsGeomLayout =
new QHBoxLayout;
123 pointsGeomLayout->addWidget(geomChips);
124 pointsGeomLayout->addStretch();
126 mainLayout->addWidget(m_ptIdValue);
127 mainLayout->addLayout(pointsGeomLayout);
128 mainLayout->addWidget(scrollArea);
129 setLayout(mainLayout);
136 void ChipViewportsWidget::createActions() {
142 void ChipViewportsWidget::setSerialNumberList(SerialNumberList *snList) {
146 m_serialNumberList = snList;
163 m_cnetFileName = cnetFilename;
167 emit newControlNetwork(cnet);
172 void ChipViewportsWidget::setPoint(
ControlPoint *controlPoint) {
185 if (m_chipViewports.size() > 0) clearPoint();
186 m_controlPoint = controlPoint;
189 QString CPId = m_controlPoint->GetId();
190 QString ptId(
"Point ID: ");
191 ptId += (QString) CPId;
192 m_ptIdValue->setText(ptId);
199 if (m_controlPoint->IsReferenceExplicit()) {
203 m_controlPoint->GetRefMeasure()->GetCubeSerialNumber()));
206 chip->
TackCube(measure->GetSample(), measure->GetLine());
207 chip->
Load(*measureCube);
209 measureChipViewport->
setChip(chip, measureCube);
212 m_chipViewports.append(measureChipViewport);
217 for (
int i = 0; i < m_controlPoint->GetNumMeasures(); i++) {
218 ControlMeasure *measure = (*m_controlPoint)[i];
219 if (!m_controlPoint->IsReferenceExplicit() && i == 0) {
224 else if (m_controlPoint->IsReferenceExplicit() &&
225 (QString) measure->GetCubeSerialNumber() == m_controlPoint->GetReferenceSN()) {
231 Cube *measureCube =
new Cube(m_serialNumberList->
fileName(measure->GetCubeSerialNumber()));
234 chip->TackCube(measure->GetSample(), measure->GetLine());
235 chip->Load(*measureCube);
236 ChipViewport *measureChipViewport =
new ChipViewport(
VIEWSIZE,
VIEWSIZE,
this);
237 measureChipViewport->setChip(chip, measureCube);
238 measureChipViewport->setControlNet(m_controlNet);
239 measureChipViewport->setPoints(
true);
240 m_chipViewports.append(measureChipViewport);
246 int gridDimension = sqrt(qreal(m_chipViewports.size())) -1;
249 foreach(ChipViewport *measurechipViewport, m_chipViewports) {
250 if (x > gridDimension) {
254 m_chipViewportsLayout->addWidget(measurechipViewport, y, x);
267 void ChipViewportsWidget::readSettings() {
268 FileName config(
"$HOME/.Isis/qview/ChipViewportsWidget.config");
269 QSettings settings(config.expanded(),
270 QSettings::NativeFormat);
271 QPoint pos = settings.value(
"pos", QPoint(300, 100)).toPoint();
272 QSize size = settings.value(
"size", QSize(900, 500)).toSize();
284 void ChipViewportsWidget::writeSettings()
const {
287 if (!this->isVisible())
return;
288 FileName config(
"$HOME/.Isis/qview/ChipViewportsWidget.config");
289 QSettings settings(config.expanded(),
290 QSettings::NativeFormat);
291 settings.setValue(
"pos", this->pos());
292 settings.setValue(
"size", this->size());
307 void ChipViewportsWidget::geomChips(
bool geomChips) {
310 for (
int i=1; i<m_chipViewports.size(); i++) {
311 m_chipViewports.at(i)->nogeomChip();
316 for (
int i=1; i<m_chipViewports.size(); i++) {
317 m_chipViewports.at(i)->geomChip(m_chipViewports.at(0)->chip(),
318 m_chipViewports.at(0)->chipCube());
325 void ChipViewportsWidget::clearPoint() {
327 if (m_chipViewports.size() > 0) {
328 foreach (ChipViewport *measureChipViewport, m_chipViewports) {
330 delete measureChipViewport;
332 m_chipViewports.clear();
338 bool ChipViewportsWidget::eventFilter(
QObject *
object, QEvent *event) {
340 bool blockEvent =
false;
342 switch (event->type()) {
343 case QEvent::MouseButtonPress: {
344 mousePressEvent(
object, (QMouseEvent *)event);
356 void ChipViewportsWidget::mousePressEvent(
QObject *
object, QMouseEvent *event) {
358 if (event->button() == Qt::RightButton) {
359 qDebug()<<
"ChipViewportsWidget::mousePressEvent right mouse";
361 ChipViewport *chipViewport = qobject_cast<ChipViewport *>(focusWidget());
365 QAction *setReferenceMeasureAction =
new QAction(tr(
"Set as Reference Measure"),
this);
366 contextMenu.addAction(setReferenceMeasureAction);
369 contextMenu.exec(qobject_cast<QWidget *>(
object)->mapToGlobal(event->pos()));
371 if (chosenAction == setReferenceMeasureAction) {
372 qDebug()<<
"ChipViewportsWidget::mousePressEvent setRefMeasureAction chipViewport = "<<chipViewport;
A small chip of data used for pattern matching.
Namespace for the standard library.
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.
Namespace for ISIS/Bullet specific routines.
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.