Changeset - 5322639d61e9
[Not reviewed]
default
0 2 0
Drew Perttula - 20 years ago 2005-06-18 02:14:45
drewp@bigasterisk.com
refactoring and little fixes in curvecalc and keyboardcomposer
font change in KC, cleanup of CC's main section, maybe some little
fixes that i can't remember because darcs doesn't show the changes
at the same time i'm writing this message
2 files changed with 65 insertions and 45 deletions:
0 comments (0 inline, 0 general)
bin/curvecalc
Show inline comments
 
@@ -26,6 +26,11 @@ class Music:
 
        self.player=None # xmlrpc Proxy to player
 
        self.recenttime=0
 
        
 
        dispatcher.connect(self.seekplay_or_pause,"music seek")
 

	
 
    def seekplay_or_pause(self,t):
 
        self.music.seekplay_or_pause(t)
 
        
 
    def current_time(self):
 
        """return deferred which gets called with the current time"""
 
        if self.player is None:
 
@@ -155,10 +160,41 @@ class Subtermview(tk.Frame):
 
class Output:
 
    lastsendtime=0
 
    lastsendlevs=None
 
    def __init__(self,subterms):
 
        make_attributes_from_args('subterms')
 
    def __init__(self,subterms,music):
 
        make_attributes_from_args('subterms','music')
 

	
 
        self.recent_t=[]
 
        self.later = None
 

	
 
        self.update()
 
        
 
    def update(self):
 
        d = music.current_time()
 
        d.addCallback(self.update2)
 
        d.addErrback(self.updateerr)
 
        
 
    def updateerr(self,e):
 

	
 
        print e.getTraceback()
 
        dispatcher.send("update status",val=e.getErrorMessage())
 
        if self.later and not self.later.cancelled and not self.later.called:
 
            self.later.cancel()
 
        self.later = reactor.callLater(1,self.update)
 
        
 
    def update2(self,t):
 
        dispatcher.send("update status",
 
                        val="ok: receiving time from music player")
 
        if self.later and not self.later.cancelled and not self.later.called:
 
            self.later.cancel()
 

	
 
        self.later = reactor.callLater(.05, self.update)
 

	
 
        self.recent_t = self.recent_t[-50:]+[t]
 
        period = (self.recent_t[-1] - self.recent_t[0]) / len(self.recent_t)
 
        dispatcher.send("update period", val=period)
 
        self.send_dmx(t)
 
        
 
    def send_dmx(self,t):
 

	
 
        scaledsubs=[]
 
        for st in self.subterms:
 
            scl = st.scaled(t)
 
@@ -212,8 +248,10 @@ class SubtermSetView(tk.Frame):
 
        if self.cur_col == 0:
 
            self.cur_row += 1
 

	
 
def add_one_subterm(subname, curveset, subterms, root, ssv, expr=''):
 
    expr = expr or '%s(t)' % subname
 
def add_one_subterm(subname, curveset, subterms, root, ssv, expr=None):
 
    if expr is None:
 
        expr = '%s(t)' % subname
 

	
 
    term = Subterm(Submaster.Submaster(subname), Subexpr(curveset,expr))
 
    subterms.append(term)
 

	
 
@@ -244,6 +282,19 @@ def sub_commands_tk(master, curveset, su
 

	
 
    return f
 
    
 
def add_subterms_from_file(filename, curveset, subterms, root, ssv):
 
    for line in file(filename):
 
        try:
 
            subname,expr = line.strip().split(" ",1)
 
        except ValueError:
 
            subname = line.strip()
 
            expr = ""
 

	
 
        term = add_one_subterm(subname, curveset, subterms, root, ssv, expr)
 

	
 
        # stv=Subtermview(root,term)
 
        # stv.pack(side='top',fill='x')
 

	
 
#######################################################################
 
root=tk.Tk()
 
root.tk_setPalette("gray50")
 
@@ -259,7 +310,6 @@ except IndexError:
 
    raise SystemExit("song name is required, e.g. '05-mix'")
 

	
 
music=Music()
 
dispatcher.connect(lambda t: music.seekplay_or_pause(t),"music seek")
 

	
 
zc = Zoomcontrol(root)
 
zc.pack(side='top',fill='x')
 
@@ -282,19 +332,10 @@ curveset.load(basename=os.path.join(show
 
subterms = []
 
sub_commands_tk(root, curveset, subterms, root, ssv).pack(side='top',fill='x')
 

	
 
for line in file(showconfig.subtermsForSong(song)):
 
    try:
 
        subname,expr = line.strip().split(" ",1)
 
    except ValueError:
 
        subname = line.strip()
 
        expr = ""
 
add_subterms_from_file(showconfig.subtermsForSong(song),
 
                       curveset, subterms, root, ssv)
 

	
 
    term = add_one_subterm(subname, curveset, subterms, root, ssv, expr)
 
    
 
    # stv=Subtermview(root,term)
 
    # stv.pack(side='top',fill='x')
 

	
 
out = Output(subterms)
 
out = Output(subterms, music)
 

	
 
def savekey(*args):
 
    print "saving",song
 
@@ -311,32 +352,6 @@ for helpline in ["Bindings: C-s save sub
 
    tk.Label(root,text=helpline, font="Helvetica -12 italic",
 
             anchor='w').pack(side='top',fill='x')
 

	
 
recent_t=[]
 
later = None
 
def update():
 
    global later
 
    d = music.current_time()
 
    d.addCallback(update2)
 
    d.addErrback(updateerr)
 
def updateerr(e):
 
    global later
 
    dispatcher.send("update status",val=e.getErrorMessage())
 
    if later and not later.cancelled and not later.called: later.cancel()
 
    later = reactor.callLater(1,update)
 
def update2(t):
 
    global recent_t,later
 
    dispatcher.send("update status",
 
                    val="ok: receiving time from music player")
 
    if later and not later.cancelled and not later.called: later.cancel()
 
    
 
    later = reactor.callLater(.05,update)
 

	
 
    recent_t = recent_t[-50:]+[t]
 
    period = (recent_t[-1]-recent_t[0])/len(recent_t)
 
    dispatcher.send("update period",val=period)
 
    out.send_dmx(t)
 
update()
 

	
 
#def logprint(msg):
 
#    print "log",msg
 
#twisted.python.log.addObserver(logprint)
bin/keyboardcomposer
Show inline comments
 
@@ -46,7 +46,7 @@ class SubmasterTk(Frame):
 
        self.slider_var = DoubleVar()
 
        self.slider_var.set(current_level)
 
        self.scale = SubScale(self, variable=self.slider_var, width=20)
 
        namelabel = Label(self, text=name, font="Arial 11", bg='black',
 
        namelabel = Label(self, text=name, font="Arial 9", bg='black',
 
            fg='white')
 
        namelabel.pack(side=TOP)
 
        levellabel = Label(self, textvariable=self.slider_var, font="Arial 11",
 
@@ -279,4 +279,9 @@ if __name__ == "__main__":
 
    reactor.addSystemEventTrigger('after', 'shutdown', kc.save)
 
    
 
    tksupport.install(root,ms=10)
 
    if 0:
 
        sys.path.append("/home/drewp/projects/cuisine/pour")
 
        from utils import runstats
 
        runstats("reactor.run()")
 
    else:
 
    reactor.run()
0 comments (0 inline, 0 general)