GPX Viewer repository
Revision | f993ab02ff2e1eaae659aa34ddc4e96cd4e1efd8 (tree) |
---|---|
Time | 2017-10-01 02:49:06 |
Author | Sergey Salnikov |
Commiter | Sergey Salnikov |
* Read and write additional WPT fields: cmt, desc, sym.
@@ -15,7 +15,6 @@ | ||
15 | 15 | * Copying a column. |
16 | 16 | * Rename multiple points at once. |
17 | 17 | * Make movable toolbars. |
18 | -* Write GPX file properly. | |
19 | 18 | |
20 | 19 | == Fixes == |
21 | 20 |
@@ -271,6 +271,11 @@ | ||
271 | 271 | point[TIME_DAYS] = '' |
272 | 272 | point['ID'] = wptid |
273 | 273 | |
274 | + # Additional fields | |
275 | + point['CMT'] = p.findtext('{%(ns)s}cmt' % ns) | |
276 | + point['DESC'] = p.findtext('{%(ns)s}desc' % ns) | |
277 | + point['SYM'] = p.findtext('{%(ns)s}sym' % ns) | |
278 | + | |
274 | 279 | self.wptmodel.beginInsertRows(QtCore.QModelIndex(), wptid, wptid) |
275 | 280 | self.wptmodel.waypoints += [point] |
276 | 281 | self.wptmodel.includeStates += [INC_DEFAULT] |
@@ -452,15 +457,27 @@ | ||
452 | 457 | maxlat = p[LAT] |
453 | 458 | if p[LON] > maxlon: |
454 | 459 | maxlon = p[LON] |
455 | - el = ET.Element('name') | |
456 | - el.text = p[NAME] | |
457 | - element.append(el) | |
458 | 460 | el = ET.Element('ele') |
459 | 461 | el.text = str(p[ALT]) |
460 | 462 | element.append(el) |
461 | 463 | el = ET.Element('time') |
462 | 464 | el.text = p[TIME].strftime('%Y-%m-%dT%H:%M:%SZ') |
463 | 465 | element.append(el) |
466 | + el = ET.Element('name') | |
467 | + el.text = p[NAME] | |
468 | + element.append(el) | |
469 | + if p['CMT'] is not None: | |
470 | + el = ET.Element('cmt') | |
471 | + el.text = p['CMT'] | |
472 | + element.append(el) | |
473 | + if p['DESC'] is not None: | |
474 | + el = ET.Element('desc') | |
475 | + el.text = p['DESC'] | |
476 | + element.append(el) | |
477 | + if p['SYM'] is not None: | |
478 | + el = ET.Element('sym') | |
479 | + el.text = p['SYM'] | |
480 | + element.append(el) | |
464 | 481 | |
465 | 482 | for track, s in zip(self.trkmodel.tracks, self.trkmodel.includeStates): |
466 | 483 | if s != INC_SKIP: |
@@ -496,15 +513,18 @@ | ||
496 | 513 | el = ET.Element('bounds', attrib={'minlat': str(minlat), 'minlon': str(minlon), 'maxlat': str(maxlat), 'maxlon': str(maxlon)}) |
497 | 514 | metadata.append(el) |
498 | 515 | |
499 | - outgpx = ET.tostring(root, encoding='unicode') | |
516 | + outgpx = '<?xml version="1.0" encoding="UTF-8"?>\n' + ET.tostring(root, encoding='unicode') + '\n' | |
500 | 517 | outgpx = outgpx.replace('<metadata', '\n <metadata') |
501 | 518 | outgpx = outgpx.replace('</metadata', '\n </metadata') |
502 | 519 | outgpx = outgpx.replace('<wpt', '\n <wpt') |
503 | 520 | outgpx = outgpx.replace('<trk', '\n <trk') |
504 | 521 | outgpx = outgpx.replace('<bounds', '\n <bounds') |
505 | - outgpx = outgpx.replace('<name', '\n <name') | |
506 | 522 | outgpx = outgpx.replace('<ele', '\n <ele') |
507 | 523 | outgpx = outgpx.replace('<time', '\n <time') |
524 | + outgpx = outgpx.replace('<name', '\n <name') | |
525 | + outgpx = outgpx.replace('<cmt', '\n <cmt') | |
526 | + outgpx = outgpx.replace('<desc', '\n <desc') | |
527 | + outgpx = outgpx.replace('<sym', '\n <sym') | |
508 | 528 | outgpx = outgpx.replace('</wpt', '\n </wpt') |
509 | 529 | outgpx = outgpx.replace('</trk', '\n </trk') |
510 | 530 | outgpx = outgpx.replace('</gpx', '\n</gpx') |