27 #include "../../../dataaccess/dataset/DataSet.h" 
   28 #include "../../../dataaccess/utils/Utils.h" 
   31 #include "ui_ArithmeticOpWizardPageForm.h" 
   34 #include <QApplication> 
   35 #include <QGridLayout> 
   36 #include <QMessageBox> 
   44   : QWizardPage(parent),
 
   45     m_ui(new Ui::ArithmeticOpWizardPageForm)
 
   51   this->setTitle(tr(
"Arithmetic Operations"));
 
   52   this->setSubTitle(tr(
"Select the type of arithmetic operation and set their specific parameters."));
 
   54   m_ui->m_valueLineEdit->setValidator(
new QDoubleValidator(
this));
 
   55   m_ui->m_gainLineEdit->setValidator(
new QDoubleValidator(
this));
 
   56   m_ui->m_offsetLineEdit->setValidator(
new QDoubleValidator(
this));
 
   58   m_ui->m_addValueOpToolButton->setIcon(QIcon::fromTheme(
"list-add"));
 
   59   m_ui->m_addRasterOpToolButton->setIcon(QIcon::fromTheme(
"list-add"));
 
   60   m_ui->m_undoToolButton->setIcon(QIcon::fromTheme(
"edit-undo"));
 
   61   m_ui->m_redoToolButton->setIcon(QIcon::fromTheme(
"edit-redo"));
 
   62   m_ui->m_clearToolButton->setIcon(QIcon::fromTheme(
"edit-clear"));
 
   63   m_ui->m_validateToolButton->setIcon(QIcon::fromTheme(
"check"));
 
   67   m_ui->m_undoToolButton->setEnabled(
false);
 
   68   m_ui->m_redoToolButton->setEnabled(
false);
 
   70   m_ui->m_tabWidget->removeTab(1);
 
   96   m_expressionHistory.clear();
 
  107   m_layerList = layerList;
 
  110   m_ui->m_layerComboBox->clear();
 
  111   m_ui->m_layerAComboBox->clear();
 
  112   m_ui->m_layerBComboBox->clear();
 
  113   m_ui->m_rasterIdComboBox->clear();
 
  115   std::list<te::map::AbstractLayerPtr>::iterator it = m_layerList.begin();
 
  116   std::vector<std::size_t> bands;
 
  120   while(it != m_layerList.end())
 
  124     std::auto_ptr<te::da::DataSetType> dst = l->getSchema();
 
  126     if(dst.get() && dst->hasRaster())
 
  128       m_ui->m_layerComboBox->addItem(l->getTitle().c_str(), QVariant::fromValue(l));
 
  129       m_ui->m_layerAComboBox->addItem(l->getTitle().c_str(), QVariant::fromValue(l));
 
  130       m_ui->m_layerBComboBox->addItem(l->getTitle().c_str(), QVariant::fromValue(l));
 
  132       m_ui->m_rasterIdComboBox->addItem(
"R" + QString::number(count));
 
  140   layerComboBoxActivated(0);
 
  141   layerAComboBoxActivated(0);
 
  142   layerBComboBoxActivated(0);
 
  149   if(m_ui->m_tabWidget->currentIndex() == 1)
 
  153   else if(m_ui->m_op1RadioButton->isChecked())
 
  155   else if(m_ui->m_op2RadioButton->isChecked())
 
  157   else if(m_ui->m_op3RadioButton->isChecked())
 
  159   else if(m_ui->m_op4RadioButton->isChecked())
 
  161   else if(m_ui->m_op5RadioButton->isChecked())
 
  163   else if(m_ui->m_op6RadioButton->isChecked())
 
  172   int curIdx = m_ui->m_layerAComboBox->currentIndex();
 
  173   QVariant varLayer = m_ui->m_layerAComboBox->itemData(curIdx, Qt::UserRole);
 
  181   return m_ui->m_bandAComboBox->currentText().toInt();
 
  186   int curIdx = m_ui->m_layerBComboBox->currentIndex();
 
  187   QVariant varLayer = m_ui->m_layerBComboBox->itemData(curIdx, Qt::UserRole);
 
  195   return m_ui->m_bandBComboBox->currentText().toInt();
 
  202   if(!m_ui->m_gainLineEdit->text().isEmpty())
 
  203     val = m_ui->m_gainLineEdit->text().toDouble();
 
  212   if(!m_ui->m_offsetLineEdit->text().isEmpty())
 
  213     val = m_ui->m_offsetLineEdit->text().toDouble();
 
  220   return m_ui->m_normalizeCheckBox->isChecked();
 
  225   return m_ui->m_expressionLineEdit->text().toLatin1().data();
 
  230   getRasterBands(m_ui->m_layerComboBox, index, m_ui->m_bandComboBox);
 
  232   m_ui->m_rasterIdComboBox->setCurrentIndex(index);
 
  237   getRasterBands(m_ui->m_layerAComboBox, index, m_ui->m_bandAComboBox);
 
  242   getRasterBands(m_ui->m_layerBComboBox, index, m_ui->m_bandBComboBox);
 
  247   m_ui->m_expressionLineEdit->insert(
"( ");
 
  249   updateExpressionHistory();
 
  254   m_ui->m_expressionLineEdit->insert(
") ");
 
  256   updateExpressionHistory();
 
  261   m_ui->m_expressionLineEdit->insert(
"+ ");
 
  263   updateExpressionHistory();
 
  268   m_ui->m_expressionLineEdit->insert(
"- ");
 
  270   updateExpressionHistory();
 
  275   m_ui->m_expressionLineEdit->insert(
"* ");
 
  277   updateExpressionHistory();
 
  282   m_ui->m_expressionLineEdit->insert(
"/ ");
 
  284   updateExpressionHistory();
 
  289   m_ui->m_expressionLineEdit->insert(m_ui->m_valueLineEdit->text() + 
" ");
 
  291   updateExpressionHistory();
 
  296   m_ui->m_expressionLineEdit->insert(m_ui->m_rasterIdComboBox->currentText() + 
":" + m_ui->m_bandComboBox->currentText() + 
" ");
 
  298   updateExpressionHistory();
 
  303   --m_expressionHistoryCounter;
 
  305   if(m_expressionHistoryCounter >= (
int)m_expressionHistory.size() || m_expressionHistoryCounter < 0)
 
  307     m_expressionHistoryCounter = 0;
 
  309     m_expressionHistory.clear();
 
  311     m_ui->m_expressionLineEdit->clear();
 
  313     m_ui->m_undoToolButton->setEnabled(
false);
 
  314     m_ui->m_redoToolButton->setEnabled(
false);
 
  319   std::string expression = m_expressionHistory[m_expressionHistoryCounter];
 
  321   m_ui->m_expressionLineEdit->setText(expression.c_str());
 
  323   if(m_expressionHistoryCounter < 0)
 
  324     m_ui->m_undoToolButton->setEnabled(
false);
 
  326   m_ui->m_redoToolButton->setEnabled(
true);
 
  331   ++m_expressionHistoryCounter;
 
  333   if(m_expressionHistoryCounter >= (
int)m_expressionHistory.size() || m_expressionHistoryCounter < 0)
 
  335     m_expressionHistoryCounter = (int)m_expressionHistory.size() - 1;
 
  337     m_ui->m_redoToolButton->setEnabled(
false);
 
  342   std::string expression = m_expressionHistory[m_expressionHistoryCounter];
 
  344   m_ui->m_expressionLineEdit->setText(expression.c_str());
 
  346   if(m_expressionHistoryCounter >=  (
int)m_expressionHistory.size() - 1)
 
  347     m_ui->m_redoToolButton->setEnabled(
false);
 
  349   m_ui->m_undoToolButton->setEnabled(
true);
 
  354   m_expressionHistoryCounter = 0;
 
  356   m_expressionHistory.clear();
 
  358   m_ui->m_expressionLineEdit->clear();
 
  360   m_ui->m_undoToolButton->setEnabled(
false);
 
  361   m_ui->m_redoToolButton->setEnabled(
false);
 
  371   QVariant varLayer = layer->itemData(index, Qt::UserRole);
 
  375   std::auto_ptr<te::da::DataSet> ds = l->getData();
 
  377   std::auto_ptr<te::rst::Raster> rst = ds->getRaster(rpos);
 
  384     for(std::size_t t = 0; t < rst->getNumberOfBands(); ++t)
 
  385       band->addItem(QString::number(t));
 
  391   m_expressionHistory.push_back(m_ui->m_expressionLineEdit->text().toLatin1().data());
 
  393   m_ui->m_undoToolButton->setEnabled(
true);
 
  394   m_ui->m_redoToolButton->setEnabled(
false);
 
  396   m_expressionHistoryCounter = (int)m_expressionHistory.size() - 1;
 
void updateExpressionHistory()
 
void layerBComboBoxActivated(int index)
 
void minusToolButtonClicked()
 
void setList(std::list< te::map::AbstractLayerPtr > &layerList)
 
void redoToolButtonClicked()
 
This file defines a class for a ArithmeticOp Wizard page. 
 
void validateToolButtonClicked()
 
std::string getUserDefinedExpression()
 
te::map::AbstractLayerPtr getLayerRasterA()
 
int m_expressionHistoryCounter
 
ArithmeticOpWizardPage(QWidget *parent=0)
 
void clearToolButtonClicked()
 
void plusToolButtonClicked()
 
A Qt dialog that allows users to run a arithmeticOp operation defined by RP module. 
 
std::auto_ptr< Ui::ArithmeticOpWizardPageForm > m_ui
 
void multiToolButtonClicked()
 
te::map::AbstractLayerPtr getLayerRasterB()
 
void addValueOpToolButtonClicked()
 
void leftBracketToolButtonClicked()
 
Q_DECLARE_METATYPE(te::map::AbstractLayerPtr)
 
~ArithmeticOpWizardPage()
 
void layerComboBoxActivated(int index)
 
void layerAComboBoxActivated(int index)
 
void undoToolButtonClicked()
 
TEDATAACCESSEXPORT std::size_t GetFirstPropertyPos(const te::da::DataSet *dataset, int datatype)
 
void addRasterOpToolButtonClicked()
 
void rightBracketToolButtonClicked()
 
boost::intrusive_ptr< AbstractLayer > AbstractLayerPtr
 
void getRasterBands(QComboBox *layer, int index, QComboBox *band)
 
void divToolButtonClicked()