To Do List

  • Figure out how to use a portable vlc installation onto a usb memory stick so that bdj can be run from the usb and would not require any installation on to the main computer. This would be a no-python, no-mutagen, no-sox install. (2018-2-19)
  • Move the rest of the tcl stubs into the tcl/lib directory. (2018-2-1)
  • Create proper makefiles for all the tcl stubs. (2018-2-1)
  • MPV: library interface
    MPV also has a new IPC mechanism, but that's really not needed.
    libmpv includes the gui (yuck).
    libmpv sends the event notification in a separate thread. In the case of mpv, the event notification needs to do some processing, and the event needs to be forwarded to the tcl thread somehow. (2018-2-1, updated 2018-2-19)
  • Look into:
    Tcl/Python interface. This will make mutagen run faster when doing a db update/rebuild. The interface to mutagen will be better. (2018-1-1)
  • The auto selection algorithm still needs work. It is very dependent on the 'count' selection, and the singleton dances end up in the first part of the final list. One thing that might help, adjust all of the counts to match the user's total length. Not sure if this is the right thing to do.
  • The post-installer has hard-coded lists of dynamic libraries and executables. The dynamic libraries could be found automatically. For tcl/ directories, the list of executables needs to be updated.
  • Write a Tcl/Tk based installer.
    • 2017-10-11: basic functionality working.
    • Security: No root (or admin) access required. (done).
    • Hooks for pre-install, post-install, etc., etc. (done).
    • Automatic removal of old files on upgrade.
    • Eventually the update process can be moved here.
  • Add context string for each localized text string. At the moment, this is coded into the program so that the utilities can find the context string. Is there a better way to do this?
  • The resizable internal frame should be made into a megawidget if possible.
  • The code for checkButtonScaled is quite icky. Is there a better way to write this widget.
  • There are various functions within BallroomDJ that are not event driven. These need to be rewritten.
  • There are places within BallroomDJ where update and vwait are used. Each of these should be eventually reviewed and determined if they are actually necessary and documented. Converting some code to more event driven methods may help with some of these.
  • Figure out how to get libcrypto/libssl/tcltls built for windows w/o the gcc dependency. Figure out how to build on mac os x.


  • 3.18.0: The windows split into separate 32-bit and 64-bit installers has broken the update process. This needs to be fixed. The update process also needs to be checked to make sure it works for the 3.15.7 to 3.16.0 upgrade.
  • 3.16.0: Convert Linux to use a tcl/ directory rather than a tclkit (like darwin). Can windows do the same thing? This may reduce the start-up time for windows. Windows will need both a tclsh and wish.
    • Linux: would require a wrapper startup script to set LD_LIBRARY_PATH Or: set the runpath to have $ORIGIN in it. Easier to package this way.
    • Windows: does windows require the same? Does windows have an origin method?
  • 3.16.0: Music manager:
    • rewrite the ldata array to be a dict.
    • merge in the beenselected array.
    • merge in the revldata array.
  • Redo the toggle buttons to be wrapped widgets. Not entirely sure how to handle the images, could convert them to internal values, but that's a lot of data to carry around.
  • Want: Need a directory entry widget so that the directory is always displayed in the native/localized format, but the internal value returned is the normalized version. There is some junky code to redisplay the native version that needs to be replaced.
    • Mac OS X: The directories have a strange localization method that is a bit difficult to deal with. It will require checking for localized directories and caching the directory and its localized name. This needs to be integrated into the above widget. This could actually be part of the directory entry widget and be cached internally there.
  • [Made the directory entry widgets read-only so that the localization would work easily and there would be no need for reverse localization. Requires a button for all directory entry widgets.]
  • Need a good way to wrap widgets into new widgets and provide the new functionality without exposing the internals of the new widget. This is needed for several of the items below.
  • The indicator label widget should be redone and wrapped so that it is easier to use and put into a separate package. The helper utilities should be part of the widget and not separate.
  • The associative combo box widget also needs a better wrapper and needs to be put into a separate package. Any helper utilities should be part of the widget and not separate.


  • Look in to the tclpython library so that mutagen can be called directly rather than as an external program. This should make working with the utf-8 strings more robust. Need for windows, linux, mac os x. Python would still need to be installed, and making sure that tclpython picks up the correct shared library will be an issue. [This is not ready.]
Last modified 2 months ago Last modified on 2018-02-19T21:48:42-08:00