21 #include "mainwindow.h" 22 #include "ui_mainwindow.h" 23 #include <QFileDialog> 25 #include <QMessageBox> 28 MainWindow::MainWindow(QWidget *parent) :
33 QStringList resamplelist;
34 resamplelist <<
"near" <<
"bilinear";
35 ui->resample->addItems(resamplelist);
36 QStringList crulelist;
37 crulelist <<
"overwrite" <<
"maxndvi" <<
"maxband" <<
"minband" <<
"mean" <<
"mode" <<
"median" <<
"sum";
38 ui->crule->addItems(crulelist);
39 QStringList interleavedlist;
40 interleavedlist <<
"BAND" <<
"LINE" <<
"PIXEL" <<
"BSQ";
41 ui->interleaved->addItems(interleavedlist);
42 QStringList compressedlist;
43 compressedlist <<
"NONE" <<
"LZW" <<
"PACKBITS" <<
"DEFLATE";
44 ui->compressed->addItems(compressedlist);
45 QStringList otypelist;
46 otypelist <<
"" <<
"Byte" <<
"Int16" <<
"UInt16" <<
"UInt32" <<
"Int32" <<
"Float32" <<
"Float64" <<
"CInt16" <<
"CInt32" <<
"CFloat32" <<
"CFloat64";
47 ui->otype->addItems(otypelist);
48 QStringList oformatlist;
49 oformatlist <<
"" <<
"GTiff" <<
"HFA" <<
"ENVI";
50 ui->oformat->addItems(oformatlist);
53 ui->listWidget_input->setSelectionMode(QAbstractItemView::ExtendedSelection);
55 QShortcut* shortcutDel =
new QShortcut(QKeySequence(Qt::Key_Delete), ui->listWidget_input);
56 connect(shortcutDel, SIGNAL(activated()),
this, SLOT(deleteItemInput()));
58 QShortcut* shortcutBackspace =
new QShortcut(QKeySequence(Qt::Key_Backspace), ui->listWidget_input);
59 connect(shortcutBackspace, SIGNAL(activated()),
this, SLOT(deleteItemInput()));
63 MainWindow::~MainWindow()
68 void MainWindow::deleteItemInput()
70 qDeleteAll(ui->listWidget_input->selectedItems());
74 void MainWindow::setDefaults()
77 ui->listWidget_input->clear();
84 ui->resample->setCurrentIndex(0);
85 ui->crule->setCurrentIndex(0);
86 ui->cband->setText(
"0");
87 ui->bndnodata->setText(
"0");
88 ui->srcnodata->setText(
"0");
94 ui->otype->setCurrentIndex(0);
95 ui->oformat->setCurrentIndex(0);
99 ui->interleaved->setCurrentIndex(0);
100 ui->tiled->setChecked(
false);
101 ui->compressed->setCurrentIndex(0);
102 ui->dstnodata->clear();
106 void MainWindow::on_toolButton_input_clicked()
108 on_actionInput_image_triggered();
111 void MainWindow::on_toolButton_output_clicked()
113 on_actionOutput_image_triggered();
116 void MainWindow::on_toolButton_file_clicked()
118 on_actionSelection_Info_file_triggered();
121 void MainWindow::on_toolButton_ct_clicked()
123 QString qsctfilename=QFileDialog::getSaveFileName(
this,
"Color table ASCII",
"",
"*.*");
124 ui->ct->setText(qsctfilename);
127 void MainWindow::on_toolButton_defaults_clicked()
132 void MainWindow::on_actionInput_image_triggered()
134 QFileDialog dialog(
this);
135 dialog.setDirectory(QDir::homePath());
136 dialog.setFileMode(QFileDialog::ExistingFiles);
137 QStringList fileNames;
139 fileNames = dialog.selectedFiles();
140 ui->listWidget_input->addItems(fileNames);
143 void MainWindow::on_actionOutput_image_triggered()
145 QString outputfilename=QFileDialog::getSaveFileName(
this,
"Output image",
"",
"*.*");
146 ui->output->setText(outputfilename);
149 void MainWindow::on_actionSelection_Info_file_triggered()
151 QString infofilename=QFileDialog::getSaveFileName(
this,
"Selection info image",
"",
"*.*");
152 ui->file->setText(infofilename);
155 void MainWindow::on_actionQuit_triggered()
161 void MainWindow::on_toolButton_Run_clicked()
164 ui->commandLineEdit->clear();
165 ui->consoleEdit->clear();
167 QString program =
"pkcomposite";
169 if(ui->listWidget_input->count()<1)
170 MainWindow::on_actionInput_image_triggered();
171 if(ui->listWidget_input->count()<1){
172 QString qsError=
"No input image file selected";
176 for(
int i = 0; i < ui->listWidget_input->count(); ++i)
178 QListWidgetItem* item = ui->listWidget_input->item(i);
179 program+=
" --input "+item->text();
182 if(ui->output->text().isEmpty())
183 MainWindow::on_actionOutput_image_triggered();
184 if(ui->output->text().isEmpty()){
185 QString qsError=
"No output image file selected";
189 program+=
" --resample "+ui->resample->currentText();
190 program+=
" --crule "+ui->crule->currentText();
191 if(!ui->otype->currentText().isEmpty())
192 program+=
" --otype "+ui->otype->currentText();
193 if(!ui->oformat->currentText().isEmpty())
194 program+=
" --oformat "+ui->oformat->currentText();
195 program+=
" -co COMPRESS="+ui->compressed->currentText();
196 program+=
" -co INTERLEAVE="+ui->interleaved->currentText();
197 if(ui->tiled->isChecked())
198 program+=
" -co TILED=YES";
211 QList<QLineEdit*> qlineEditList = this->findChildren<QLineEdit *>();
213 for(QList<QLineEdit*>::ConstIterator qlbit=qlineEditList.begin();qlbit!=qlineEditList.end();++qlbit){
214 if(!((*qlbit)->text().isEmpty())){
217 qsOption+=(*qlbit)->objectName();
219 qsOption+=(*qlbit)->text();
224 ui->commandLineEdit->insert(program);
227 QProcess *myProcess =
new QProcess(
this);
228 myProcess->start(program);
229 myProcess->setProcessChannelMode(QProcess::MergedChannels);
230 this->setCursor(Qt::WaitCursor);
231 myProcess->waitForFinished(-1);
232 this->setCursor(Qt::ArrowCursor);
233 QString p_stderr = myProcess->readAllStandardError();
234 if(!p_stderr.isEmpty()){
236 msgBox.setText(p_stderr);
239 QString p_stdout = myProcess->readAll();
240 ui->consoleEdit->insertPlainText(p_stdout);
243 catch(QString qsError){
245 msgBox.setText(qsError);
250 void MainWindow::on_toolButton_extent_clicked()
252 on_actionExtent_triggered();
255 void MainWindow::on_actionExtent_triggered()
257 QString qsextent = QFileDialog::getOpenFileName(
this,
"extent");
258 ui->extent->setText(qsextent);