Mercurial > code > home > repos > light9
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, |