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