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 interleavedlist;
37 interleavedlist <<
"BAND" <<
"LINE" <<
"PIXEL" <<
"BSQ";
38 ui->interleaved->addItems(interleavedlist);
39 QStringList compressedlist;
40 compressedlist <<
"NONE" <<
"LZW" <<
"PACKBITS" <<
"DEFLATE";
41 ui->compressed->addItems(compressedlist);
42 QStringList otypelist;
43 otypelist <<
"" <<
"Byte" <<
"Int16" <<
"UInt16" <<
"UInt32" <<
"Int32" <<
"Float32" <<
"Float64" <<
"CInt16" <<
"CInt32" <<
"CFloat32" <<
"CFloat64";
44 ui->otype->addItems(otypelist);
45 QStringList oformatlist;
46 oformatlist <<
"" <<
"GTiff" <<
"HFA" <<
"ENVI";
47 ui->oformat->addItems(oformatlist);
51 ui->listWidget_input->setSelectionMode(QAbstractItemView::ExtendedSelection);
54 QShortcut* shortcutDel =
new QShortcut(QKeySequence(Qt::Key_Delete), ui->listWidget_band);
55 connect(shortcutDel, SIGNAL(activated()),
this, SLOT(deleteItem()));
57 QShortcut* shortcutBackspace =
new QShortcut(QKeySequence(Qt::Key_Backspace), ui->listWidget_band);
58 connect(shortcutBackspace, SIGNAL(activated()),
this, SLOT(deleteItem()));
61 MainWindow::~MainWindow()
66 void MainWindow::setDefaults()
71 ui->listWidget_input->clear();
77 ui->listWidget_band->clear();
79 ui->resample->setCurrentIndex(0);
87 ui->otype->setCurrentIndex(0);
88 ui->oformat->setCurrentIndex(0);
92 ui->interleaved->setCurrentIndex(0);
93 ui->tiled->setChecked(
false);
94 ui->compressed->setCurrentIndex(0);
98 void MainWindow::deleteItem()
100 qDeleteAll(ui->listWidget_band->selectedItems());
103 void MainWindow::on_toolButton_input_clicked()
105 on_actionInput_triggered();
109 void MainWindow::on_toolButton_extent_clicked()
111 on_actionExtent_triggered();
114 void MainWindow::on_toolButton_output_clicked()
116 on_actionOutput_triggered();
119 void MainWindow::on_toolButton_defaults_clicked()
124 void MainWindow::on_toolButton_ct_clicked()
126 QString qsct = QFileDialog::getOpenFileName(
this,
"Color table ASCII");
127 ui->ct->setText(qsct);
130 void MainWindow::on_actionInput_triggered()
132 QFileDialog dialog(
this);
133 dialog.setDirectory(QDir::homePath());
134 dialog.setFileMode(QFileDialog::ExistingFiles);
135 QStringList fileNames;
137 fileNames = dialog.selectedFiles();
138 ui->listWidget_input->addItems(fileNames);
140 ui->listWidget_band->clear();
141 QProcess *myProcess =
new QProcess(
this);
142 QString program=
"pkinfo -nb -i ";
144 program+=fileNames[0];
145 myProcess->start(program);
146 this->setCursor(Qt::WaitCursor);
147 myProcess->waitForFinished(-1);
148 this->setCursor(Qt::ArrowCursor);
149 QString p_stdout=myProcess->readAll();
150 int nband=p_stdout.section(
' ',1).toInt();
151 QStringList bandlist;
152 for(
int iband=0;iband<nband;++iband){
153 QString qsband=QString::number(iband);
156 ui->listWidget_band->addItems(bandlist);
157 ui->listWidget_band->setSelectionMode(QAbstractItemView::ExtendedSelection);
158 ui->listWidget_band->selectAll();
161 void MainWindow::on_actionExtent_triggered()
163 QString qsextent = QFileDialog::getOpenFileName(
this,
"extent");
164 ui->extent->setText(qsextent);
167 void MainWindow::on_actionOutput_triggered()
169 QString outputfilename=QFileDialog::getSaveFileName(
this,
"Output image",
"",
"*.*");
170 ui->output->setText(outputfilename);
173 void MainWindow::on_actionQuit_triggered()
178 void MainWindow::on_toolButton_Run_clicked()
181 ui->commandLineEdit->clear();
182 ui->consoleEdit->clear();
184 QString program =
"pkcomposite";
186 if(ui->listWidget_input->count()<1)
187 MainWindow::on_actionInput_triggered();
188 if(ui->listWidget_input->count()<1){
189 QString qsError=
"No input image file selected";
193 for(
int i = 0; i < ui->listWidget_input->count(); ++i)
195 QListWidgetItem* item = ui->listWidget_input->item(i);
196 program+=
" --input "+item->text();
199 for(
int i = 0; i < ui->listWidget_band->count(); ++i)
201 QListWidgetItem* item = ui->listWidget_band->item(i);
202 program+=
" --band "+item->text();
205 if(ui->output->text().isEmpty())
206 MainWindow::on_actionOutput_triggered();
207 if(ui->output->text().isEmpty()){
208 QString qsError=
"No output image file selected";
212 program+=
" --resample "+ui->resample->currentText();
213 if(!ui->otype->currentText().isEmpty())
214 program+=
" --otype "+ui->otype->currentText();
215 if(!ui->oformat->currentText().isEmpty())
216 program+=
" --oformat "+ui->oformat->currentText();
217 program+=
" -co COMPRESS="+ui->compressed->currentText();
218 program+=
" -co INTERLEAVE="+ui->interleaved->currentText();
219 if(ui->tiled->isChecked())
220 program+=
" -co TILED=YES";
224 program+=
" --autoscale ";
225 program+=ui->as_from->text();
226 program+=
" --autoscale ";
227 program+=ui->as_to->text();
230 program+=
" --scale ";
231 program+=ui->scale->text();
232 program+=
" ---offset ";
233 program+=ui->offset->text();
246 QList<QLineEdit*> qlineEditList = this->findChildren<QLineEdit *>();
248 for(QList<QLineEdit*>::ConstIterator qlbit=qlineEditList.begin();qlbit!=qlineEditList.end();++qlbit){
249 if(!((*qlbit)->text().isEmpty())){
252 qsOption+=(*qlbit)->objectName();
254 qsOption+=(*qlbit)->text();
259 ui->commandLineEdit->insert(program);
262 QProcess *myProcess =
new QProcess(
this);
263 myProcess->start(program);
264 myProcess->setProcessChannelMode(QProcess::MergedChannels);
265 this->setCursor(Qt::WaitCursor);
266 myProcess->waitForFinished(-1);
273 this->setCursor(Qt::ArrowCursor);
274 QString p_stdout = myProcess->readAll();
275 ui->consoleEdit->insertPlainText(p_stdout);
278 catch(QString qsError){
280 msgBox.setText(qsError);
285 void MainWindow::on_autoscale_clicked()
291 void MainWindow::on_manual_clicked()
297 void MainWindow::on_noscale_clicked()
303 void MainWindow::on_toolButton_clicked()
305 ui->listWidget_input->clear();