annotate bin/curvecalc @ 695:0b8fc64a896c

goocanvas drawing a little Ignore-this: aae191151f454a98caa671b65d080029
author Drew Perttula <drewp@bigasterisk.com>
date Fri, 08 Jun 2012 07:54:32 +0000
parents 34dacd800505
children 929ccd4ec800
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
686
a301a0039c66 buildout and rdflib updates
Drew Perttula <drewp@bigasterisk.com>
parents: 684
diff changeset
1 #!bin/python
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
2
197
ba2677823b35 zoom control and other cleanups. also reads song length now
drewp
parents: 196
diff changeset
3 """
351
a6662d61ebcd SC, KC, CC now run and seem to load and save ok. CC does not have any rdf for its data files
Drew Perttula <drewp@bigasterisk.com>
parents: 335
diff changeset
4 now launches like this:
a6662d61ebcd SC, KC, CC now run and seem to load and save ok. CC does not have any rdf for its data files
Drew Perttula <drewp@bigasterisk.com>
parents: 335
diff changeset
5 % bin/curvecalc http://light9.bigasterisk.com/show/dance2007/song1
a6662d61ebcd SC, KC, CC now run and seem to load and save ok. CC does not have any rdf for its data files
Drew Perttula <drewp@bigasterisk.com>
parents: 335
diff changeset
6
a6662d61ebcd SC, KC, CC now run and seem to load and save ok. CC does not have any rdf for its data files
Drew Perttula <drewp@bigasterisk.com>
parents: 335
diff changeset
7
a6662d61ebcd SC, KC, CC now run and seem to load and save ok. CC does not have any rdf for its data files
Drew Perttula <drewp@bigasterisk.com>
parents: 335
diff changeset
8
197
ba2677823b35 zoom control and other cleanups. also reads song length now
drewp
parents: 196
diff changeset
9 todo: curveview should preserve more objects, for speed maybe
ba2677823b35 zoom control and other cleanups. also reads song length now
drewp
parents: 196
diff changeset
10
ba2677823b35 zoom control and other cleanups. also reads song length now
drewp
parents: 196
diff changeset
11 """
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
12 from __future__ import division
694
34dacd800505 eval loop is running, music drives lights. started to add goocanvas curve view
Drew Perttula <drewp@bigasterisk.com>
parents: 692
diff changeset
13
691
62d83d456f2e curvecalc start gtk porting
drewp@bigasterisk.com
parents: 690
diff changeset
14 from twisted.internet import gtk2reactor
694
34dacd800505 eval loop is running, music drives lights. started to add goocanvas curve view
Drew Perttula <drewp@bigasterisk.com>
parents: 692
diff changeset
15 gtk2reactor.install()
34dacd800505 eval loop is running, music drives lights. started to add goocanvas curve view
Drew Perttula <drewp@bigasterisk.com>
parents: 692
diff changeset
16 from twisted.internet import reactor
34dacd800505 eval loop is running, music drives lights. started to add goocanvas curve view
Drew Perttula <drewp@bigasterisk.com>
parents: 692
diff changeset
17
34dacd800505 eval loop is running, music drives lights. started to add goocanvas curve view
Drew Perttula <drewp@bigasterisk.com>
parents: 692
diff changeset
18 import time, textwrap, os, optparse, urllib2, gtk, gobject
689
03453848ed4c refactor musicaccess
drewp@bigasterisk.com
parents: 688
diff changeset
19 import louie as dispatcher
691
62d83d456f2e curvecalc start gtk porting
drewp@bigasterisk.com
parents: 690
diff changeset
20 from twisted.python.util import sibpath
690
847edbfe65c8 refactor subterms
drewp@bigasterisk.com
parents: 689
diff changeset
21 from rdflib import URIRef
686
a301a0039c66 buildout and rdflib updates
Drew Perttula <drewp@bigasterisk.com>
parents: 684
diff changeset
22 from rdflib import Graph
400
b2858c2d4a4d aft() has smooth arg; workaround for CC writing poor subterms
Drew Perttula <drewp@bigasterisk.com>
parents: 399
diff changeset
23 import rdflib
319
2193eab0650b add startup logging to curvecalc
Drew Perttula <drewp@bigasterisk.com>
parents: 296
diff changeset
24 import logging
2193eab0650b add startup logging to curvecalc
Drew Perttula <drewp@bigasterisk.com>
parents: 296
diff changeset
25 log = logging.getLogger()
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
26
210
f41004d5a507 factored out some networking, new show/ layout, curvecalc works
drewp@bigasterisk.com
parents: 205
diff changeset
27 import run_local
690
847edbfe65c8 refactor subterms
drewp@bigasterisk.com
parents: 689
diff changeset
28 from light9 import showconfig, prof
688
97b028ed0e47 curvecalc package move
drewp@bigasterisk.com
parents: 687
diff changeset
29 from light9.curvecalc.zoomcontrol import Zoomcontrol
97b028ed0e47 curvecalc package move
drewp@bigasterisk.com
parents: 687
diff changeset
30 from light9.curvecalc.curve import Curveset
97b028ed0e47 curvecalc package move
drewp@bigasterisk.com
parents: 687
diff changeset
31 from light9.curvecalc.curveview import Curvesetview
689
03453848ed4c refactor musicaccess
drewp@bigasterisk.com
parents: 688
diff changeset
32 from light9.curvecalc.musicaccess import Music, currentlyPlayingSong
264
0f112a7dd6b3 fix window positoins for subcomposer and curvecalc. now saves geometry continuously
drewp@bigasterisk.com
parents: 248
diff changeset
33 from light9.wavelength import wavelength
0f112a7dd6b3 fix window positoins for subcomposer and curvecalc. now saves geometry continuously
drewp@bigasterisk.com
parents: 248
diff changeset
34 from light9.uihelpers import toplevelat
335
8a1ec8aca432 more rdf updates
drewp@bigasterisk.com
parents: 332
diff changeset
35 from light9.namespaces import L9
690
847edbfe65c8 refactor subterms
drewp@bigasterisk.com
parents: 689
diff changeset
36 from light9.curvecalc.subterm import read_all_subs, savekey, graphPathForSubterms
694
34dacd800505 eval loop is running, music drives lights. started to add goocanvas curve view
Drew Perttula <drewp@bigasterisk.com>
parents: 692
diff changeset
37 from light9.curvecalc.subtermview import add_one_subterm
690
847edbfe65c8 refactor subterms
drewp@bigasterisk.com
parents: 689
diff changeset
38 from light9.curvecalc.output import Output
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
39
505
cbc98de2ab06 refactor curveCalc toplevel
drewp@bigasterisk.com
parents: 493
diff changeset
40 def makeGraph():
cbc98de2ab06 refactor curveCalc toplevel
drewp@bigasterisk.com
parents: 493
diff changeset
41 graphOrig = showconfig.getGraph()
cbc98de2ab06 refactor curveCalc toplevel
drewp@bigasterisk.com
parents: 493
diff changeset
42 graph = Graph() # a copy, since we're going to add subs into it
cbc98de2ab06 refactor curveCalc toplevel
drewp@bigasterisk.com
parents: 493
diff changeset
43 for s in graphOrig:
cbc98de2ab06 refactor curveCalc toplevel
drewp@bigasterisk.com
parents: 493
diff changeset
44 graph.add(s)
cbc98de2ab06 refactor curveCalc toplevel
drewp@bigasterisk.com
parents: 493
diff changeset
45 read_all_subs(graph)
cbc98de2ab06 refactor curveCalc toplevel
drewp@bigasterisk.com
parents: 493
diff changeset
46 return graph
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
47
691
62d83d456f2e curvecalc start gtk porting
drewp@bigasterisk.com
parents: 690
diff changeset
48 class Main(object):
694
34dacd800505 eval loop is running, music drives lights. started to add goocanvas curve view
Drew Perttula <drewp@bigasterisk.com>
parents: 692
diff changeset
49 def __init__(self, graph, opts, song, curveset, subterms):
692
ccdd04f4ca7d subterm display is working
Drew Perttula <drewp@bigasterisk.com>
parents: 691
diff changeset
50 self.graph = graph
691
62d83d456f2e curvecalc start gtk porting
drewp@bigasterisk.com
parents: 690
diff changeset
51 wtree = gtk.Builder()
62d83d456f2e curvecalc start gtk porting
drewp@bigasterisk.com
parents: 690
diff changeset
52 wtree.add_from_file(sibpath(__file__, "../light9/curvecalc/curvecalc.glade"))
62d83d456f2e curvecalc start gtk porting
drewp@bigasterisk.com
parents: 690
diff changeset
53 mainwin = wtree.get_object("MainWindow")
62d83d456f2e curvecalc start gtk porting
drewp@bigasterisk.com
parents: 690
diff changeset
54 mainwin.connect("destroy", gtk.main_quit)
62d83d456f2e curvecalc start gtk porting
drewp@bigasterisk.com
parents: 690
diff changeset
55 wtree.connect_signals(self)
62d83d456f2e curvecalc start gtk porting
drewp@bigasterisk.com
parents: 690
diff changeset
56 mainwin.show_all()
62d83d456f2e curvecalc start gtk porting
drewp@bigasterisk.com
parents: 690
diff changeset
57
694
34dacd800505 eval loop is running, music drives lights. started to add goocanvas curve view
Drew Perttula <drewp@bigasterisk.com>
parents: 692
diff changeset
58 mainwin.connect("delete-event", lambda *args: reactor.crash())
692
ccdd04f4ca7d subterm display is working
Drew Perttula <drewp@bigasterisk.com>
parents: 691
diff changeset
59 mainwin.set_title("curvecalc - %s" % graph.label(song))
694
34dacd800505 eval loop is running, music drives lights. started to add goocanvas curve view
Drew Perttula <drewp@bigasterisk.com>
parents: 692
diff changeset
60
692
ccdd04f4ca7d subterm display is working
Drew Perttula <drewp@bigasterisk.com>
parents: 691
diff changeset
61 self.add_subterms_for_song(song, curveset, subterms,
ccdd04f4ca7d subterm display is working
Drew Perttula <drewp@bigasterisk.com>
parents: 691
diff changeset
62 wtree.get_object("subterms")
ccdd04f4ca7d subterm display is working
Drew Perttula <drewp@bigasterisk.com>
parents: 691
diff changeset
63 )
ccdd04f4ca7d subterm display is working
Drew Perttula <drewp@bigasterisk.com>
parents: 691
diff changeset
64
694
34dacd800505 eval loop is running, music drives lights. started to add goocanvas curve view
Drew Perttula <drewp@bigasterisk.com>
parents: 692
diff changeset
65
34dacd800505 eval loop is running, music drives lights. started to add goocanvas curve view
Drew Perttula <drewp@bigasterisk.com>
parents: 692
diff changeset
66 curvesetView = Curvesetview(wtree.get_object("curves"), curveset)
695
0b8fc64a896c goocanvas drawing a little
Drew Perttula <drewp@bigasterisk.com>
parents: 694
diff changeset
67 self.curvesetView = curvesetView # mem problem; don't let this get lost
0b8fc64a896c goocanvas drawing a little
Drew Perttula <drewp@bigasterisk.com>
parents: 694
diff changeset
68
694
34dacd800505 eval loop is running, music drives lights. started to add goocanvas curve view
Drew Perttula <drewp@bigasterisk.com>
parents: 692
diff changeset
69 # curvesetview must already exist, since this makes 'add_curve'
34dacd800505 eval loop is running, music drives lights. started to add goocanvas curve view
Drew Perttula <drewp@bigasterisk.com>
parents: 692
diff changeset
70 # signals for all the initial curves
34dacd800505 eval loop is running, music drives lights. started to add goocanvas curve view
Drew Perttula <drewp@bigasterisk.com>
parents: 692
diff changeset
71 curveset.load(basename=os.path.join(
34dacd800505 eval loop is running, music drives lights. started to add goocanvas curve view
Drew Perttula <drewp@bigasterisk.com>
parents: 692
diff changeset
72 showconfig.curvesDir(),
34dacd800505 eval loop is running, music drives lights. started to add goocanvas curve view
Drew Perttula <drewp@bigasterisk.com>
parents: 692
diff changeset
73 showconfig.songFilenameFromURI(song)),
34dacd800505 eval loop is running, music drives lights. started to add goocanvas curve view
Drew Perttula <drewp@bigasterisk.com>
parents: 692
diff changeset
74 skipMusic=opts.skip_music)
34dacd800505 eval loop is running, music drives lights. started to add goocanvas curve view
Drew Perttula <drewp@bigasterisk.com>
parents: 692
diff changeset
75 # this is scheduled after some tk shuffling, to try to minimize
34dacd800505 eval loop is running, music drives lights. started to add goocanvas curve view
Drew Perttula <drewp@bigasterisk.com>
parents: 692
diff changeset
76 # the number of times we redraw the curve at startup. If tk is
34dacd800505 eval loop is running, music drives lights. started to add goocanvas curve view
Drew Perttula <drewp@bigasterisk.com>
parents: 692
diff changeset
77 # very slow, it's ok. You'll just get some wasted redraws.
34dacd800505 eval loop is running, music drives lights. started to add goocanvas curve view
Drew Perttula <drewp@bigasterisk.com>
parents: 692
diff changeset
78 curvesetView.goLive()
34dacd800505 eval loop is running, music drives lights. started to add goocanvas curve view
Drew Perttula <drewp@bigasterisk.com>
parents: 692
diff changeset
79
34dacd800505 eval loop is running, music drives lights. started to add goocanvas curve view
Drew Perttula <drewp@bigasterisk.com>
parents: 692
diff changeset
80 self.makeStatusLines(wtree.get_object("status"))
34dacd800505 eval loop is running, music drives lights. started to add goocanvas curve view
Drew Perttula <drewp@bigasterisk.com>
parents: 692
diff changeset
81
34dacd800505 eval loop is running, music drives lights. started to add goocanvas curve view
Drew Perttula <drewp@bigasterisk.com>
parents: 692
diff changeset
82 #zc = Zoomcontrol(root)
34dacd800505 eval loop is running, music drives lights. started to add goocanvas curve view
Drew Perttula <drewp@bigasterisk.com>
parents: 692
diff changeset
83
34dacd800505 eval loop is running, music drives lights. started to add goocanvas curve view
Drew Perttula <drewp@bigasterisk.com>
parents: 692
diff changeset
84 def onSave(self, *args):
34dacd800505 eval loop is running, music drives lights. started to add goocanvas curve view
Drew Perttula <drewp@bigasterisk.com>
parents: 692
diff changeset
85 savekey(song, subterms, curveset)
34dacd800505 eval loop is running, music drives lights. started to add goocanvas curve view
Drew Perttula <drewp@bigasterisk.com>
parents: 692
diff changeset
86
692
ccdd04f4ca7d subterm display is working
Drew Perttula <drewp@bigasterisk.com>
parents: 691
diff changeset
87 def add_subterms_for_song(self, song, curveset, subterms, master):
ccdd04f4ca7d subterm display is working
Drew Perttula <drewp@bigasterisk.com>
parents: 691
diff changeset
88 for st in self.graph.objects(song, L9['subterm']):
ccdd04f4ca7d subterm display is working
Drew Perttula <drewp@bigasterisk.com>
parents: 691
diff changeset
89 log.info("song %s has subterm %s", song, st)
ccdd04f4ca7d subterm display is working
Drew Perttula <drewp@bigasterisk.com>
parents: 691
diff changeset
90 add_one_subterm(self.graph,
ccdd04f4ca7d subterm display is working
Drew Perttula <drewp@bigasterisk.com>
parents: 691
diff changeset
91 self.graph.value(st, L9['sub']),
ccdd04f4ca7d subterm display is working
Drew Perttula <drewp@bigasterisk.com>
parents: 691
diff changeset
92 curveset,
ccdd04f4ca7d subterm display is working
Drew Perttula <drewp@bigasterisk.com>
parents: 691
diff changeset
93 subterms,
ccdd04f4ca7d subterm display is working
Drew Perttula <drewp@bigasterisk.com>
parents: 691
diff changeset
94 master,
ccdd04f4ca7d subterm display is working
Drew Perttula <drewp@bigasterisk.com>
parents: 691
diff changeset
95 self.graph.value(st, L9['expression']))
ccdd04f4ca7d subterm display is working
Drew Perttula <drewp@bigasterisk.com>
parents: 691
diff changeset
96 master.show_all()
ccdd04f4ca7d subterm display is working
Drew Perttula <drewp@bigasterisk.com>
parents: 691
diff changeset
97
694
34dacd800505 eval loop is running, music drives lights. started to add goocanvas curve view
Drew Perttula <drewp@bigasterisk.com>
parents: 692
diff changeset
98 def makeStatusLines(self, master):
34dacd800505 eval loop is running, music drives lights. started to add goocanvas curve view
Drew Perttula <drewp@bigasterisk.com>
parents: 692
diff changeset
99 """various labels that listen for dispatcher signals"""
34dacd800505 eval loop is running, music drives lights. started to add goocanvas curve view
Drew Perttula <drewp@bigasterisk.com>
parents: 692
diff changeset
100 for row, (signame, textfilter) in enumerate([
34dacd800505 eval loop is running, music drives lights. started to add goocanvas curve view
Drew Perttula <drewp@bigasterisk.com>
parents: 692
diff changeset
101 ('input time', lambda t: "%.2fs"%t),
34dacd800505 eval loop is running, music drives lights. started to add goocanvas curve view
Drew Perttula <drewp@bigasterisk.com>
parents: 692
diff changeset
102 ('output levels',
34dacd800505 eval loop is running, music drives lights. started to add goocanvas curve view
Drew Perttula <drewp@bigasterisk.com>
parents: 692
diff changeset
103 lambda levels: textwrap.fill("; ".join(["%s:%.2f"%(n,v)
34dacd800505 eval loop is running, music drives lights. started to add goocanvas curve view
Drew Perttula <drewp@bigasterisk.com>
parents: 692
diff changeset
104 for n,v in
34dacd800505 eval loop is running, music drives lights. started to add goocanvas curve view
Drew Perttula <drewp@bigasterisk.com>
parents: 692
diff changeset
105 levels.items()[:5]
34dacd800505 eval loop is running, music drives lights. started to add goocanvas curve view
Drew Perttula <drewp@bigasterisk.com>
parents: 692
diff changeset
106 if v>0]),70)),
34dacd800505 eval loop is running, music drives lights. started to add goocanvas curve view
Drew Perttula <drewp@bigasterisk.com>
parents: 692
diff changeset
107 ('update period', lambda t: "%.1fms"%(t*1000)),
34dacd800505 eval loop is running, music drives lights. started to add goocanvas curve view
Drew Perttula <drewp@bigasterisk.com>
parents: 692
diff changeset
108 ('update status', lambda x: str(x)),
34dacd800505 eval loop is running, music drives lights. started to add goocanvas curve view
Drew Perttula <drewp@bigasterisk.com>
parents: 692
diff changeset
109 ]):
34dacd800505 eval loop is running, music drives lights. started to add goocanvas curve view
Drew Perttula <drewp@bigasterisk.com>
parents: 692
diff changeset
110 key = gtk.Label("%s:" % signame)
34dacd800505 eval loop is running, music drives lights. started to add goocanvas curve view
Drew Perttula <drewp@bigasterisk.com>
parents: 692
diff changeset
111 value = gtk.Label("")
34dacd800505 eval loop is running, music drives lights. started to add goocanvas curve view
Drew Perttula <drewp@bigasterisk.com>
parents: 692
diff changeset
112 master.resize(row + 1, 2)
34dacd800505 eval loop is running, music drives lights. started to add goocanvas curve view
Drew Perttula <drewp@bigasterisk.com>
parents: 692
diff changeset
113 master.attach(key, 0, 1, row, row + 1)
34dacd800505 eval loop is running, music drives lights. started to add goocanvas curve view
Drew Perttula <drewp@bigasterisk.com>
parents: 692
diff changeset
114 master.attach(value, 1, 2, row, row + 1)
34dacd800505 eval loop is running, music drives lights. started to add goocanvas curve view
Drew Perttula <drewp@bigasterisk.com>
parents: 692
diff changeset
115 key.set_alignment(1, 0)
34dacd800505 eval loop is running, music drives lights. started to add goocanvas curve view
Drew Perttula <drewp@bigasterisk.com>
parents: 692
diff changeset
116 value.set_alignment(0, 0)
34dacd800505 eval loop is running, music drives lights. started to add goocanvas curve view
Drew Perttula <drewp@bigasterisk.com>
parents: 692
diff changeset
117
34dacd800505 eval loop is running, music drives lights. started to add goocanvas curve view
Drew Perttula <drewp@bigasterisk.com>
parents: 692
diff changeset
118 dispatcher.connect(lambda val, value=value, tf=textfilter:
34dacd800505 eval loop is running, music drives lights. started to add goocanvas curve view
Drew Perttula <drewp@bigasterisk.com>
parents: 692
diff changeset
119 value.set_text(tf(val)),
34dacd800505 eval loop is running, music drives lights. started to add goocanvas curve view
Drew Perttula <drewp@bigasterisk.com>
parents: 692
diff changeset
120 signame, weak=False)
34dacd800505 eval loop is running, music drives lights. started to add goocanvas curve view
Drew Perttula <drewp@bigasterisk.com>
parents: 692
diff changeset
121 master.show_all()
34dacd800505 eval loop is running, music drives lights. started to add goocanvas curve view
Drew Perttula <drewp@bigasterisk.com>
parents: 692
diff changeset
122
34dacd800505 eval loop is running, music drives lights. started to add goocanvas curve view
Drew Perttula <drewp@bigasterisk.com>
parents: 692
diff changeset
123
34dacd800505 eval loop is running, music drives lights. started to add goocanvas curve view
Drew Perttula <drewp@bigasterisk.com>
parents: 692
diff changeset
124 def onReloadSubs(self): # wants to be ctrl-r too
34dacd800505 eval loop is running, music drives lights. started to add goocanvas curve view
Drew Perttula <drewp@bigasterisk.com>
parents: 692
diff changeset
125 dispatcher.send('reload all subs')
34dacd800505 eval loop is running, music drives lights. started to add goocanvas curve view
Drew Perttula <drewp@bigasterisk.com>
parents: 692
diff changeset
126
34dacd800505 eval loop is running, music drives lights. started to add goocanvas curve view
Drew Perttula <drewp@bigasterisk.com>
parents: 692
diff changeset
127 def onAddSubterm(self):
34dacd800505 eval loop is running, music drives lights. started to add goocanvas curve view
Drew Perttula <drewp@bigasterisk.com>
parents: 692
diff changeset
128 uri = L9['sub/%s' % newname.get()]
34dacd800505 eval loop is running, music drives lights. started to add goocanvas curve view
Drew Perttula <drewp@bigasterisk.com>
parents: 692
diff changeset
129 graph.add((uri, RDF.type, L9.Subterm))
34dacd800505 eval loop is running, music drives lights. started to add goocanvas curve view
Drew Perttula <drewp@bigasterisk.com>
parents: 692
diff changeset
130 graph.add((uri, RDFS.label, Literal(newname.get())))
34dacd800505 eval loop is running, music drives lights. started to add goocanvas curve view
Drew Perttula <drewp@bigasterisk.com>
parents: 692
diff changeset
131 add_one_subterm(graph, uri,
34dacd800505 eval loop is running, music drives lights. started to add goocanvas curve view
Drew Perttula <drewp@bigasterisk.com>
parents: 692
diff changeset
132 curveset, subterms, ssv, None)
34dacd800505 eval loop is running, music drives lights. started to add goocanvas curve view
Drew Perttula <drewp@bigasterisk.com>
parents: 692
diff changeset
133 if evt.state & 4: # control key modifier
34dacd800505 eval loop is running, music drives lights. started to add goocanvas curve view
Drew Perttula <drewp@bigasterisk.com>
parents: 692
diff changeset
134 curveset.new_curve(newname.get())
34dacd800505 eval loop is running, music drives lights. started to add goocanvas curve view
Drew Perttula <drewp@bigasterisk.com>
parents: 692
diff changeset
135 newname.set('')
34dacd800505 eval loop is running, music drives lights. started to add goocanvas curve view
Drew Perttula <drewp@bigasterisk.com>
parents: 692
diff changeset
136
34dacd800505 eval loop is running, music drives lights. started to add goocanvas curve view
Drew Perttula <drewp@bigasterisk.com>
parents: 692
diff changeset
137
505
cbc98de2ab06 refactor curveCalc toplevel
drewp@bigasterisk.com
parents: 493
diff changeset
138 def main():
680
ad17b0a09f5c CC more startup logging, timing option to quit after init
drewp@bigasterisk.com
parents: 641
diff changeset
139 startTime = time.time()
505
cbc98de2ab06 refactor curveCalc toplevel
drewp@bigasterisk.com
parents: 493
diff changeset
140 parser = optparse.OptionParser()
551
ad5043f70fda bin/curvecalc (with no song choice) defaults to whatever-ascoltami-is-currently-on
drewp@bigasterisk.com
parents: 532
diff changeset
141 parser.set_usage("%prog [opts] [songURI]")
505
cbc98de2ab06 refactor curveCalc toplevel
drewp@bigasterisk.com
parents: 493
diff changeset
142 parser.add_option("--sliders", action='store_true',
cbc98de2ab06 refactor curveCalc toplevel
drewp@bigasterisk.com
parents: 493
diff changeset
143 help='use hardware sliders')
cbc98de2ab06 refactor curveCalc toplevel
drewp@bigasterisk.com
parents: 493
diff changeset
144 parser.add_option("--skip-music", action='store_true',
cbc98de2ab06 refactor curveCalc toplevel
drewp@bigasterisk.com
parents: 493
diff changeset
145 help="ignore music and smooth_music curve files")
680
ad17b0a09f5c CC more startup logging, timing option to quit after init
drewp@bigasterisk.com
parents: 641
diff changeset
146 parser.add_option("--debug", action="store_true",
ad17b0a09f5c CC more startup logging, timing option to quit after init
drewp@bigasterisk.com
parents: 641
diff changeset
147 help="log at DEBUG")
ad17b0a09f5c CC more startup logging, timing option to quit after init
drewp@bigasterisk.com
parents: 641
diff changeset
148 parser.add_option("--startup-only", action='store_true',
ad17b0a09f5c CC more startup logging, timing option to quit after init
drewp@bigasterisk.com
parents: 641
diff changeset
149 help="quit after loading everything (for timing tests)")
505
cbc98de2ab06 refactor curveCalc toplevel
drewp@bigasterisk.com
parents: 493
diff changeset
150 opts, args = parser.parse_args()
cbc98de2ab06 refactor curveCalc toplevel
drewp@bigasterisk.com
parents: 493
diff changeset
151
590
0cf00fffd921 logging
drewp@bigasterisk.com
parents: 551
diff changeset
152 logging.basicConfig(format="%(asctime)s %(levelname)-5s %(name)s %(filename)s:%(lineno)d: %(message)s")
680
ad17b0a09f5c CC more startup logging, timing option to quit after init
drewp@bigasterisk.com
parents: 641
diff changeset
153 log.setLevel(logging.DEBUG if opts.debug else logging.INFO)
590
0cf00fffd921 logging
drewp@bigasterisk.com
parents: 551
diff changeset
154
680
ad17b0a09f5c CC more startup logging, timing option to quit after init
drewp@bigasterisk.com
parents: 641
diff changeset
155 log.debug("startup: music %s", time.time() - startTime)
505
cbc98de2ab06 refactor curveCalc toplevel
drewp@bigasterisk.com
parents: 493
diff changeset
156 try:
cbc98de2ab06 refactor curveCalc toplevel
drewp@bigasterisk.com
parents: 493
diff changeset
157 song = URIRef(args[0])
cbc98de2ab06 refactor curveCalc toplevel
drewp@bigasterisk.com
parents: 493
diff changeset
158 except IndexError:
551
ad5043f70fda bin/curvecalc (with no song choice) defaults to whatever-ascoltami-is-currently-on
drewp@bigasterisk.com
parents: 532
diff changeset
159 song = currentlyPlayingSong()
505
cbc98de2ab06 refactor curveCalc toplevel
drewp@bigasterisk.com
parents: 493
diff changeset
160
cbc98de2ab06 refactor curveCalc toplevel
drewp@bigasterisk.com
parents: 493
diff changeset
161 music=Music()
516
73b181155555 curvecalc ui touchups, adjustable pane, curve draw speedup, restructured main layout code
drewp@bigasterisk.com
parents: 505
diff changeset
162 graph = makeGraph()
691
62d83d456f2e curvecalc start gtk porting
drewp@bigasterisk.com
parents: 690
diff changeset
163
505
cbc98de2ab06 refactor curveCalc toplevel
drewp@bigasterisk.com
parents: 493
diff changeset
164 curveset = Curveset(sliders=opts.sliders)
516
73b181155555 curvecalc ui touchups, adjustable pane, curve draw speedup, restructured main layout code
drewp@bigasterisk.com
parents: 505
diff changeset
165 subterms = []
505
cbc98de2ab06 refactor curveCalc toplevel
drewp@bigasterisk.com
parents: 493
diff changeset
166
637
af5539fe35a7 CC startup doesn't need a subterms file. it'll make the first one
Drew Perttula <drewp@bigasterisk.com>
parents: 636
diff changeset
167 subtermPath = graphPathForSubterms(song)
af5539fe35a7 CC startup doesn't need a subterms file. it'll make the first one
Drew Perttula <drewp@bigasterisk.com>
parents: 636
diff changeset
168 try:
af5539fe35a7 CC startup doesn't need a subterms file. it'll make the first one
Drew Perttula <drewp@bigasterisk.com>
parents: 636
diff changeset
169 graph.parse(subtermPath, format='n3')
af5539fe35a7 CC startup doesn't need a subterms file. it'll make the first one
Drew Perttula <drewp@bigasterisk.com>
parents: 636
diff changeset
170 except urllib2.URLError, e:
af5539fe35a7 CC startup doesn't need a subterms file. it'll make the first one
Drew Perttula <drewp@bigasterisk.com>
parents: 636
diff changeset
171 if e.reason.errno != 2:
af5539fe35a7 CC startup doesn't need a subterms file. it'll make the first one
Drew Perttula <drewp@bigasterisk.com>
parents: 636
diff changeset
172 raise
af5539fe35a7 CC startup doesn't need a subterms file. it'll make the first one
Drew Perttula <drewp@bigasterisk.com>
parents: 636
diff changeset
173 log.info("%s not found, starting with empty graph" % subtermPath)
516
73b181155555 curvecalc ui touchups, adjustable pane, curve draw speedup, restructured main layout code
drewp@bigasterisk.com
parents: 505
diff changeset
174
680
ad17b0a09f5c CC more startup logging, timing option to quit after init
drewp@bigasterisk.com
parents: 641
diff changeset
175 log.debug("startup: output %s", time.time() - startTime)
516
73b181155555 curvecalc ui touchups, adjustable pane, curve draw speedup, restructured main layout code
drewp@bigasterisk.com
parents: 505
diff changeset
176 out = Output(subterms, music)
505
cbc98de2ab06 refactor curveCalc toplevel
drewp@bigasterisk.com
parents: 493
diff changeset
177
cbc98de2ab06 refactor curveCalc toplevel
drewp@bigasterisk.com
parents: 493
diff changeset
178 musicfilename = showconfig.songOnDisk(song)
cbc98de2ab06 refactor curveCalc toplevel
drewp@bigasterisk.com
parents: 493
diff changeset
179 maxtime = wavelength(musicfilename)
516
73b181155555 curvecalc ui touchups, adjustable pane, curve draw speedup, restructured main layout code
drewp@bigasterisk.com
parents: 505
diff changeset
180 dispatcher.connect(lambda: maxtime, "get max time", weak=False)
73b181155555 curvecalc ui touchups, adjustable pane, curve draw speedup, restructured main layout code
drewp@bigasterisk.com
parents: 505
diff changeset
181
694
34dacd800505 eval loop is running, music drives lights. started to add goocanvas curve view
Drew Perttula <drewp@bigasterisk.com>
parents: 692
diff changeset
182 start = Main(graph, opts, song, curveset, subterms)
692
ccdd04f4ca7d subterm display is working
Drew Perttula <drewp@bigasterisk.com>
parents: 691
diff changeset
183
694
34dacd800505 eval loop is running, music drives lights. started to add goocanvas curve view
Drew Perttula <drewp@bigasterisk.com>
parents: 692
diff changeset
184 dispatcher.send("max time", maxtime=maxtime)
34dacd800505 eval loop is running, music drives lights. started to add goocanvas curve view
Drew Perttula <drewp@bigasterisk.com>
parents: 692
diff changeset
185 dispatcher.send("show all")
34dacd800505 eval loop is running, music drives lights. started to add goocanvas curve view
Drew Perttula <drewp@bigasterisk.com>
parents: 692
diff changeset
186
692
ccdd04f4ca7d subterm display is working
Drew Perttula <drewp@bigasterisk.com>
parents: 691
diff changeset
187 if opts.startup_only:
ccdd04f4ca7d subterm display is working
Drew Perttula <drewp@bigasterisk.com>
parents: 691
diff changeset
188 log.debug("quitting now because of --startup-only")
ccdd04f4ca7d subterm display is working
Drew Perttula <drewp@bigasterisk.com>
parents: 691
diff changeset
189 return
ccdd04f4ca7d subterm display is working
Drew Perttula <drewp@bigasterisk.com>
parents: 691
diff changeset
190
694
34dacd800505 eval loop is running, music drives lights. started to add goocanvas curve view
Drew Perttula <drewp@bigasterisk.com>
parents: 692
diff changeset
191 reactor.run()
505
cbc98de2ab06 refactor curveCalc toplevel
drewp@bigasterisk.com
parents: 493
diff changeset
192
cbc98de2ab06 refactor curveCalc toplevel
drewp@bigasterisk.com
parents: 493
diff changeset
193 main()