Mercurial > code > home > repos > light9
diff bin/curvecalc @ 696:929ccd4ec800
live reloading of curveview.py, very nice
Ignore-this: f7362d3c4f5215c1fe060fe8f06ebfe5
author | Drew Perttula <drewp@bigasterisk.com> |
---|---|
date | Sat, 09 Jun 2012 10:03:36 +0000 |
parents | 0b8fc64a896c |
children | 6e9b5ed1e863 |
line wrap: on
line diff
--- a/bin/curvecalc Fri Jun 08 07:54:32 2012 +0000 +++ b/bin/curvecalc Sat Jun 09 10:03:36 2012 +0000 @@ -28,7 +28,7 @@ from light9 import showconfig, prof from light9.curvecalc.zoomcontrol import Zoomcontrol from light9.curvecalc.curve import Curveset -from light9.curvecalc.curveview import Curvesetview +from light9.curvecalc import curveview from light9.curvecalc.musicaccess import Music, currentlyPlayingSong from light9.wavelength import wavelength from light9.uihelpers import toplevelat @@ -62,20 +62,32 @@ wtree.get_object("subterms") ) + def refreshCurveView(): + m = os.path.getmtime(curveview.__file__.replace('.pyc', '.py')) - curvesetView = Curvesetview(wtree.get_object("curves"), curveset) - self.curvesetView = curvesetView # mem problem; don't let this get lost - - # curvesetview must already exist, since this makes 'add_curve' - # signals for all the initial curves - curveset.load(basename=os.path.join( - showconfig.curvesDir(), - showconfig.songFilenameFromURI(song)), - skipMusic=opts.skip_music) - # this is scheduled after some tk shuffling, to try to minimize - # the number of times we redraw the curve at startup. If tk is - # very slow, it's ok. You'll just get some wasted redraws. - curvesetView.goLive() + if not hasattr(self, 'curvesetView') or self.curvesetView._mtime != m: + print "reload curveview.py" + curvesVBox = wtree.get_object("curves") + [curvesVBox.remove(c) for c in curvesVBox.get_children()] + reload(curveview) + # mem problem somewhere; need to hold a ref to this + self.curvesetView = curveview.Curvesetview( + curvesVBox, curveset) + self.curvesetView._mtime = m + + # curvesetview must already exist, since this makes 'add_curve' + # signals for all the initial curves + curveset.load(basename=os.path.join( + showconfig.curvesDir(), + showconfig.songFilenameFromURI(song)), + skipMusic=opts.skip_music) + # this is scheduled after some tk shuffling, to try to minimize + # the number of times we redraw the curve at startup. If tk is + # very slow, it's ok. You'll just get some wasted redraws. + self.curvesetView.goLive() + + reactor.callLater(1, refreshCurveView) + refreshCurveView() self.makeStatusLines(wtree.get_object("status"))