UI Changes ============ * Tell the user the format of some of the preferences fields (proxy and regular expressions) * Rethink the properties box and remove the button from the toolbar * Totally remove the download info page and move the information to: + The information of the auto download goes to a new column on the list. + The buttons go to the properties box + The rest go to a popping double click (on a list element) window * Make the list less taller and less wider * [DONE] Change the titles of the windows: + main window and message windows => GNOME Transfer Manager + other windows => title according to the content without GTM * [DONE] Auto-scroll the list when a new download starts to make that download visible * [DONE] Master switch to the auto download feature on the toolbar * [DONE] List information with (opening from the menu or something like that): + Number of files on the list + Number of complete files + Number of running files + Number of stopped files + Other information people might think it is useful * It's annoying to have GTM open just to wait for a connection to the network. So the applet will have an option to open GTM when it knows the network is up. * [DONE] Resize the applet according to the size of the panel. This is important with GNOME 1.2 because the panel has diferent sizes and we don't want the gtm_applet to be the one to ruin the party by not resizing like the other applets. Users wish list ================= * Segmented download to accelerate the download * Limit the number of downloads to a site * Handle message out-of-disk-space * Log the completed downloads (with the ability to reuse the logged URL) * report when it is impossible to resume (wget doesn't report this so it is impossible to do this right now using wget) * Scheduler for multiple time driven downloads (eg start this at 2am). A batch mode which would not require X would also be helpful for this. * bandwidth metering (eg don't use more than 50% of available bandwidth) * choose the best mirror to get a file from (have to configure the mirrors) * long term stats (total bytes transferred, file types, transfer rates, etc) * mail notification (run command when all downloads are complete (see above) might cover this). * Hide the "disable proxy" if the user doesn't have a proxy configured. * Text box on the toolbar to speed up URL adding (instead of the dialog box) * a search function that will interface to internet search programs such as FTPsearch thereby allowing the user to obtain multiple locations for the same file or group of files so that, if one connection is broken or too slow, gtm can switch to another connection and continue the download(s) * support recursive wget * Ability to select a group of files and have an option to "Send To Beginning" and "Send To End" on the menus and right click. * Ability to move a group of files at once via DND, and even if not contiguous. * It would be useful to automatically separate the list into In Progress/Waiting/Completed, in that order. * Ability to have separate "sessions" which have different file lists and default downloading prefs. This would mean you could run two GTMs (as long as it didn't use the same session) or switch between sessions in one instance (and stop downloading the previous session). This would make file lists more manageable too, and quickly allow you to choose which download you wanted to currently continue. * More retry settings, like "move to end between retries", and "minimum time between retries". * Ability to define prioritisation categories, so for example, all files on server x would be downloaded before server y, or all mpgs would be downloaded before all zips. * "Delete File" (from disk) and "Open File" actions (on double click). * Allow changing the whole URL, including the file name if the download has not already started. If it's partially downloaded, give the user various options, including rename on-disk file, delete on-disk file or cancel. If it is downloaded, give the same options plus one to leave the old file there. * When files selected, say somewhere how many files are selected. Useful for determining you've got all files when there's a lot. Possibly add "selected" column to list statistics. * Sort by various criteria as well as priority, eg file name, URL. * Ability to restart transfer even when already running. * Restore one/multiple files to default download options. * Automatic download policy selection based on URL/media-type. Currently only does directory on URL. * Forced reload checkbox, that will bypass caches. * Numeric download should support drag & drop that intelligently breaks down the URL into component parts rather than just dumping into first field. * Ability to remove finished files from the list * Improve directory matching capabilities, perhaps make it similar to the way email filter rules are typically set up. So as well as the current wildcard matching you could have "contains", "is exactly", "matches regular expression" etc. * Persist download log between sessions. * Support headers such as Referer, User-Agent, HTTP Authentication, plus custom headers. * Prevent GTM from downloading files with different file names if a redirect occurs. May require not using wget. * Support retrying a file when it turns out a "try again later" web page was downloaded. Either require a file to be of a minimum size, require the MIME type not be HTML, or require the downloaded file name to the requested one. * Ability to specify a different file name for the local file on disk. To change it you would have a checkbox on new single or numeric download. * If you try to drag and drop a file with the same file name as one that already exists you would have an option to bring up the "New Download" box so you can override the directory and/or file name. * Some way to specify the size of the download log, either in prefs or by a splitter. * Some way to disable the log. Maybe use a toolbutton like the download info. * Allow the user to specify what columns appear in the file list, and to resize them. Currently the file list uses the GTK CList widget. To fix this, GTM would either have to change to the GAL or GTK2 version, or destroy the file list and recreate it whenever the column list is changed. * Extra columns: download size, downloaded, percentage graph, download time, estimated download time remaining, estimated total download time, average download speed, 'instantaneous' download speed, 'running' download speed for a specified interval, local file name, local directory, originating program (possible?), extra HTTP headers, use proxy, use caches, use auto download, full URL, download completed date/time, download started date/time, download last started date/time, download last stopped date/time, scheduled start time. * Allow cookies to be set up that can be passed to a site. * Expand the URL pattern matching so can or always corresponds to an entire download policy (eg use proxy, use caches, custom headers, etc) * Maybe change numeric download's min and max numbers so that breaking min <= max by clicking one number will also move the other number in the same way so as to enforce min <= max, ie if the widgets were 2 -> 2 and you clicked to reduce max, min would also reduce, so as to give 1 -> 1. Then there is no need for the error message if max < min, just an assertion. * There are lots of different ways a URL can be refused (eg exists already & invalid URL). Where one of these errors occur, all the invalid URLs should appear along with the error. Where multiple URLs have an error, maybe list the error, then all the URLs with that error, then the next error, etc. * Do something about downloading directories. + Currently says: "Multiple download not implemented yet". "Download of directories not yet supported." would be better. + Dialog-add allows downloading directory indexes, but dialog-new gives the above error. Maybe just allow them to be downloaded? (Could require a file name to be specified?) * Provide an option to require that all URLs match a directory suggestion regexp. If they don't, pop up a dialog saying so and allow the user to define a new regexp for that URL. This would be like the normal dialog, except it would display the URL, and "OK" would check the URL matches the regexp. * Undo! Restore those accidentally lost URLs! * Port to the soon to be released GTK 2. * Either use the page info or properties box to allow you to change the options of a lot of URLs at once. At the moment you can only do this for auto download using the menus or toolbar. * Allow defining multiple proxy settings and let URLs choose one. * Applet should give a visual indication of the progress of a number of downloads that the application is downloading. * Do something with the status bar! Some ideas ============ * Convert the help system to docbook (almost done). * I'm going to change the interface to support the download of more than one file per URL and with this I mean also the use of options like mirror. (I'm more close to finish this goal!) * If someone requests it we can add more functions to idl. This way the program can be controled from an applet or another application if necessary. * I don't know yet how to implement upload but I must do it sometime because programs using GTM to manage transfers through it's CORBA interface might like it. (This is impossible with wget unless we use another way to transfer files) Possibly switching to libcurl might help with this. Developer Stuff ================= * Investigate ease of implementation and potential memory savings of sharing download policy structure and possibly other stuff between URLs. This may become more useful as more things are added to the download policy (eg HTTP headers). Would need to handle the fact that if you modify the download policy of one URL you would need to split a new download policy off unless it had a reference count of 1. * Download policy structure might also be useful elsewhere. * The current way of speeding up large file list loading is very kludgey. In particular file-list and file-data are dependent on each other circularly. There should be no references to file-list in file-data. * Perhaps make list statistics updating incremental rather than resumming every update. This should speed up large list loading a bit more. * Investigate source code sharing between applet and application. At least some dialog code should be shareable, in particular the directory suggestion stuff has been copied and pasted from applet to application in places. * Keep exploring possible transition to GLADE. GLADE seems too immature. Most troublesome issue is currently the lack of the ability to define a compound widget for the download policy widget. * Audit for where assertions should be placed. * Run a leak finding program and remove leaks. There are leaks. * Define ownership rules on interfaces and do a leak audit. This will find leaks that don't occur a lot in practice and might slip through a leak finding program. * Run a "lint" source code checking program. * Remove all FIXMEs.