void SpectralLibraryMatchResults::elementModified(Subject& subject, const std::string& signal, const boost::any& value) { // check for rename RasterElement* pRaster = dynamic_cast<RasterElement*>(&subject); if (pRaster != NULL) { ResultsPage* pPage = getPage(pRaster); if (pPage != NULL) { int index = mpTabWidget->indexOf(pPage); if (index != -1 && mpTabWidget->tabToolTip(index).toStdString() != pRaster->getName()) { mpTabWidget->setTabText(index, QString::fromStdString(pRaster->getDisplayName(true))); mpTabWidget->setTabToolTip(index, QString::fromStdString(pRaster->getName())); } } } }
bool PropertiesRasterLayer::initialize(SessionItem* pSessionItem) { mpRasterLayer = dynamic_cast<RasterLayer*>(pSessionItem); if (mpRasterLayer == NULL) { return false; } mInitializing = true; // Populate the raster element combos with raster elements of the same size as the layer element mRasterElements.clear(); QStringList elementNames; RasterElement* pRasterElement = dynamic_cast<RasterElement*>(mpRasterLayer->getDataElement()); if (pRasterElement != NULL) { const RasterDataDescriptor* pDescriptor = dynamic_cast<const RasterDataDescriptor*>(pRasterElement->getDataDescriptor()); if (pDescriptor != NULL) { unsigned int rows = pDescriptor->getRowCount(); unsigned int columns = pDescriptor->getColumnCount(); Service<ModelServices> pModel; vector<DataElement*> rasterElements = pModel->getElements("RasterElement"); for (unsigned int i = 0; i < rasterElements.size(); ++i) { RasterElement* pCurrentRasterElement = dynamic_cast<RasterElement*>(rasterElements[i]); if (pCurrentRasterElement != NULL) { unsigned int currentRows = 0; unsigned int currentColumns = 0; const RasterDataDescriptor* pCurrentDescriptor = dynamic_cast<const RasterDataDescriptor*>(pCurrentRasterElement->getDataDescriptor()); if (pCurrentDescriptor != NULL) { currentRows = pCurrentDescriptor->getRowCount(); currentColumns = pCurrentDescriptor->getColumnCount(); } if ((currentRows == rows) && (currentColumns == columns)) { mRasterElements.push_back(pCurrentRasterElement); string displayName = pCurrentRasterElement->getDisplayName(); if (displayName.empty() == true) { displayName = pCurrentRasterElement->getName(); } if (displayName.empty() == false) { elementNames.append(QString::fromStdString(displayName)); } } } } } } mpGrayElementCombo->clear(); mpGrayElementCombo->addItems(elementNames); mpRedElementCombo->clear(); mpRedElementCombo->addItems(elementNames); mpGreenElementCombo->clear(); mpGreenElementCombo->addItems(elementNames); mpBlueElementCombo->clear(); mpBlueElementCombo->addItems(elementNames); // Display configuration DisplayMode displayMode = mpRasterLayer->getDisplayMode(); if (displayMode == GRAYSCALE_MODE) { mpDisplayModeCombo->setCurrentIndex(0); } else if (displayMode == RGB_MODE) { mpDisplayModeCombo->setCurrentIndex(1); } mpComplexComponentCombo->setCurrentValue(mpRasterLayer->getComplexComponent()); mpOpacitySpin->setValue(static_cast<int>(mpRasterLayer->getAlpha())); // Grayscale int grayIndex = getElementIndex(mpRasterLayer->getDisplayedRasterElement(GRAY)); mpGrayElementCombo->setCurrentIndex(grayIndex); double dGrayLower = 0.0; double dGrayUpper = 0.0; mpRasterLayer->getStretchValues(GRAY, dGrayLower, dGrayUpper); mpGrayLowerSpin->setValue(dGrayLower); mpGrayUpperSpin->setValue(dGrayUpper); mGrayUnits = mpRasterLayer->getStretchUnits(GRAY); mpGrayUnitsCombo->setCurrentValue(mGrayUnits); mpGrayStretchTypeCombo->setCurrentValue(mpRasterLayer->getStretchType(GRAYSCALE_MODE)); // RGB int redIndex = getElementIndex(mpRasterLayer->getDisplayedRasterElement(RED)); mpRedElementCombo->setCurrentIndex(redIndex); int greenIndex = getElementIndex(mpRasterLayer->getDisplayedRasterElement(GREEN)); mpGreenElementCombo->setCurrentIndex(greenIndex); int blueIndex = getElementIndex(mpRasterLayer->getDisplayedRasterElement(BLUE)); mpBlueElementCombo->setCurrentIndex(blueIndex); double dRedLower = 0.0; double dRedUpper = 0.0; double dGreenLower = 0.0; double dGreenUpper = 0.0; double dBlueLower = 0.0; double dBlueUpper = 0.0; mpRasterLayer->getStretchValues(RED, dRedLower, dRedUpper); mpRasterLayer->getStretchValues(GREEN, dGreenLower, dGreenUpper); mpRasterLayer->getStretchValues(BLUE, dBlueLower, dBlueUpper); mpRedLowerSpin->setValue(dRedLower); mpRedUpperSpin->setValue(dRedUpper); mpGreenLowerSpin->setValue(dGreenLower); mpGreenUpperSpin->setValue(dGreenUpper); mpBlueLowerSpin->setValue(dBlueLower); mpBlueUpperSpin->setValue(dBlueUpper); mRedUnits = mpRasterLayer->getStretchUnits(RED); mGreenUnits = mpRasterLayer->getStretchUnits(GREEN); mBlueUnits = mpRasterLayer->getStretchUnits(BLUE); mpRedUnitsCombo->setCurrentValue(mRedUnits); mpGreenUnitsCombo->setCurrentValue(mGreenUnits); mpBlueUnitsCombo->setCurrentValue(mBlueUnits); mpRgbStretchTypeCombo->setCurrentValue(mpRasterLayer->getStretchType(RGB_MODE)); // Graphics acceleration mpAccelerationCheck->setChecked(mpRasterLayer->isGpuImageEnabled()); mpFilterCheck->setEnabled(mpRasterLayer->isGpuImageEnabled()); mpFilterList->setEnabled(false); mpFilterList->clearSelection(); if (mpFilterCheck->isEnabled()) { vector<string> filters = mpRasterLayer->getEnabledFilterNames(); mpFilterCheck->setChecked(!(filters.empty())); mpFilterList->setEnabled(!(filters.empty())); for (vector<string>::iterator iter = filters.begin(); iter != filters.end(); ++iter) { QString filterName = QString::fromStdString(*iter); if (filterName.isEmpty() == false) { QList<QListWidgetItem*> filterItems = mpFilterList->findItems(filterName, Qt::MatchExactly); for (int i = 0; i < filterItems.count(); ++i) { QListWidgetItem* pItem = filterItems[i]; if (pItem != NULL) { pItem->setSelected(true); } } } } } resetModifiers(); mInitializing = false; return true; }