comparison bin/keyboardcomposer @ 888:cad8207933d7

KC fix logging, startup after graph sync, display uri tails when there's no label Ignore-this: 55d0cac2cd05d07ac6e7691b25b6b117
author Drew Perttula <drewp@bigasterisk.com>
date Sat, 08 Jun 2013 08:21:24 +0000
parents 321fc6150ee3
children 85ccda959170
comparison
equal deleted inserted replaced
887:4fe5612db2ed 888:cad8207933d7
1 #!bin/python 1 #!bin/python
2 2
3 from __future__ import division, nested_scopes 3 from __future__ import division, nested_scopes
4 from run_local import log
4 import cgi, os, sys, time, subprocess, logging, random 5 import cgi, os, sys, time, subprocess, logging, random
5 from optparse import OptionParser 6 from optparse import OptionParser
6 import webcolors, colorsys 7 import webcolors, colorsys
7 from louie import dispatcher 8 from louie import dispatcher
8 from twisted.internet import reactor, tksupport 9 from twisted.internet import reactor, tksupport
10 from rdflib import URIRef, Literal, RDF 11 from rdflib import URIRef, Literal, RDF
11 from Tix import * 12 from Tix import *
12 import Tix as tk 13 import Tix as tk
13 import pickle 14 import pickle
14 15
15 import run_local
16 from light9.Fadable import Fadable 16 from light9.Fadable import Fadable
17 from light9.Submaster import Submasters, sub_maxes 17 from light9.Submaster import Submasters, sub_maxes
18 from light9.subclient import SubClient 18 from light9.subclient import SubClient
19 from light9 import dmxclient, showconfig, networking, prof 19 from light9 import dmxclient, showconfig, networking, prof
20 from light9.uihelpers import toplevelat, bindkeys 20 from light9.uihelpers import toplevelat, bindkeys
140 self.slider_var.set(graph.value(setting, L9['level'])) 140 self.slider_var.set(graph.value(setting, L9['level']))
141 finally: 141 finally:
142 self.pauseTrace = False 142 self.pauseTrace = False
143 143
144 def updateName(self): 144 def updateName(self):
145 self.namelabel.config(text=self.sub.graph.label(self.sub.uri)) 145 def shortUri(u):
146 return '.../' + u.split('/')[-1]
147 self.namelabel.config(text=self.sub.graph.label(self.sub.uri) or shortUri(self.sub.uri))
146 148
147 def launch_subcomposer(self, *args): 149 def launch_subcomposer(self, *args):
148 subprocess.Popen(["bin/subcomposer", "--no-geometry", self.name]) 150 subprocess.Popen(["bin/subcomposer", "--no-geometry", self.name])
149 151
150 class KeyboardComposer(Frame, SubClient): 152 class KeyboardComposer(Frame, SubClient):
230 232
231 withgroups = sorted((self.graph.value(sub.uri, L9['group']), 233 withgroups = sorted((self.graph.value(sub.uri, L9['group']),
232 self.graph.value(sub.uri, L9['order']), 234 self.graph.value(sub.uri, L9['order']),
233 sub) 235 sub)
234 for sub in self.submasters.get_all_subs()) 236 for sub in self.submasters.get_all_subs())
235 dispatcher.connect(self.onNewSub, "new submaster") 237 #dispatcher.connect(self.onNewSub, "new submaster")
236 dispatcher.connect(self.onLostSub, "lost submaster") 238 #dispatcher.connect(self.onLostSub, "lost submaster")
237 log.info("withgroups %s", withgroups) 239 log.info("withgroups %s", withgroups)
238 240
239 for group, order, sub in withgroups: 241 for group, order, sub in withgroups:
240 group = self.graph.value(sub.uri, L9['group']) 242 group = self.graph.value(sub.uri, L9['group'])
241 243
518 return 520 return
519 521
520 kc.change_row(kc.current_row + diff) 522 kc.change_row(kc.current_row + diff)
521 self.valueOut(name, 0) 523 self.valueOut(name, 0)
522 524
525 def launch(opts, root, graph, session):
526 tl = toplevelat("Keyboard Composer - %s" % opts.session,
527 existingtoplevel=root, graph=graph, session=session)
528
529 kc = KeyboardComposer(tl, graph, session,
530 hw_sliders=not opts.no_sliders)
531 kc.pack(fill=BOTH, expand=1)
532
533 for helpline in ["Bindings: B3 mute; C-l edit levels in subcomposer"]:
534 tk.Label(root,text=helpline, font="Helvetica -12 italic",
535 anchor='w').pack(side='top',fill='x')
536
523 if __name__ == "__main__": 537 if __name__ == "__main__":
524 parser = OptionParser() 538 parser = OptionParser()
525 parser.add_option('--no-sliders', action='store_true', 539 parser.add_option('--no-sliders', action='store_true',
526 help="don't attach to hardware sliders") 540 help="don't attach to hardware sliders")
527 clientsession.add_option(parser) 541 clientsession.add_option(parser)
528 parser.add_option('-v', action='store_true', help="log info level") 542 parser.add_option('-v', action='store_true', help="log info level")
529 opts, args = parser.parse_args() 543 opts, args = parser.parse_args()
530 544
531 logging.basicConfig(level=logging.INFO if opts.v else logging.WARN) 545 log.setLevel(logging.INFO if opts.v else logging.WARN)
532 log = logging.getLogger('keyboardcomposer')
533 546
534 graph = SyncedGraph("keyboardcomposer") 547 graph = SyncedGraph("keyboardcomposer")
535 548
536 # i think this also needs delayed start (like subcomposer has), to have a valid graph 549 # i think this also needs delayed start (like subcomposer has), to have a valid graph
537 # before setting any stuff from the ui 550 # before setting any stuff from the ui
539 root = Tk() 552 root = Tk()
540 initTkdnd(root.tk, 'tkdnd/trunk/') 553 initTkdnd(root.tk, 'tkdnd/trunk/')
541 554
542 session = clientsession.getUri('keyboardcomposer', opts) 555 session = clientsession.getUri('keyboardcomposer', opts)
543 556
544 tl = toplevelat("Keyboard Composer - %s" % opts.session, 557 graph.initiallySynced.addCallback(
545 existingtoplevel=root, graph=graph, session=session) 558 lambda _: launch(opts, root, graph, session))
546
547 kc = KeyboardComposer(tl, graph, session,
548 hw_sliders=not opts.no_sliders)
549 kc.pack(fill=BOTH, expand=1)
550
551 for helpline in ["Bindings: B3 mute; C-l edit levels in subcomposer"]:
552 tk.Label(root,text=helpline, font="Helvetica -12 italic",
553 anchor='w').pack(side='top',fill='x')
554 559
555 if 0: # needs fixing, or maybe it's obsolete because other progs can just patch the rdf graph 560 if 0: # needs fixing, or maybe it's obsolete because other progs can just patch the rdf graph
556 import twisted.internet 561 import twisted.internet
557 try: 562 try:
558 reactor.listenTCP(networking.keyboardComposer.port, 563 reactor.listenTCP(networking.keyboardComposer.port,