• R/O
  • SSH

gpxviewer: Commit

GPX Viewer repository


Commit MetaInfo

Revisionf993ab02ff2e1eaae659aa34ddc4e96cd4e1efd8 (tree)
Time2017-10-01 02:49:06
AuthorSergey Salnikov
CommiterSergey Salnikov

Log Message

* Read and write additional WPT fields: cmt, desc, sym.

Change Summary

Incremental Difference

diff -r 1d8bd752df9a -r f993ab02ff2e TODO
--- a/TODO Sun Oct 01 00:14:34 2017 +0700
+++ b/TODO Sun Oct 01 00:49:06 2017 +0700
@@ -15,7 +15,6 @@
1515 * Copying a column.
1616 * Rename multiple points at once.
1717 * Make movable toolbars.
18-* Write GPX file properly.
1918
2019 == Fixes ==
2120
diff -r 1d8bd752df9a -r f993ab02ff2e gpxviewer/gpxmodel.py
--- a/gpxviewer/gpxmodel.py Sun Oct 01 00:14:34 2017 +0700
+++ b/gpxviewer/gpxmodel.py Sun Oct 01 00:49:06 2017 +0700
@@ -271,6 +271,11 @@
271271 point[TIME_DAYS] = ''
272272 point['ID'] = wptid
273273
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+
274279 self.wptmodel.beginInsertRows(QtCore.QModelIndex(), wptid, wptid)
275280 self.wptmodel.waypoints += [point]
276281 self.wptmodel.includeStates += [INC_DEFAULT]
@@ -452,15 +457,27 @@
452457 maxlat = p[LAT]
453458 if p[LON] > maxlon:
454459 maxlon = p[LON]
455- el = ET.Element('name')
456- el.text = p[NAME]
457- element.append(el)
458460 el = ET.Element('ele')
459461 el.text = str(p[ALT])
460462 element.append(el)
461463 el = ET.Element('time')
462464 el.text = p[TIME].strftime('%Y-%m-%dT%H:%M:%SZ')
463465 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)
464481
465482 for track, s in zip(self.trkmodel.tracks, self.trkmodel.includeStates):
466483 if s != INC_SKIP:
@@ -496,15 +513,18 @@
496513 el = ET.Element('bounds', attrib={'minlat': str(minlat), 'minlon': str(minlon), 'maxlat': str(maxlat), 'maxlon': str(maxlon)})
497514 metadata.append(el)
498515
499- outgpx = ET.tostring(root, encoding='unicode')
516+ outgpx = '<?xml version="1.0" encoding="UTF-8"?>\n' + ET.tostring(root, encoding='unicode') + '\n'
500517 outgpx = outgpx.replace('<metadata', '\n <metadata')
501518 outgpx = outgpx.replace('</metadata', '\n </metadata')
502519 outgpx = outgpx.replace('<wpt', '\n <wpt')
503520 outgpx = outgpx.replace('<trk', '\n <trk')
504521 outgpx = outgpx.replace('<bounds', '\n <bounds')
505- outgpx = outgpx.replace('<name', '\n <name')
506522 outgpx = outgpx.replace('<ele', '\n <ele')
507523 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')
508528 outgpx = outgpx.replace('</wpt', '\n </wpt')
509529 outgpx = outgpx.replace('</trk', '\n </trk')
510530 outgpx = outgpx.replace('</gpx', '\n</gpx')
Show on old repository browser