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.