qtvplugin_geomarker_uimethods.cpp 25.4 KB
Newer Older
1 2 3 4 5
#include "qtvplugin_geomarker.h"
#include "ui_qtvplugin_geomarker.h"
#include <QSettings>
#include <QColorDialog>
#include <QSet>
6 7 8
#include <QMap>
#include <QRegExp>
#include <QDebug>
9 10
#include <QFileDialog>
#include <QMessageBox>
11 12
#include "geographicsellipseitem.h"
#include "geographicsrectitem.h"
13 14
#include "geographicslineitem.h"
#include "geographicspolygonitem.h"
15
#include "dialogselecticon.h"
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65

void		qtvplugin_geomarker::timerEvent(QTimerEvent * e)
{
	if (e->timerId()==m_nTimerID_refreshUI && m_bNeedRefresh)
	{
		m_bNeedRefresh = false;
		killTimer(m_nTimerID_refreshUI);
		m_nTimerID_refreshUI = -1;

		//refersh
		int rowCount = m_pGeoItemModel->rowCount();
		QList<QTVP_GEOMARKER::geoItemBase *> items = m_pScene->geo_items();
		int c = 0;
		foreach (QTVP_GEOMARKER::geoItemBase * item, items)
		{
			if (c < rowCount)
			{
				m_pGeoItemModel->setData(
							m_pGeoItemModel->index(c,0),
							item->item_name()
							);

				m_pGeoItemModel->setData(
							m_pGeoItemModel->index(c,1),
							QTVP_GEOMARKER::item_name_by_enum(item->item_type())
							);
				m_pGeoItemModel->setData(
							m_pGeoItemModel->index(c,2),
							item->prop_counts()
							);
			}
			else
			{
				m_pGeoItemModel->appendRow(new QStandardItem(item->item_name()));
				m_pGeoItemModel->setData(
							m_pGeoItemModel->index(c,1),
							QTVP_GEOMARKER::item_name_by_enum(item->item_type())
							);
				m_pGeoItemModel->setData(
							m_pGeoItemModel->index(c,2),
							item->prop_counts()
							);

			}
			++c;
		}
		if (c< rowCount)
			m_pGeoItemModel->removeRows(c, rowCount - c);
		m_nTimerID_refreshUI = startTimer(2000);
	}
丁劲犇's avatar
丁劲犇 已提交
66 67 68 69 70 71 72 73
	else if (m_nTimerID_refreshMap==e->timerId() && m_bNeedUpdateView==true)
	{
		m_bNeedUpdateView = false;
		killTimer(m_nTimerID_refreshMap);
		m_nTimerID_refreshMap = -1;
		m_pVi->UpdateWindow();
		m_nTimerID_refreshMap = startTimer(100);
	}
74
	else if (m_nTimerID_levelQueue == e->timerId())
丁劲犇's avatar
丁劲犇 已提交
75
	{
76 77 78 79
		killTimer(m_nTimerID_levelQueue);
		if (true==m_pScene->deal_level_queue())
			scheduleUpdateMap();
		m_nTimerID_levelQueue = startTimer(100);
丁劲犇's avatar
丁劲犇 已提交
80
	}
81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99
}




void qtvplugin_geomarker::on_radioButton_tool_point_toggled(bool b)
{
	if (b) ui->stackedWidget_marks->setCurrentIndex(0);
}

void qtvplugin_geomarker::on_radioButton_tool_line_toggled(bool b )
{
	if (b) ui->stackedWidget_marks->setCurrentIndex(1);
}

void qtvplugin_geomarker::on_radioButton_tool_polygon_toggled(bool b)
{
	if (b) ui->stackedWidget_marks->setCurrentIndex(2);
}
100
void qtvplugin_geomarker::on_radioButton_tool_icons_toggled(bool b )
101 102 103
{
	if (b) ui->stackedWidget_marks->setCurrentIndex(3);
}
104

丁劲犇's avatar
丁劲犇 已提交
105
void qtvplugin_geomarker::on_toolButton_selColorPen_clicked()
106
{
丁劲犇's avatar
丁劲犇 已提交
107
	QString str = ui->lineEdit_PenColor->text();
108 109 110

	QColor col = QColorDialog::getColor(string2color(str),this,tr("Select Color"),QColorDialog::ShowAlphaChannel|QColorDialog::DontUseNativeDialog);
	if (col.isValid())
丁劲犇's avatar
丁劲犇 已提交
111
		ui->lineEdit_PenColor->setText(color2string(col));
112
}
丁劲犇's avatar
丁劲犇 已提交
113
void qtvplugin_geomarker::on_toolButton_selColorFill_clicked()
114
{
丁劲犇's avatar
丁劲犇 已提交
115
	QString str = ui->lineEdit_FillColor->text();
116 117 118

	QColor col = QColorDialog::getColor(string2color(str),this,tr("Select Color"),QColorDialog::ShowAlphaChannel|QColorDialog::DontUseNativeDialog);
	if (col.isValid())
丁劲犇's avatar
丁劲犇 已提交
119
		ui->lineEdit_FillColor->setText(color2string(col));
120
}
121 122 123
void qtvplugin_geomarker::on_toolButton_selColorText_clicked()
{
	QString str = ui->lineEdit_TextColor->text();
124

125 126 127 128
	QColor col = QColorDialog::getColor(string2color(str),this,tr("Select Color"),QColorDialog::ShowAlphaChannel|QColorDialog::DontUseNativeDialog);
	if (col.isValid())
		ui->lineEdit_TextColor->setText(color2string(col));
}
129 130 131 132 133 134 135 136 137 138 139 140 141
void qtvplugin_geomarker::on_pushButton_pickToLine1_clicked()
{
	ui->lineEdit_lineLat1->setText(ui->lineEdit_point_lat->text());
	ui->lineEdit_lineLon1->setText(ui->lineEdit_point_lon->text());
}

void qtvplugin_geomarker::on_pushButton_pickToLine2_clicked()
{
	ui->lineEdit_lineLat2->setText(ui->lineEdit_point_lat->text());
	ui->lineEdit_lineLon2->setText(ui->lineEdit_point_lon->text());
}


142
void qtvplugin_geomarker::ini_save()
143
{
144
	QSettings settings(ini_file(),QSettings::IniFormat);
145 146 147
	int radioButton_tool_point = 0;
	if (ui->radioButton_tool_line->isChecked()==true) radioButton_tool_point = 1;
	else if (ui->radioButton_tool_polygon->isChecked()==true) radioButton_tool_point = 2;
148
	else if (ui->radioButton_tool_icons->isChecked()==true) radioButton_tool_point = 3;
149 150 151 152 153 154 155 156 157
	else radioButton_tool_point = 0;
	settings.setValue("ui/radioButton_tool_point",radioButton_tool_point);

	settings.setValue("ui/lineEdit_currentID",ui->lineEdit_currentID->text());

	settings.setValue("ui/lineEdit_point_lat",ui->lineEdit_point_lat->text());
	settings.setValue("ui/lineEdit_point_lon",ui->lineEdit_point_lon->text());
	settings.setValue("ui/spinBox_point_width",ui->spinBox_point_width->value());
	settings.setValue("ui/spinBox_point_size_height",ui->spinBox_point_size_height->value());
丁劲犇's avatar
丁劲犇 已提交
158

159 160 161 162 163 164

	int radioButton_PointRect = 0;
	if (ui->radioButton_PointRound->isChecked()==true) radioButton_PointRect = 1;
	else radioButton_PointRect = 0;
	settings.setValue("ui/radioButton_PointRect",radioButton_PointRect);

丁劲犇's avatar
丁劲犇 已提交
165 166
	settings.setValue("ui/lineEdit_PenColor",ui->lineEdit_PenColor->text());
	settings.setValue("ui/lineEdit_FillColor",ui->lineEdit_FillColor->text());
167
	settings.setValue("ui/lineEdit_TextColor",ui->lineEdit_TextColor->text());
168 169 170 171 172 173
	settings.setValue("ui/lineEdit_prop_name",ui->lineEdit_prop_name->text());
	settings.setValue("ui/lineEdit_prop_string",ui->lineEdit_prop_string->text());
	settings.setValue("ui/lineEdit_lineLat1",ui->lineEdit_lineLat1->text());
	settings.setValue("ui/lineEdit_lineLat2",ui->lineEdit_lineLat2->text());
	settings.setValue("ui/lineEdit_lineLon1",ui->lineEdit_lineLon1->text());
	settings.setValue("ui/lineEdit_lineLon2",ui->lineEdit_lineLon2->text());
丁劲犇's avatar
丁劲犇 已提交
174
	settings.setValue("ui/spinBox_penWidth",ui->spinBox_penWidth->value());
175
	settings.setValue("ui/comboBox_linePad",ui->comboBox_linePad->currentIndex());
丁劲犇's avatar
丁劲犇 已提交
176
	settings.setValue("ui/comboBox_fillPad",ui->comboBox_fillPad->currentIndex());
177
	settings.setValue("ui/plainTextEdit_corners",ui->plainTextEdit_corners->toPlainText());
178 179 180

	settings.setValue("ui/spinBox_textWeight",ui->spinBox_textWeight->value());
	settings.setValue("ui/spinBox_fontSize",ui->spinBox_fontSize->value());
丁劲犇's avatar
丁劲犇 已提交
181 182
	settings.setValue("ui/lineEdit_icon_lat",ui->lineEdit_icon_lat->text());
	settings.setValue("ui/lineEdit_icon_lon",ui->lineEdit_icon_lon->text());
183 184
	settings.setValue("ui/lineEdit_icon_rotate",ui->lineEdit_icon_rotate->text());
	settings.setValue("ui/lineEdit_icon_scale",ui->lineEdit_icon_scale->text());
185 186
}

187
void qtvplugin_geomarker::ini_load()
188
{
189
	QSettings settings(ini_file(),QSettings::IniFormat);
190 191 192 193 194 195 196 197 198 199 200 201
	int radioButton_tool_point =  settings.value("ui/radioButton_tool_point",0).toInt();
	switch (radioButton_tool_point)
	{
	case 0:
		ui->radioButton_tool_point->setChecked(true);
		break;
	case 1:
		ui->radioButton_tool_line->setChecked(true);
		break;
	case 2:
		ui->radioButton_tool_polygon->setChecked(true);
		break;
202
	case 3:
203
		ui->radioButton_tool_icons->setChecked(true);
204
		break;
205 206 207 208 209 210 211 212 213 214 215 216 217 218 219
	default:
		ui->radioButton_tool_point->setChecked(true);
		break;
	}
	QString lineEdit_currentID = settings.value("ui/lineEdit_currentID","PT0").toString();
	ui->lineEdit_currentID->setText(lineEdit_currentID);

	QString lineEdit_point_lat = settings.value("ui/lineEdit_point_lat","0").toString();
	ui->lineEdit_point_lat->setText(lineEdit_point_lat);
	QString lineEdit_point_lon = settings.value("ui/lineEdit_point_lon","0").toString();
	ui->lineEdit_point_lon->setText(lineEdit_point_lon);
	int spinBox_point_width = settings.value("ui/spinBox_point_width",8).toInt();
	ui->spinBox_point_width->setValue(spinBox_point_width);
	int spinBox_point_size_height = settings.value("ui/spinBox_point_size_height",8).toInt();
	ui->spinBox_point_size_height->setValue(spinBox_point_size_height);
丁劲犇's avatar
丁劲犇 已提交
220 221 222 223
	QString lineEdit_PenColor = settings.value("ui/lineEdit_PenColor",color2string(QColor(0,0,0,128))).toString();
	ui->lineEdit_PenColor->setText(lineEdit_PenColor);
	QString lineEdit_FillColor = settings.value("ui/lineEdit_FillColor",color2string(QColor(255,255,255,128))).toString();
	ui->lineEdit_FillColor->setText(lineEdit_FillColor);
224 225
	QString lineEdit_TextColor = settings.value("ui/lineEdit_TextColor",color2string(QColor(0,0,0))).toString();
	ui->lineEdit_TextColor->setText(lineEdit_TextColor);
226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251
	int radioButton_PointRect =  settings.value("ui/radioButton_PointRect",0).toInt();
	switch (radioButton_PointRect)
	{
	case 0:
		ui->radioButton_PointRect->setChecked(true);
		break;
	case 1:
		ui->radioButton_PointRound->setChecked(true);
		break;
	default:
		ui->radioButton_PointRect->setChecked(true);
		break;
	}

	QString lineEdit_prop_name = settings.value("ui/lineEdit_prop_name","LABEL").toString();
	ui->lineEdit_prop_name->setText(lineEdit_prop_name);
	QString lineEdit_prop_string = settings.value("ui/lineEdit_prop_string","please input label here").toString();
	ui->lineEdit_prop_string->setText(lineEdit_prop_string);
	QString lineEdit_lineLat1 = settings.value("ui/lineEdit_lineLat1","0").toString();
	ui->lineEdit_lineLat1->setText(lineEdit_lineLat1);
	QString lineEdit_lineLat2 = settings.value("ui/lineEdit_lineLat2","0").toString();
	ui->lineEdit_lineLat2->setText(lineEdit_lineLat2);
	QString lineEdit_lineLon1 = settings.value("ui/lineEdit_lineLon1","0").toString();
	ui->lineEdit_lineLon1->setText(lineEdit_lineLon1);
	QString lineEdit_lineLon2 = settings.value("ui/lineEdit_lineLon2","0").toString();
	ui->lineEdit_lineLon2->setText(lineEdit_lineLon2);
丁劲犇's avatar
丁劲犇 已提交
252 253
	int spinBox_penWidth = settings.value("ui/spinBox_penWidth",3).toInt();
	ui->spinBox_penWidth->setValue(spinBox_penWidth);
254 255
	int comboBox_linePad = settings.value("ui/comboBox_linePad",1).toInt();
	ui->comboBox_linePad->setCurrentIndex(comboBox_linePad);
丁劲犇's avatar
丁劲犇 已提交
256 257
	int comboBox_fillPad = settings.value("ui/comboBox_fillPad",1).toInt();
	ui->comboBox_fillPad->setCurrentIndex(comboBox_fillPad);
258

259 260 261
	QString plainTextEdit_corners = settings.value("ui/plainTextEdit_corners","0").toString();
	ui->plainTextEdit_corners->setPlainText(plainTextEdit_corners);

262 263 264 265 266
	int spinBox_fontSize = settings.value("ui/spinBox_fontSize",9).toInt();
	ui->spinBox_fontSize->setValue(spinBox_fontSize);

	int spinBox_textWeight = settings.value("ui/spinBox_textWeight",16).toInt();
	ui->spinBox_textWeight->setValue(spinBox_textWeight);
丁劲犇's avatar
丁劲犇 已提交
267 268 269 270 271

	QString lineEdit_icon_lat = settings.value("ui/lineEdit_icon_lat","0").toString();
	ui->lineEdit_icon_lat->setText(lineEdit_icon_lat);
	QString lineEdit_icon_lon = settings.value("ui/lineEdit_icon_lon","0").toString();
	ui->lineEdit_icon_lon->setText(lineEdit_icon_lon);
272 273 274 275 276
	QString lineEdit_icon_scale = settings.value("ui/lineEdit_icon_scale","1.0").toString();
	ui->lineEdit_icon_scale->setText(lineEdit_icon_scale);
	QString lineEdit_icon_rotate = settings.value("ui/lineEdit_icon_rotate","1.0").toString();
	ui->lineEdit_icon_rotate->setText(lineEdit_icon_rotate);

277 278 279 280 281 282
}
void qtvplugin_geomarker::on_pushButton_update_clicked()
{
	if (m_pVi==0 || !m_pScene)
		return;
	QString name = ui->lineEdit_currentID->text();
283
	ini_save();
丁劲犇's avatar
丁劲犇 已提交
284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331

	//Get pen and brush settings
	Qt::PenStyle pst [] ={
		Qt::NoPen	,
		Qt::SolidLine	,
		Qt::DashLine	,
		Qt::DotLine	,
		Qt::DashDotLine	,
		Qt::DashDotDotLine	,
		Qt::CustomDashLine
	};
	Qt::BrushStyle bst [] = {
		Qt::NoBrush,
		Qt::SolidPattern,
		Qt::Dense1Pattern,
		Qt::Dense2Pattern,
		Qt::Dense3Pattern,
		Qt::Dense4Pattern,
		Qt::Dense5Pattern,
		Qt::Dense6Pattern,
		Qt::Dense7Pattern,
		Qt::HorPattern,
		Qt::VerPattern,
		Qt::CrossPattern,
		Qt::BDiagPattern,
		Qt::FDiagPattern,
		Qt::DiagCrossPattern
	};

	int ptdd = ui->comboBox_linePad->currentIndex();
	if (ptdd < 0 || ptdd >=7)
		ptdd = 1;
	QColor penColor = string2color( ui->lineEdit_PenColor->text());
	int penWidth = ui->spinBox_penWidth->value();
	QPen pen;//(QBrush(color),width,pst[ptdd]);
	pen.setColor(penColor);
	pen.setWidth(penWidth);
	pen.setStyle(pst[ptdd]);

	int btdd = ui->comboBox_fillPad->currentIndex();
	if (btdd < 0 || btdd >=15)
		btdd = 1;

	QColor brushColor = string2color( ui->lineEdit_FillColor->text());
	QBrush brush;
	brush.setColor(brushColor);
	brush.setStyle(bst[btdd]);

332 333
	QTVP_GEOMARKER::geoItemBase * newitem = 0;

334 335 336 337 338 339 340 341
	if (ui->radioButton_tool_point->isChecked())
	{
		double lat = ui->lineEdit_point_lat->text().toDouble();
		double lon = ui->lineEdit_point_lon->text().toDouble();
		int tp = ui->radioButton_PointRect->isChecked()?0:1;
		int width = ui->spinBox_point_width->value();
		int height = ui->spinBox_point_size_height->value();
		if (tp==0)
342
			newitem = update_point<QTVP_GEOMARKER::geoGraphicsRectItem>(name,lat,lon,width,height,pen,brush);
343
		else
344
			newitem = update_point<QTVP_GEOMARKER::geoGraphicsEllipseItem>(name,lat,lon,width,height,pen,brush);
345 346 347 348 349 350 351
	}
	else if (ui->radioButton_tool_line->isChecked())
	{
		double lat1 = ui->lineEdit_lineLat1->text().toDouble();
		double lat2 = ui->lineEdit_lineLat2->text().toDouble();
		double lon1 = ui->lineEdit_lineLon1->text().toDouble();
		double lon2 = ui->lineEdit_lineLon2->text().toDouble();
352
		newitem = update_line(name,lat1,lon1,lat2,lon2,pen);
353 354 355
	}
	else if (ui->radioButton_tool_polygon->isChecked())
	{
356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375
		QPolygonF latlons;
		QString strPlainTexts = ui->plainTextEdit_corners->toPlainText();
		strPlainTexts.remove(' ');
		strPlainTexts.remove('\n');
		strPlainTexts.remove('\r');
		strPlainTexts.remove('\015');
		strPlainTexts.remove('\012');
		QStringList lst = strPlainTexts.split(QRegExp("[,;]"),QString::SkipEmptyParts);
		int c = 0;
		QPointF ll;
		foreach (QString s,lst)
		{
			if (c%2==0)
				ll.setY(s.toDouble());
			else
				ll.setX(s.toDouble());
			if ((++c) % 2==0)
				latlons.push_back(ll);
		}
		if (latlons.size())
376
			newitem = update_polygon(name,latlons,pen,brush);
377 378

	}
379
	else if (ui->radioButton_tool_icons->isChecked())
丁劲犇's avatar
丁劲犇 已提交
380 381 382
	{
		double lat = ui->lineEdit_icon_lat->text().toDouble();
		double lon = ui->lineEdit_icon_lon->text().toDouble();
383 384
		qreal scale = ui->lineEdit_icon_scale->text().toFloat();
		qreal rotate = ui->lineEdit_icon_rotate->text().toFloat();
丁劲犇's avatar
丁劲犇 已提交
385
		QString iconname = ui->comboBox_icons->currentText();
386 387
		int smooth = ui->checkBox_icon_smooth->isChecked()?1:0;
		newitem = update_icon(name,lat,lon,scale,rotate,smooth,iconname);
丁劲犇's avatar
丁劲犇 已提交
388
	}
389 390
	else
		return;
391 392 393 394 395 396 397 398 399 400 401 402 403
	if (newitem)
	{
		int fontSz = ui->spinBox_fontSize->value();
		int fontWeight = ui->spinBox_textWeight->value();
		QColor textColor = string2color( ui->lineEdit_TextColor->text());
		QFont f = newitem->labelFont();
		f.setPointSize(fontSz);
		f.setWeight(fontWeight);
		newitem->setLabelFont(f);
		newitem->setLabelColor(textColor);


	}
丁劲犇's avatar
丁劲犇 已提交
404
	scheduleRefreshMarks();
405
	m_pVi->UpdateWindow();
406 407 408 409 410 411 412 413 414 415 416 417 418 419 420
}

void qtvplugin_geomarker::on_pushButton_del_clicked()
{
	QSet<int> rows;
	QModelIndexList lst =  ui->tableView_marks->selectionModel()->selectedIndexes();
	foreach (QModelIndex idd, lst)
		rows.insert(idd.row());
	foreach (int row, rows)
	{
		QString namep = m_pGeoItemModel->data(m_pGeoItemModel->index(row,0)).toString();
		QTVP_GEOMARKER::geoItemBase * b = m_pScene->geoitem_by_name(namep);
		if (b)
			m_pScene->removeItem(b,0);
	}
丁劲犇's avatar
丁劲犇 已提交
421
	scheduleRefreshMarks();
422 423 424 425 426

}

void qtvplugin_geomarker::on_pushButton_prop_update_clicked()
{
427
	ini_save();
428 429 430 431 432 433 434
	QString name = ui->lineEdit_currentID->text();
	//Fill in the pages
	QTVP_GEOMARKER::geoItemBase * item = m_pScene->geoitem_by_name(name);
	if (item)
	{
		item->set_prop_data(ui->lineEdit_prop_name->text(),ui->lineEdit_prop_string->text());
		this->refreshProps(item);
丁劲犇's avatar
丁劲犇 已提交
435
		this->scheduleRefreshMarks();
436 437 438 439 440 441 442 443 444 445 446
		//Update Font
		int fontSz = ui->spinBox_fontSize->value();
		int fontWeight = ui->spinBox_textWeight->value();
		QColor textColor = string2color( ui->lineEdit_TextColor->text());
		QFont f = item->labelFont();
		f.setPointSize(fontSz);
		f.setWeight(fontWeight);
		item->setLabelFont(f);
		item->setLabelColor(textColor);

		m_pVi->UpdateWindow();
447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482
	}
}
void qtvplugin_geomarker::on_pushButton_prop_delete_clicked()
{
	QString name = ui->lineEdit_currentID->text();
	//Fill in the pages
	QTVP_GEOMARKER::geoItemBase * item = m_pScene->geoitem_by_name(name);
	if (item)
	{
		QSet<int> rows;
		QModelIndexList lst =  ui->tableView_props->selectionModel()->selectedIndexes();
		foreach (QModelIndex idd, lst)
			rows.insert(idd.row());
		foreach (int row, rows)
		{
			QString namep = m_pGeoPropModel->data(m_pGeoPropModel->index(row,0)).toString();
			item->del_prop(namep);
		}
	}
	this->refreshProps(item);
}


void qtvplugin_geomarker::on_tableView_marks_doubleClicked(const QModelIndex & index)
{
	int row = index.row();
	if (row >=0 && row < m_pGeoItemModel->rowCount() )
	{
		QString name = m_pGeoItemModel->data(
					m_pGeoItemModel->index(row,0)
					).toString();

		refreshItemUI(name);
	}
}

483
void qtvplugin_geomarker::on_pushButton_getPolygon_clicked()
484 485 486 487 488 489 490
{
	if (!m_pVi)	return;
	QString strGridName = QString("grid%1").arg(m_nInstance);
	layer_interface * pif =  m_pVi->layer(strGridName);
	if (pif)
	{
		QMap<QString, QVariant> inPara, outPara;
491
		inPara["function"] = "get_polygon";
492 493 494 495 496 497 498 499 500
		outPara = pif->call_func(inPara);
		QString strPlainText = "";
		if (outPara.contains("size"))
		{
			int nsz = outPara["size"].toInt();
			for (int i=0;i<nsz;++i)
			{
				QString latkey = QString("lat%1").arg(i);
				QString lonkey = QString("lon%1").arg(i);
501
				strPlainText += QString("%1,%2;\n").arg(outPara[latkey].toDouble(),0,'f',7).arg(outPara[lonkey].toDouble(),0,'f',7);
502 503 504 505 506
			}
		}
		ui->plainTextEdit_corners->setPlainText(strPlainText);
	}
}
507 508 509 510 511 512 513 514
void qtvplugin_geomarker::refreshItemUI(QString markname)
{
	QString name = markname;
	//Fill in the pages
	QTVP_GEOMARKER::geoItemBase * item = m_pScene->geoitem_by_name(name);
	if (item)
	{
		ui->lineEdit_currentID->setText(item->item_name());
丁劲犇's avatar
丁劲犇 已提交
515 516 517
		//Update Pen and brush
		QPen pen;
		QBrush brush;
518 519 520 521 522 523 524
		switch (item->item_type())
		{
		case QTVP_GEOMARKER::ITEAMTYPE_RECT_POINT:
		{
			QTVP_GEOMARKER::geoGraphicsRectItem * pitem = dynamic_cast<QTVP_GEOMARKER::geoGraphicsRectItem *>(item);
			if (!pitem)
				break;
丁劲犇's avatar
丁劲犇 已提交
525 526
			pen = pitem->pen();
			brush = pitem->brush();
527 528
			ui->lineEdit_point_lat->setText(QString("%1").arg(pitem->lat(),0,'f',7));
			ui->lineEdit_point_lon->setText(QString("%1").arg(pitem->lon(),0,'f',7));
529 530 531
			ui->radioButton_PointRect->setChecked(true);
			ui->spinBox_point_width->setValue(pitem->width());
			ui->spinBox_point_size_height->setValue(pitem->height());
532
			ui->radioButton_tool_point->setChecked(true);
533 534 535 536 537 538 539
		}
			break;
		case QTVP_GEOMARKER::ITEAMTYPE_ELLIPSE_POINT:
		{
			QTVP_GEOMARKER::geoGraphicsEllipseItem * pitem = dynamic_cast<QTVP_GEOMARKER::geoGraphicsEllipseItem *>(item);
			if (!pitem)
				break;
丁劲犇's avatar
丁劲犇 已提交
540 541
			pen = pitem->pen();
			brush = pitem->brush();
542 543
			ui->lineEdit_point_lat->setText(QString("%1").arg(pitem->lat(),0,'f',7));
			ui->lineEdit_point_lon->setText(QString("%1").arg(pitem->lon(),0,'f',7));
544 545 546
			ui->radioButton_PointRound->setChecked(true);
			ui->spinBox_point_width->setValue(pitem->width());
			ui->spinBox_point_size_height->setValue(pitem->height());
547
			ui->radioButton_tool_point->setChecked(true);
548 549 550
		}
			break;
		case QTVP_GEOMARKER::ITEAMTYPE_LINE:
551 552 553 554
		{
			QTVP_GEOMARKER::geoGraphicsLineItem * pitem = dynamic_cast<QTVP_GEOMARKER::geoGraphicsLineItem *>(item);
			if (!pitem)
				break;
丁劲犇's avatar
丁劲犇 已提交
555
			pen = pitem->pen();
556 557 558 559
			ui->lineEdit_lineLat1->setText(QString("%1").arg(pitem->lat1(),0,'f',7));
			ui->lineEdit_lineLat2->setText(QString("%1").arg(pitem->lat2(),0,'f',7));
			ui->lineEdit_lineLon1->setText(QString("%1").arg(pitem->lon1(),0,'f',7));
			ui->lineEdit_lineLon2->setText(QString("%1").arg(pitem->lon2(),0,'f',7));
560
			ui->radioButton_tool_line->setChecked(true);
561
		}
562
			break;
563
		case QTVP_GEOMARKER::ITEAMTYPE_POLYGON:
564 565 566 567
		{
			QTVP_GEOMARKER::geoGraphicsPolygonItem * pitem = dynamic_cast<QTVP_GEOMARKER::geoGraphicsPolygonItem *>(item);
			if (!pitem)
				break;
丁劲犇's avatar
丁劲犇 已提交
568 569
			pen = pitem->pen();
			brush = pitem->brush();
570 571 572
			QPolygonF pol = pitem->llas();
			QString strPlainText;
			foreach (QPointF p, pol)
573
				strPlainText += QString("%1,%2;\n").arg(p.y(),0,'f',7).arg(p.x(),0,'f',7);
574
			ui->plainTextEdit_corners->setPlainText(strPlainText);
575
			ui->radioButton_tool_polygon->setChecked(true);
576
		}
577
			break;
578 579 580 581 582 583 584
		case QTVP_GEOMARKER::ITEAMTYPE_PIXMAP:
		{
			QTVP_GEOMARKER::geoGraphicsPixmapItem * pitem = dynamic_cast<QTVP_GEOMARKER::geoGraphicsPixmapItem *>(item);
			if (!pitem)
				break;
			ui->lineEdit_icon_lat->setText(QString("%1").arg(pitem->lat(),0,'f',7));
			ui->lineEdit_icon_lon->setText(QString("%1").arg(pitem->lon(),0,'f',7));
585
			ui->radioButton_tool_icons->setChecked(true);
586 587 588 589 590 591
			ui->lineEdit_icon_rotate->setText(QString("%1").arg(pitem->rotation()));
			ui->lineEdit_icon_scale->setText(QString("%1").arg(pitem->scale()));
			QString nameicon = pitem->icon()->name;
			ui->comboBox_icons->setCurrentText(nameicon);
		}
			break;
592 593 594 595
		default:
			break;

		}//end switch
丁劲犇's avatar
丁劲犇 已提交
596 597 598 599 600 601 602 603 604 605 606 607 608 609 610

		QColor colorPen = pen.color();
		ui->lineEdit_PenColor->setText(color2string(colorPen));
		QColor colorFill = brush.color();
		ui->lineEdit_FillColor->setText(color2string(colorFill));
		int penwidth = pen.width();
		ui->spinBox_penWidth->setValue(penwidth);
		Qt::PenStyle st = pen.style();
		int nst = int(st);
		if (nst >=0 && nst < ui->comboBox_linePad->count())
			ui->comboBox_linePad->setCurrentIndex((int)st);
		Qt::BrushStyle bs = brush.style();
		int nbs = int(bs);
		if (nbs >=0 && nbs < ui->comboBox_fillPad->count())
			ui->comboBox_fillPad->setCurrentIndex((int)nbs);
611 612 613 614 615 616 617 618 619 620

		QColor colorText = item->labelColor();
		ui->lineEdit_TextColor->setText(color2string(colorText));

		int fsize = item->labelFont().pointSize();
		ui->spinBox_fontSize->setValue(fsize);

		int weight = item->labelFont().weight();
		ui->spinBox_textWeight->setValue(weight);

621 622 623 624
		refreshProps(item);
	}//end if item

}
丁劲犇's avatar
丁劲犇 已提交
625 626 627 628 629 630 631 632 633 634 635
void qtvplugin_geomarker::refreshIconModel()
{
	m_pIconsModel->clear();
	foreach (QString key, m_map_icons.keys())
	{
		QStandardItem * item =  new QStandardItem(key);
		QIcon icon(m_map_icons[key].icon);
		item->setIcon(icon);
		m_pIconsModel->appendRow(item);
	}
}
636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652

void qtvplugin_geomarker::refreshProps(QTVP_GEOMARKER::geoItemBase * itm)
{
	m_pGeoPropModel->removeRows(0,m_pGeoPropModel->rowCount());
	int ct = itm->prop_counts();
	QStringList lstNames = itm->prop_names();
	QVariantList lstValues = itm->prop_values();
	for (int i=0;i<ct;++i)
	{
		m_pGeoPropModel->appendRow(new QStandardItem(lstNames.first()));
		m_pGeoPropModel->setData(
					m_pGeoPropModel->index(i,1),
					lstValues.first());
		lstNames.pop_front();
		lstValues.pop_front();
	}
}
653 654
void qtvplugin_geomarker::on_pushButton_save_clicked()
{
655
	QSettings settings(ini_file(),QSettings::IniFormat);
656 657 658 659 660 661
	QString strLastSaveImgDir = settings.value("history/last_save_xml_dir","./").toString();
	QString newfm = QFileDialog::getSaveFileName(this,tr("save to xml"),strLastSaveImgDir,
								 "xml (*.xml);;All files(*.*)"
								 );
	if (newfm.size()>2)
	{
662
		if (true==xml_save(newfm))
663 664
		{
			settings.setValue("history/last_save_xml_dir",newfm);
丁劲犇's avatar
丁劲犇 已提交
665
			//QMessageBox::information(this,tr("succeed"),tr("Successfully saved XML file") + newfm);
666 667 668 669 670
		}
		else
			QMessageBox::warning(this,tr("failed"),tr("Save XML file") + newfm + tr(" Failed"));
	}
}
671

672 673
void qtvplugin_geomarker::on_pushButton_load_clicked()
{
674
	QSettings settings(ini_file(),QSettings::IniFormat);
675 676 677 678 679 680
	QString strLastSaveImgDir = settings.value("history/last_open_xml_dir","./").toString();
	QString newfm = QFileDialog::getOpenFileName(this,tr("load from xml"),strLastSaveImgDir,
								 "xml (*.xml);;All files(*.*)"
								 );
	if (newfm.size()>2)
	{
681
		if (true==xml_load(newfm))
682 683
		{
			settings.setValue("history/last_open_xml_dir",newfm);
丁劲犇's avatar
丁劲犇 已提交
684
			//QMessageBox::information(this,tr("succeed"),tr("Successfully load XML file") + newfm);
685 686 687 688
		}
		else
			QMessageBox::warning(this,tr("failed"),tr("Load XML file") + newfm + tr(" Failed"));
	}
丁劲犇's avatar
丁劲犇 已提交
689
	scheduleRefreshMarks();
690 691
	m_pVi->UpdateWindow();
}
692
void qtvplugin_geomarker::on_pushButton_import_icon_clicked()
丁劲犇's avatar
丁劲犇 已提交
693
{
694
	DialogSelectIcon dlg (ini_file()) ;
695
	if (dlg.exec()==QDialog::Accepted)
丁劲犇's avatar
丁劲犇 已提交
696
	{
697
		m_map_icons[dlg.m_icon.name] = dlg.m_icon;
丁劲犇's avatar
丁劲犇 已提交
698
	}
699
	refreshIconModel();
丁劲犇's avatar
丁劲犇 已提交
700
}
丁劲犇's avatar
丁劲犇 已提交
701 702 703
void qtvplugin_geomarker::on_pushButton_load_icons_clicked()
{
	QSettings settings(ini_file(),QSettings::IniFormat);
704
	QString strLastSaveImgDir = settings.value("history/last_save_icon_xml_dir","./").toString();
丁劲犇's avatar
丁劲犇 已提交
705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738
	QString newfm = QFileDialog::getOpenFileName(this,tr("load from xml"),strLastSaveImgDir,
								 "xml (*.xml);;All files(*.*)"
								 );
	if (newfm.size()>2)
	{
		if (true==xml_icon_load(newfm))
		{
			settings.setValue("history/last_load_icon_xml_dir",newfm);
			//QMessageBox::information(this,tr("succeed"),tr("Successfully load XML file") + newfm);
		}
		else
			QMessageBox::warning(this,tr("failed"),tr("Load XML file") + newfm + tr(" Failed"));
	}
	this->refreshIconModel();
}

void qtvplugin_geomarker::on_pushButton_save_icons_clicked()
{
	QSettings settings(ini_file(),QSettings::IniFormat);
	QString strLastSaveImgDir = settings.value("history/last_save_icon_xml_dir","./").toString();
	QString newfm = QFileDialog::getSaveFileName(this,tr("save to xml"),strLastSaveImgDir,
								 "xml (*.xml);;All files(*.*)"
								 );
	if (newfm.size()>2)
	{
		if (true==xml_icon_save(newfm))
		{
			settings.setValue("history/last_save_icon_xml_dir",newfm);
			//QMessageBox::information(this,tr("succeed"),tr("Successfully saved XML file") + newfm);
		}
		else
			QMessageBox::warning(this,tr("failed"),tr("Save XML file") + newfm + tr(" Failed"));
	}
}