1 #include "mainwindow.h" 2 #include "ui_mainwindow.h" 4 #include <QStandardItemModel> 8 MainWindow::MainWindow(QWidget *parent) :
14 rulelist <<
"point" <<
"pointOnSurface" <<
"centroid" <<
"mean" <<
"stdev" <<
"median" <<
"proportion" <<
"min" <<
"max" <<
"mode" <<
"sum";
15 ui->rule->addItems(rulelist);
16 QStringList formatlist;
17 formatlist <<
"SQLite" <<
"ESRI Shapefile";
18 ui->f->addItems(formatlist);
23 MainWindow::~MainWindow()
28 void MainWindow::setDefaults()
33 ui->bndnodata->clear();
34 ui->srcnodata->clear();
35 ui->polygon->setChecked(
false);
36 ui->f->setCurrentIndex(0);
39 ui->bname->setText(
"b");
40 ui->cname->setText(
"label");
41 ui->rule->setCurrentIndex(0);
44 setClassTable(labels);
45 ui->threshold->clear();
48 void MainWindow::on_actionInput_triggered()
50 QString qsinput = QFileDialog::getOpenFileName(
this,
"Input");
51 ui->input->setText(qsinput);
54 void MainWindow::on_actionSample_triggered()
56 QString qssample = QFileDialog::getOpenFileName(
this,
"Sample");
57 ui->sample->setText(qssample);
60 void MainWindow::on_actionOutput_triggered()
62 QString qsoutput = QFileDialog::getSaveFileName(
this,
"Output image",
"",
"*.*");
63 ui->output->setText(qsoutput);
66 void MainWindow::on_toolButton_input_clicked()
68 on_actionInput_triggered();
71 void MainWindow::on_toolButton_sample_clicked()
73 on_actionSample_triggered();
76 void MainWindow::on_toolButton_output_clicked()
78 on_actionOutput_triggered();
81 void MainWindow::setClassTable(
const QStringList &labels)
83 QStandardItemModel *model =
new QStandardItemModel(labels.size(),2,
this);
84 model->setHorizontalHeaderItem(0,
new QStandardItem(QString(
"label name")));
85 model->setHorizontalHeaderItem(1,
new QStandardItem(QString(
"select(%)")));
86 for(
int ilabel=0;ilabel<labels.size();++ilabel){
87 QStandardItem *firstCol =
new QStandardItem(QString(labels[ilabel]));
88 model->setItem(ilabel,0,firstCol);
89 QStandardItem *secondCol =
new QStandardItem(QString::number(100));
90 model->setItem(ilabel,1,secondCol);
92 ui->tableView_labels->setModel(model);
95 void MainWindow::on_pushButton_run_clicked()
98 ui->commandLineEdit->clear();
99 ui->consoleEdit->clear();
101 QString program =
"pkextract";
102 if(ui->sample->text().isEmpty())
103 MainWindow::on_actionSample_triggered();
104 if(ui->sample->text().isEmpty()){
105 QString qsError=
"No sample image file selected";
109 if(ui->input->text().isEmpty())
110 MainWindow::on_actionInput_triggered();
111 if(ui->input->text().isEmpty()){
112 QString qsError=
"No input image file selected";
116 if(ui->output->text().isEmpty())
117 MainWindow::on_actionOutput_triggered();
118 if(ui->output->text().isEmpty()){
119 QString qsError=
"No output image file selected";
123 program+=
" --f "+ui->f->currentText();
125 if(ui->polygon->isChecked())
126 program+=
" --polygon";
128 program+=
" --rule "+ui->rule->currentText();
140 QList<QLineEdit*> qlineEditList = this->findChildren<QLineEdit *>();
142 for(QList<QLineEdit*>::ConstIterator qlbit=qlineEditList.begin();qlbit!=qlineEditList.end();++qlbit){
143 if(!((*qlbit)->text().isEmpty())){
146 qsOption+=(*qlbit)->objectName();
148 qsOption+=(*qlbit)->text();
154 for(
int irow=0;irow<ui->tableView_labels->model()->rowCount();++irow){
156 qsOption+=
" --class ";
157 qsOption+=ui->tableView_labels->model()->data(ui->tableView_labels->model()->index(irow,0)).toString();
158 qsOption+=
" --threshold ";
159 qsOption+=ui->tableView_labels->model()->data(ui->tableView_labels->model()->index(irow,1)).toString();
163 ui->commandLineEdit->insert(program);
166 QProcess *myProcess =
new QProcess(
this);
167 myProcess->start(program);
168 myProcess->setProcessChannelMode(QProcess::MergedChannels);
169 this->setCursor(Qt::WaitCursor);
170 myProcess->waitForFinished(-1);
171 this->setCursor(Qt::ArrowCursor);
178 QString p_stdout = myProcess->readAll();
179 ui->consoleEdit->insertPlainText(p_stdout);
182 catch(QString qsError){
184 msgBox.setText(qsError);
189 void MainWindow::on_toolButton_createTable_clicked()
191 int nclass=ui->nclass->text().toInt();
193 for(
int iclass=1;iclass<=nclass;++iclass){
194 QString lstring=
"label";
195 lstring+=QString::number(iclass);
198 setClassTable(labels);
201 void MainWindow::on_pushButton_restore_clicked()