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