]> git.street.me.uk Git - andy/viking.git/blob - TODO
copy/paste of individual track- and waypoints- between processes now works
[andy/viking.git] / TODO
1 IMPORTANT STUFF:
2         g_dtostr (??) instead of fprintf in the appropriate places (locale-independentt when reading/writing GPX files -- '.' character)
3         Debugging output shouldn't be printf'd but g_debug'd
4         fix KH maps download
5         'zoom in too much' line drawing (ruler, tracks) bugs. maybe fix coord-to-screen to clip values (or make vik_viewport_coord_to_screen_clip)?
6
7 BEFORE RELEASE:
8         Copy & paste viking data between process & into other programs
9                 copy waypoints, TRWLayers as GPX/GPSPoint. paste TRWLayers as GPX if pasting into text.
10                 copy layers via file.c serialization. paste layers other than TRW into Viking only (for now)
11         Undo function
12         Map licensing issues (?)
13         DND between VikWindows
14         direct GPS support
15         arrows to show track direction
16
17 EASY FIXES:
18         "Interesting" stuff happens when we swich modes while using the ruler.
19         "click to go there" elevation map: average out, not nearest trackpoint.
20         Ruler: calculate degrees by spherical geometry formula ('zoom in too much' bug -- coord_to_screen out of range of double)
21                 for UTM: rotate compass for declination.
22                 
23
24 -----------------------------------------
25
26 RATHER HARD FIXES, SHOULD BE DONE BUT NOT MANDATORY FOR RELEASE:
27         tracks have their own colors, etc.
28         replace HTTP code!!!
29         relative photo pathnames (relative to GPS data file)
30         Optimizations (compare to 0.0.5)
31         SETTABLE OPTIONS: map cache size, alphabetized waypoints/tracks, picture viewer, webbrowser
32         Speed up waypoint drawing; option for faster drawing.
33         what if try to REDOWLOAD while RE/DOWNLOADing?
34         Redraw when becomes available, somehow? Also, show maps in progress a different color.
35         map loading/memory caching in the background? (for zoom out)
36         WHITE UNDER TRACKS! DONE FASTER! CLEAN THIS UP!
37
38 FEATURE WISHLIST (i.e. unlikely to get done):
39         selections (select area of waypoints, trackpoints, etc)
40         funky gpsbabel filter stuff (data sources -- think about, i want something innovative in this release.)
41         elevation plotting is not so pretty if you're moving north, as it overlays stuff uglily. discussion?
42         bicycle runs your track (animation) that tilts depending on slope
43         hover over pic
44         Better annotation for tracks, etc. Fields, etc.
45         Filled polygons
46         New UI: "Track Tool" => just analyze/pick out, right click or button to edit
47                 right click to do new track
48                 or "Track/Waypoint Tool"
49         I18N (das mundo ne parle pas agglika)
50         import from data sources ( gpsbabel (gps device) / google / geocaching.com )
51         Vector/TIGER maps!!! (use Cairo/Roadster code?)
52
53 MISC FIXES (i.e. will never get done):
54         Reid's 23, including waypoints, GPX/XML Viking files.
55         modular plotting styles? just an idea...
56         optimize Lat/Lon performance with its own CE1, CE2 etc.
57         make ce1, cn2 etc for lat/lon & utm; maybe get out the checking code in vik_viewport (see draw_rectange for instance)
58         Progressive Loading (GdkPixbufLoader)
59         CACHING WHOLE CHUNKS? (USEFUL FOR MAP ZOOM TOO!) RELOAD BUTTON?
60         * instead of using "emit"s in tools, do this:
61           * "add-only" return value -- only redraw this layer and layers above it.
62                 OR maybe even more advanced -- only redraw certain portions of screen.
63                 what about ALPHA??? uh oh...
64                 "always redraw" return value -- if layer is visible or not -- e.g. goto wp
65                 "redraw if visible" return value
66         settable defaults for layers (sigh...) OR at least config.h stuff
67
68 --------------
69
70 ROADMAP (old)
71 0.1.2
72   * Data sources: google, gpsbabel
73     * gpsbabel plugin -- wired up to get directions from google maps.
74     * address plugin.
75   * direct GPS support (?)
76     GPS navigation (speed, etc, etc)
77   * advanced downloader?
78 0.1.3
79   * stops
80     whole list: length, max movement, icons. can make more. right click -> stops...
81   * symbols
82   * draw by altitude, altitude side thingy.
83 0.1.4
84   * selections (?)
85   * NASA crazhy maps
86   * scale
87 0.1.6
88   * new UI & documentation
89   * internationalization
90 0.2.0
91   * TIGER data, vector maps
92 0.3.0
93   * altitude stuff, goodies
94   * major UI changes, direct manipulation
95   * sit down for a day or two and design the bestest bestest UI
96   * threads, etc
97   * docs, lots of docs
98 1.0
99   * more sophisticated vector data, almost GIS stuff. garmin maps, whatever
100   * party
101
102 --------------------------------
103
104 0.0.9 / 0.1.0
105  SELECTIONS (?)
106   * square & track-based
107   * select everything in, everything out
108   * download maps in
109  WAYPOINTS
110   * pango for text; text background with settable colors & options
111   * move & edit waypoints!!! auto-select for that
112   * maybe an option to turn on auto-select: off, on, only for same layer (default)
113  MAPS
114   * some of the above optimizations
115  MERGE TRW
116   * auto-rename dupes
117   * delete dupes by name
118   * delete dupes by location; name & location
119  TRACKS
120   * track editing -- everything on that idea sheet on my desk.
121   * insert into track
122   * show list of pics in one location
123   * maybe track-by-elevation
124  MISC
125   * alphabetize waypoints & tracks
126   * d&d layers (not worth it?)
127  FIXES
128   * crazhy-crazhy auto-switch UTM?
129   * figure out save image in background stuff, sigh...
130   * "widget properties set value param data"
131     -> check if has properties params
132     -> in layer_prop_fact: hold value's check if changed.
133     -> return TRUE only if value affects look
134     -> beautify dynamic properties boxes (checkboxes please?)
135     -> groups
136     -> maybe get rid of post_read (use set_param to update gc's -- but maybe not...)
137   * TODOs & FIXMEs
138   * due <= 2004-6-12 (1 yr after 0.0.3)
139
140 DONE:
141   * do alpha _right_ (to see what I mean, try drawing a transparent PNG)
142 -----------------------
143
144 POSSIBLE MAP OPTIMIZATIONS:
145 save conglomerates of shrunken images [to disk]?
146 static cache.c shared between everything -- SHARE MAP CACHES BETWEEN LAYERS AND WINDOWS!!!
147 background loading thread
148 load zoomed out images into conglomerates
149  -or-
150 Sort images by some sort of checksum (maybe sum of all digits) into 10 groups
151 makes finding cached image 10 times faster
152 if we somehow know we're not going to have enough room to store all maps for 1 redraw in cache, don't cache at all.
153 better cache management -- maybe every map in memory?
154 --> cache should fit more small maps than big ones!!!
155     maybe number for cache_size, keep track of it manuall, calculate from shrinkfactor? <-- good idea
156 pixmap (not pixbuf) cache?
157 vikmaplayer.c:520, don't run g_slist_length who-knows-howmany times (only noticable when shrinking cache)
158 stat images to make sure the size isn't zero (vs. trying to load them). then show errors for bad ones (?)
159 don't lookup IP each time (?)
160
161 ------------------------------
162
163
164  Then, focus on Lat/Lon and mapquest maps. (????)
165  Then, focus on Lat/Lon and mapquest maps.
166
167 0.0.9 "260 million maps... I can't hear you at all" release:
168 finalize pthread/map download UI.
169 export to image fix bug
170 viking running -> use this thread ( good luckers !!! )
171 merge trw layers
172
173 0.1.0 "where we're going, we don't need roads" release (concept idea):
174 Select a waypoint, delete to delete it, real tools, a toolbar, etc.
175 Drag and drop layers
176 alphabetatize waypoints & tracks
177 "area selections" -- select tool -> select waypoints in/outside area, download maps in area, etc. etc.
178
179 -/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/
180
181 0.1.0: the "fixes, patches, improvements, and goodies" release
182        "Where we're going, we don't need roads..."
183
184   * move a_dialog_new_track to viktrwlayer.c. Clean up VikTrwLayer, separating into several more-managable functions.
185   * get rids of pass_along, layer_and_vlp junk, just use update signal and track_iters (maybe make waypoint_iters) (?)
186   * TODO longones
187   * general cleanups, what you have time for (vik_trackpoint_free etc, draw_track, etc.)
188     * do we really have to have all those global funcs in vik_trw_layer ?
189 right click->new track here, new waypoint here. general TRWEdit tool with popup on vikviewport, it can be done.
190 general edit->delete to delete whatever is selected. ugly stuff ahead.
191 show human-readable timestamp
192 toolbar/toolbox, tool opts win (for tpwin) like in gimp (?)
193 Maybe fix "private" ref_count in clipboard.c (?)
194 clean up viktrwlayer.c, call track_realize() when adding track with add_track(), del dup. code, esp. in track_draw
195 move/edit by click for wp?
196 toolbar/toolbox, tool opts win (for tpwin) like in gimp (?)
197 only draw if in UTM zone !!!
198 Track color-by-elevation ( go all over an area, make tracks thicker/zoom out to create DEM color map ?! )
199 maps zoomed out
200 Thing to download lotsa maps (script or builtin -- ?)
201 Merge layers (what a say we have 2 layers, one with wp's, one with tracks)
202         merge: auto rename (everything begins with "layer name: ")
203         right click agg -> merge trw children -> super trw
204         or multiple slect/copy & paste
205 picture layer, thumbnails and all...
206 move to  gpsbabel default altitude, reflect it everywhere, include viking-remote
207 gpspoint.c -- use new easy gpsbabel code, abc, 123.
208
209 hard things to think about that need to be done sometime (mainly hard/impossible):
210 1) map downloader process / map download queue
211 2) if viking already running, use that process. cut and paste will work much better.
212
213 EVERYTHING ABOVE THIS LINE SHOULD BE IN 0.1.0! 0.2.0 WILL FOCUS ON LAT/LON AND STREET MAPS
214
215 -----
216
217 0.2.0
218 * Plot as lat/lon
219         For mapquest & georef maps: vikviewport "mode" to draw in (utm or straightened lat/lon), check before drawing, convert for TP, etc.
220 * full georef support, release minnesota/manganese
221 * mapquest maps
222 * smart drawing -- determine if line segment passes thru area, fancy math...
223 * map downloading manager, smarter ways -- e.g. "download maps within polygon"
224 * maybe a gpsbabel plug-in
225 * topos zoomed out if it didn't make it into 0.1.0
226 * maybe better wp drawing
227 * wp's alphabetically (good luckers) or at least when loading
228 * wp editing
229 * direct gps support
230
231 0.3.0 (still here?)
232 * new viking -> not new process
233 * wp icons
234 * routes
235 * improve direct manipulation
236 * bugfixes
237 * smart labeling so we can see 2 wp's (nearly) in the same place
238 * UTM zones (?)
239
240 1.0
241 * DEM maps
242 * mapsource files
243 * anything else possible, plausible and desirable.
244 * lots and lots of docs
245 * UI cleanups
246
247 Uses:
248 * planning
249 * viewing -- showing places/tracks on topo or street maps or scanned maps
250 * map download & printing -- your own, TOPO-thomas guides or city thomas guies
251 * adding coord lines to scanning maps -- print 'em out or see where they are
252 * editing tracks
253 * managing & organizing data
254 * creating maps and gps maps
255
256 SCALING:
257 * maybe downn scaling of higher-quality topos to accommodate odd zoom resolutions. this would also be useful for downloading _only_ high 
258   quality topos, or zooming out and seeing what topos we are missing, or downloading LOTS more topos at once (w/ download all on screen)
259   again, we will have to see how good GTK scaling is.
260 * maybe scaling of weird-scale (georeferenced) maps
261
262 Other
263 * georeferenced raster layer:
264  Optional:
265   - fix off-by-one-pixel bug (probably corner stuff) (?)
266   - utm zones (?)
267   - tool (maybe BUTTON 4,5 thing), and maybe a better zoom tool. but for release it's OK.
268
269 ROTATION/MESSED UP MAPS:
270 * Track/Waypoint Plotting as Lat/Lon (or artificial rotation, maybe preferred) for those kind of maps
271   and/or rotation of maps (not as good)
272 * maybe option "draw as lat long -- UTM center +- 1000 or something to find degrees/pixel (or use some other formula a la odu)
273 * or just rotation in screen_to_utm and utm_to_screen
274 * "anchoring down" one part of a georeferenced map for rotation and scaling.
275
276 * fix coord layer, it is SO horribly broken for high zoom levels.
277
278 * Investigate "chunk already freed"
279 * investigate if layer type doesnt have icon wont start bug
280 * Cleanups and fixes until 0.0.5-final:
281 * at least two of these things
282   * Merge TRW Layers
283   * copy and paste items
284   * MapBlast
285
286 These Cleanups:
287
288 -> These Cleanups
289 maybe "max size" thing for each param
290 --> maybe address within layer (struct offset) so wwe can just do away with set_param (in most cases). put stuff in realize or after_read
291 cleanup interface <---- IMPORTANT
292
293 -> cleanups below
294
295 -> sometime:
296    has_altitude or NO_ALTITUDE -> 999999
297
298 -> 0.0.6
299
300 C*L*E*A*N*U*P*S
301
302 dialog.c -> misc.c, viktrwlayer.c
303 export a layer from the file menu, some how. Export Layer -> choose layer. or Export Selected Layer (disabled as need be
304 ---
305 *MAYBE*
306
307 RGN type and other type in something of its own, not name.
308 that way, we can use the same file for waypoints to gps and for maps.
309
310 solutions to this problem:
311 File->Properties:
312   Position:
313   <R> Save current position
314   <R> Save this position:
315      UTM/LATLON ZOOM
316   <R> Save no position
317
318 -------
319 -------
320 -------
321 -------
322
323 (fixes + cleanups + scaling + rotation + ruler widgets (?) + topos & orthos in one (?) + copy&past items + merge layers) = 0.0.6
324
325 then 0.0.7, 0.0.8, 0.0.9 focus
326
327 things before "major" release:
328 direct manipulation (major feature/use)
329 use current viking (maybe)
330
331 to second "major" release:
332 libgpspoint2 and/or gpsd (show current pos)
333 map ui (rough edge)
334 analyzing stuff better, exact analyzing.
335
336 to 1.0
337 UTM ZONE!!!
338
339 > Although almost all of these are on your todo list I thought I would add my thoughts.
340
341 > 1.  Being able to choose the map units.  The metric system still baffles
342 > some of us. 
343 > 2.  Modular set up for map sources.  The urls tend to change/disapear
344 > when companies get bought up by micro$oft (mapblast).  The ability to
345 > import/export georefrenced maps.
346 > 3. Manipulations of track data...distance, altitude etc.
347 > 4. Export/printing of maps.  
348 > 5. Eyecandy. Colors and symbols for tracks, waypoints and routes.  Shade
349 > topo maps with DEM data.  
350
351 file format + hig compliance + bug fixes + MAYBE track undo = 0.0.4
352 FF2 + ruler widget + topos&orthos in one  +comment field + bugfixes = 0.0.5
353 if viking already running, use that process. + copy and paste layers + merge layers
354         + copy and paste items + bugfixes = 0.0.6
355 Direct manipulation, WYSIWYG moving + track connecting + etc = 0.0.7
356 track segment selection, deletion, track point deletion (create two segments or skip point) +
357         waypoint symbols + bugfixes = 0.0.8
358 toolbar + layer properties boxes changes, etc. + misc = 0.0.9
359 routes + misc + code cleanups = 0.0.10
360 map download ui + code cleanups + bugfixes = 0.0.11
361 other goodies, fixes, break release = 0.0.12
362 misc, etc. fixes, cleanups = 0.0.14
363 autotools, I18n + etc. = 0.0.15
364 fixes = 0.1.0
365
366 (NOT IMPORTANT. FF2 will come.)
367 functions write_utm, read_utm to save space
368 sizeof(Waypoint) != sizeof(components)! try to save disk space
369 len of layer for each layer so older versions can skip over new layers
370 Make it so if layertype >= vik_layer_num_types, skip layer. (in aggregatelayer.c)
371 Use magic numbers, and lengths to better prevent version messing ups (len of layer data, if extra, 
372   rest skip, if not enough, ignore, etc.) 9in layer file themselves)
373 ---
374
375 Viking 0.1.0 "It's been a long road..."
376
377 > 0.1.0: anylyzing speed and time, libgpspoint, misc goodies
378 > 0.2.0: garmap layers, utm zones, etc.
379
380 0.0.4 "Lame Duck Tape"
381 --------------------
382 0.0.6 "Where we're going, we don't need roads..."
383 --------------------
384 --Definitely:
385 UNDO DELETE LAYER!!! Or ask, maybe? For now, ask: later, maybe an undo "stack of commands" where things at the bottom of the stack are done only as new things push them down?
386 more "Forgive the user" kind of stuff.
387
388 FIXES:
389         Acceptable chars in dialog.c & gpspoint.c
390         file check if it's a directory for load & save.
391
392 Route support!
393
394 Toolbar
395 Do something similar with tools. layer_tools func in interface, then a tools structure, array, or add2menu func. humm
396
397 Track Colors -- PROBABLY.
398
399 viktrwlayer_dialog.c -- we MUST do this one.
400         No, even better Idea. framework where properties are stored as RESOURCES for each type of layer.
401         Each type of layer defines it's own resources and the viking layer dialog builder picks it up and draws the dialog.
402         Comments? Format? Fields?
403         Type: check, double/spin (including range, and all other params), string, double/entry, int/entry
404         And then subdivisions (tabs) of that. Track drawing, track colors, waypoints. or Drawing, Colors, ...
405
406 fix layers_menu_add_layers
407         I've made a mess of the add menu stuff. The add submeny is bad.
408         maybe a itemfactory thing in layer interface (for now, it's OK... but...) at the very least a serializedicon thing in 
409         interface so I don't have to serialize it every time... draining resources.
410
411         -- what if i have one menu with the icons and everything already made, and both vlp and wikwindow adds that? no, then i 
412         could't have custom callback data. what if all layer types' itemfactory items were modeled as "Add Layer/TRW Layer" Then 
413         I'd have an add layer menu in each?
414         -- think about it.
415
416
417 MAYBE:
418   MOVE A WAYPOINT
419   Waypoint Symbols, get started. symbols.c where i have a Name->ID mapping, then an ID->icon mapping. Get Started on Icons.
420   Merge 2 TRW Layer
421   Better CoordLayer.
422   Fix Some Bugs, Clean up Some Code.
423   Bulk Map Downloader (maybe another project)
424   renaming waypoints -- overwriting
425
426
427 And There's Your Release.
428
429 Other Ideas:
430 fix editing / move bug (ideas?)
431 copy & paste individual tracks & waypoints
432 tracks & waypoint ordering (?!)
433 don't forget about track SEGMENTs !!! (shoot for 0.0.5; should be in by 0.0.6)
434 vik_trw_layernew_track like waypoint. or maybe not (need starting point?)
435 I18N  -- at least fake ( all strs _() ized)
436 HIG compliance...
437 maybe export all visible trw's (nah, merge)
438 select waypoint; break up a track
439 Coordlayer color chooser
440 Coordlayer: UTM
441 trw_layer centerize: randompoints & average
442 maybe in item_add get visible and name from the layer / track / whatever itself.
443 ALSO, maybe chane set_name to update_name.
444 show tracks and waypoints (dynamic stuff)!! Copying between layers! YEAH
445
446 do some TODOs
447
448 ---------------------------------------
449 |                0.0.5                |
450 ---------------------------------------
451 | "Not all those who wander are lost" |
452 ---------------------------------------
453 Track & Waypoint sorting
454 Convert to GLIB Gobjects for layers
455 I18N
456 AutoTools
457 Track Colors
458 select waypoints; select trackpoints; selet track segments; measuring track & segment length; analyzing trackpoint altitude 
459 & time by selecting it; color by altitude/
460 Copy & Paste Layer (see below)
461 legend (length)
462
463 copying between layers: sublayer_add_menu_items () -> copy -> static pointer for layers panel, or whole process.
464 two ways of doing it: layer2copy & sublayer2copy, or general purpose "cliboard" var. on paste, layer / aggregate layer figures it out.
465 I vote for "layer2copy" and "sublayer2copy". That way, each layer can check if it can paste the sublayer and paste layer will always be there.
466 then you need a duplicate function for each thing you want to copy. shouldn't be too bad.
467
468
469 ~-~-~-~-~-~-~-~
470 0.0.6 "Where no man has gone before"
471 ---------------
472 Map Download Background Thread
473 LibGpsPoint
474 Settabl eFonts
475 UTM zones
476 Waypoint Symbols
477 Edit Timestamps
478 show different fields on side: altitude, time, etc. sort by these. maybe a layer edit dialog box.
479
480 ------
481 0.1.0
482 ------
483 Garmap Layer!
484
485
486 Other:
487 --------------
488 waypoint symbols
489 make your own timestamp
490 CACHE MAP SERVER IP; RETURN ERROR FOR WHY DOESNT WORK
491 MAP DOWNLOAD PROGERESS (!)
492 more g_asserts ... lots more 
493 UTM zones, aye...
494
495 ----------------------------------------
496 ========================================
497 ++++++++++++++++++++++++++++++++++++++++
498 fix tracks thing: STILL BUGS ! and clean up function maybe?
499 start noplace, when open file start in middle of there
500 clarification of new / open ( add to or what?  maybe add to in layer; merge layer stuff )
501 status bar: don't overlap stuff
502
503 i18n!!!
504
505 coordlayer -- ticks only
506 tick marks or lines for utm lines so you can tell where you are (TickLayer)
507
508 Intelligent Map Caching: knows which way you're going ... just something to think about.
509
510 Download all maps
511
512 routes
513 choosable gcs including background
514 Maybe each track has it's own GC? Just a thought.
515 Tools, explore etc. tools menu. tools window / bar
516 save stuff
517 status bar for track info, etc.
518
519 +TODO from otu ...
520
521 glist for routes (pointer directly to string used in ghashtable key? possible?) and tracks.
522
523 "Viking -- can you handle the power?"
524 "Viking -- where do you want to go today?"
525 "Viking -- where have you been today?"
526 "Viking -- where did you go today?"
527
528 "Vikingis Conqueris"
529
530 "The Viking Conquereth"
531 Viking 0.0.1pre15
532
533 Viking "the fake GIS"
534 Viking "the wannabee GIS"
535 Viking "CasiGIS"
536
537 Viking QuasiGIS (tm)
538
539 GPX support, loc.gz
540 So Many Possibilities...
541
542 OTU can do Viking can't:
543  * routes
544  * instant GPS location (sorta)