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