Mercurial > code > home > repos > light9
annotate bin/subcomposer @ 850:f987eb9c3672
subcomposer code merge
Ignore-this: b68fb2059c7b4c7ce7591de5c8112145
author | drewp@bigasterisk.com |
---|---|
date | Wed, 05 Jun 2013 23:25:57 +0000 |
parents | 321fc6150ee3 |
children | 4b3d7e8ba24a |
rev | line source |
---|---|
729
b5efddd80dad
update more shbang lines
Drew Perttula <drewp@bigasterisk.com>
parents:
577
diff
changeset
|
1 #!bin/python |
838
321fc6150ee3
subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents:
834
diff
changeset
|
2 """ |
321fc6150ee3
subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents:
834
diff
changeset
|
3 subcomposer |
321fc6150ee3
subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents:
834
diff
changeset
|
4 session |
321fc6150ee3
subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents:
834
diff
changeset
|
5 observable(currentSub), a Submaster which tracks the graph |
321fc6150ee3
subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents:
834
diff
changeset
|
6 |
321fc6150ee3
subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents:
834
diff
changeset
|
7 EditChoice widget |
321fc6150ee3
subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents:
834
diff
changeset
|
8 can change currentSub to another sub |
0 | 9 |
838
321fc6150ee3
subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents:
834
diff
changeset
|
10 Levelbox widget |
321fc6150ee3
subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents:
834
diff
changeset
|
11 watch observable(currentSub) for a new sub, and also watch currentSub for edits to push to the OneLevel widgets |
321fc6150ee3
subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents:
834
diff
changeset
|
12 |
321fc6150ee3
subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents:
834
diff
changeset
|
13 OneLevel widget |
321fc6150ee3
subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents:
834
diff
changeset
|
14 UI edits are caught here and go all the way back to currentSub |
321fc6150ee3
subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents:
834
diff
changeset
|
15 |
321fc6150ee3
subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents:
834
diff
changeset
|
16 |
321fc6150ee3
subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents:
834
diff
changeset
|
17 """ |
0 | 18 from __future__ import division, nested_scopes |
838
321fc6150ee3
subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents:
834
diff
changeset
|
19 import time, logging |
342
2c782ca93e73
subcomposer takes sub name on cmdline
Drew Perttula <drewp@bigasterisk.com>
parents:
334
diff
changeset
|
20 from optparse import OptionParser |
831
0f7e99d02dc6
subcomposer support logging. don't start with a bogus sub
Drew Perttula <drewp@bigasterisk.com>
parents:
818
diff
changeset
|
21 import logging |
0 | 22 import Tkinter as tk |
802 | 23 import louie as dispatcher |
803 | 24 from twisted.internet import reactor, tksupport, task |
817
6885c2fa9369
subcomposer halfway to having the editchoice widget
drewp@bigasterisk.com
parents:
810
diff
changeset
|
25 from rdflib import URIRef |
0 | 26 |
833 | 27 from run_local import log |
209
1a84c5e83d3e
dmxserver and subcomposer work in new layout
drewp@bigasterisk.com
parents:
201
diff
changeset
|
28 from light9.dmxchanedit import Levelbox |
838
321fc6150ee3
subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents:
834
diff
changeset
|
29 from light9 import dmxclient, Patch, Submaster, prof |
455
9dd2baa41cca
subcomposer remembers window position
drewp@bigasterisk.com
parents:
450
diff
changeset
|
30 from light9.uihelpers import toplevelat |
803 | 31 from light9.rdfdb.syncedgraph import SyncedGraph |
810 | 32 from light9.rdfdb import clientsession |
850 | 33 from light9.tkdnd import initTkdnd |
34 from light9.namespaces import L9 | |
35 from light9.observable import Observable | |
36 from light9.editchoice import EditChoice, Local | |
818
bf728997bfde
start the observable between editchoice and the editor
drewp@bigasterisk.com
parents:
817
diff
changeset
|
37 |
0 | 38 |
39 class Subcomposer(tk.Frame): | |
817
6885c2fa9369
subcomposer halfway to having the editchoice widget
drewp@bigasterisk.com
parents:
810
diff
changeset
|
40 """ |
6885c2fa9369
subcomposer halfway to having the editchoice widget
drewp@bigasterisk.com
parents:
810
diff
changeset
|
41 <session> l9:currentSub ?sub is the URI of the sub we're tied to for displaying and |
6885c2fa9369
subcomposer halfway to having the editchoice widget
drewp@bigasterisk.com
parents:
810
diff
changeset
|
42 editing. If we don't have a currentSub, then we're actually |
6885c2fa9369
subcomposer halfway to having the editchoice widget
drewp@bigasterisk.com
parents:
810
diff
changeset
|
43 editing a session-local sub called <session> l9:currentSub <sessionLocalSub> |
6885c2fa9369
subcomposer halfway to having the editchoice widget
drewp@bigasterisk.com
parents:
810
diff
changeset
|
44 |
838
321fc6150ee3
subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents:
834
diff
changeset
|
45 I'm not sure that Locals should even be PersistentSubmaster with |
321fc6150ee3
subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents:
834
diff
changeset
|
46 uri and graph storage, but I think that way is making fewer |
321fc6150ee3
subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents:
834
diff
changeset
|
47 special cases. |
321fc6150ee3
subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents:
834
diff
changeset
|
48 |
818
bf728997bfde
start the observable between editchoice and the editor
drewp@bigasterisk.com
parents:
817
diff
changeset
|
49 Contains an EditChoice widget |
bf728997bfde
start the observable between editchoice and the editor
drewp@bigasterisk.com
parents:
817
diff
changeset
|
50 |
838
321fc6150ee3
subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents:
834
diff
changeset
|
51 Dependencies: |
817
6885c2fa9369
subcomposer halfway to having the editchoice widget
drewp@bigasterisk.com
parents:
810
diff
changeset
|
52 |
838
321fc6150ee3
subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents:
834
diff
changeset
|
53 graph (?session :currentSub ?s) -> self.currentSub |
321fc6150ee3
subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents:
834
diff
changeset
|
54 self.currentSub -> graph |
321fc6150ee3
subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents:
834
diff
changeset
|
55 self.currentSub -> self._currentChoice (which might be Local) |
321fc6150ee3
subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents:
834
diff
changeset
|
56 self._currentChoice (which might be Local) -> self.currentSub |
818
bf728997bfde
start the observable between editchoice and the editor
drewp@bigasterisk.com
parents:
817
diff
changeset
|
57 |
838
321fc6150ee3
subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents:
834
diff
changeset
|
58 inside the current sub: |
321fc6150ee3
subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents:
834
diff
changeset
|
59 graph -> Submaster levels (handled in Submaster) |
321fc6150ee3
subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents:
834
diff
changeset
|
60 Submaster levels -> OneLevel widget |
321fc6150ee3
subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents:
834
diff
changeset
|
61 OneLevel widget -> Submaster.editLevel |
321fc6150ee3
subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents:
834
diff
changeset
|
62 Submaster.editLevel -> graph (handled in Submaster) |
817
6885c2fa9369
subcomposer halfway to having the editchoice widget
drewp@bigasterisk.com
parents:
810
diff
changeset
|
63 |
6885c2fa9369
subcomposer halfway to having the editchoice widget
drewp@bigasterisk.com
parents:
810
diff
changeset
|
64 """ |
810 | 65 def __init__(self, master, graph, session): |
0 | 66 tk.Frame.__init__(self, master, bg='black') |
803 | 67 self.graph = graph |
810 | 68 self.session = session |
0 | 69 |
838
321fc6150ee3
subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents:
834
diff
changeset
|
70 # this is a PersistentSubmaster (even for local) or None if we're not initialized |
321fc6150ee3
subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents:
834
diff
changeset
|
71 self.currentSub = Observable(None) |
0 | 72 |
850 | 73 self._currentChoice = Observable(Local) |
818
bf728997bfde
start the observable between editchoice and the editor
drewp@bigasterisk.com
parents:
817
diff
changeset
|
74 |
bf728997bfde
start the observable between editchoice and the editor
drewp@bigasterisk.com
parents:
817
diff
changeset
|
75 def pc(val): |
850 | 76 log.info("change viewed sub to %s", val) |
77 self._currentChoice.subscribe(pc) | |
818
bf728997bfde
start the observable between editchoice and the editor
drewp@bigasterisk.com
parents:
817
diff
changeset
|
78 |
838
321fc6150ee3
subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents:
834
diff
changeset
|
79 EditChoice(self, self.graph, self._currentChoice).frame.pack(side='top') |
321fc6150ee3
subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents:
834
diff
changeset
|
80 |
321fc6150ee3
subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents:
834
diff
changeset
|
81 def setupSubChoiceLinks(self): |
321fc6150ee3
subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents:
834
diff
changeset
|
82 |
321fc6150ee3
subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents:
834
diff
changeset
|
83 def ann(): |
321fc6150ee3
subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents:
834
diff
changeset
|
84 print "currently: session=%s currentSub=%r _currentChoice=%r" % ( |
321fc6150ee3
subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents:
834
diff
changeset
|
85 self.session, self.currentSub(), self._currentChoice()) |
818
bf728997bfde
start the observable between editchoice and the editor
drewp@bigasterisk.com
parents:
817
diff
changeset
|
86 |
838
321fc6150ee3
subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents:
834
diff
changeset
|
87 @graph.addHandler |
321fc6150ee3
subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents:
834
diff
changeset
|
88 def graphChanged(): |
321fc6150ee3
subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents:
834
diff
changeset
|
89 s = graph.value(self.session, L9['currentSub']) |
321fc6150ee3
subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents:
834
diff
changeset
|
90 if s is None: |
321fc6150ee3
subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents:
834
diff
changeset
|
91 s = self.makeLocal() |
321fc6150ee3
subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents:
834
diff
changeset
|
92 self.currentSub(Submaster.PersistentSubmaster(graph, s)) |
0 | 93 |
838
321fc6150ee3
subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents:
834
diff
changeset
|
94 @self.currentSub.subscribe |
321fc6150ee3
subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents:
834
diff
changeset
|
95 def subChanged(newSub): |
321fc6150ee3
subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents:
834
diff
changeset
|
96 if newSub is None: |
321fc6150ee3
subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents:
834
diff
changeset
|
97 graph.patchObject(self.session, |
321fc6150ee3
subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents:
834
diff
changeset
|
98 self.session, L9['currentSub'], None) |
321fc6150ee3
subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents:
834
diff
changeset
|
99 return |
321fc6150ee3
subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents:
834
diff
changeset
|
100 self.sendupdate() |
321fc6150ee3
subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents:
834
diff
changeset
|
101 graph.patchObject(self.session, |
321fc6150ee3
subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents:
834
diff
changeset
|
102 self.session, L9['currentSub'], newSub.uri) |
0 | 103 |
838
321fc6150ee3
subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents:
834
diff
changeset
|
104 if newSub and 'local' in newSub.uri: # wrong- use rdf:type or something? |
321fc6150ee3
subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents:
834
diff
changeset
|
105 self._currentChoice(Local) |
321fc6150ee3
subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents:
834
diff
changeset
|
106 else: |
321fc6150ee3
subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents:
834
diff
changeset
|
107 # i think right here is the point that the last local |
321fc6150ee3
subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents:
834
diff
changeset
|
108 # becomes garbage, and we could clean it up. |
321fc6150ee3
subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents:
834
diff
changeset
|
109 self._currentChoice(newSub.uri) |
321fc6150ee3
subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents:
834
diff
changeset
|
110 |
321fc6150ee3
subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents:
834
diff
changeset
|
111 dispatcher.connect(self.levelsChanged, "sub levels changed") |
321fc6150ee3
subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents:
834
diff
changeset
|
112 |
321fc6150ee3
subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents:
834
diff
changeset
|
113 @self._currentChoice.subscribe |
321fc6150ee3
subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents:
834
diff
changeset
|
114 def choiceChanged(newChoice): |
321fc6150ee3
subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents:
834
diff
changeset
|
115 if newChoice is Local: |
321fc6150ee3
subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents:
834
diff
changeset
|
116 newChoice = self.makeLocal() |
321fc6150ee3
subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents:
834
diff
changeset
|
117 if newChoice is not None: |
321fc6150ee3
subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents:
834
diff
changeset
|
118 self.currentSub(Submaster.PersistentSubmaster( |
321fc6150ee3
subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents:
834
diff
changeset
|
119 graph, newChoice)) |
0 | 120 |
838
321fc6150ee3
subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents:
834
diff
changeset
|
121 def levelsChanged(self, sub): |
321fc6150ee3
subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents:
834
diff
changeset
|
122 if sub == self.currentSub(): |
321fc6150ee3
subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents:
834
diff
changeset
|
123 self.sendupdate() |
321fc6150ee3
subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents:
834
diff
changeset
|
124 |
321fc6150ee3
subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents:
834
diff
changeset
|
125 def makeLocal(self): |
321fc6150ee3
subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents:
834
diff
changeset
|
126 # todo: put a type on this, so subChanged can identify it right |
321fc6150ee3
subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents:
834
diff
changeset
|
127 # todo: where will these get stored, or are they local to this |
321fc6150ee3
subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents:
834
diff
changeset
|
128 # subcomposer process and don't use PersistentSubmaster at all? |
321fc6150ee3
subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents:
834
diff
changeset
|
129 return URIRef("http://local/%s" % time.time()) |
321fc6150ee3
subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents:
834
diff
changeset
|
130 |
321fc6150ee3
subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents:
834
diff
changeset
|
131 def setupLevelboxUi(self): |
321fc6150ee3
subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents:
834
diff
changeset
|
132 self.levelbox = Levelbox(self, graph, self.currentSub) |
321fc6150ee3
subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents:
834
diff
changeset
|
133 self.levelbox.pack(side='top') |
817
6885c2fa9369
subcomposer halfway to having the editchoice widget
drewp@bigasterisk.com
parents:
810
diff
changeset
|
134 |
838
321fc6150ee3
subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents:
834
diff
changeset
|
135 tk.Button(self, text="All to zero", |
321fc6150ee3
subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents:
834
diff
changeset
|
136 command=lambda *args: self.currentSub().clear()).pack(side='top') |
342
2c782ca93e73
subcomposer takes sub name on cmdline
Drew Perttula <drewp@bigasterisk.com>
parents:
334
diff
changeset
|
137 |
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:
342
diff
changeset
|
138 def savenewsub(self, subname): |
0 | 139 leveldict={} |
140 for i,lev in zip(range(len(self.levels)),self.levels): | |
141 if lev!=0: | |
142 leveldict[Patch.get_channel_name(i+1)]=lev | |
342
2c782ca93e73
subcomposer takes sub name on cmdline
Drew Perttula <drewp@bigasterisk.com>
parents:
334
diff
changeset
|
143 |
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:
342
diff
changeset
|
144 s=Submaster.Submaster(subname,leveldict=leveldict) |
0 | 145 s.save() |
802 | 146 |
0 | 147 def sendupdate(self): |
838
321fc6150ee3
subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents:
834
diff
changeset
|
148 d = self.currentSub().get_dmx_list() |
321fc6150ee3
subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents:
834
diff
changeset
|
149 dmxclient.outputlevels(d, twisted=True) |
802 | 150 |
0 | 151 |
838
321fc6150ee3
subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents:
834
diff
changeset
|
152 def launch(opts, args, root, graph, session): |
321fc6150ee3
subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents:
834
diff
changeset
|
153 if not opts.no_geometry: |
321fc6150ee3
subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents:
834
diff
changeset
|
154 toplevelat("subcomposer - %s" % opts.session, root, graph, session) |
321fc6150ee3
subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents:
834
diff
changeset
|
155 |
321fc6150ee3
subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents:
834
diff
changeset
|
156 sc = Subcomposer(root, graph, session) |
321fc6150ee3
subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents:
834
diff
changeset
|
157 sc.pack() |
818
bf728997bfde
start the observable between editchoice and the editor
drewp@bigasterisk.com
parents:
817
diff
changeset
|
158 |
838
321fc6150ee3
subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents:
834
diff
changeset
|
159 tk.Label(root,text="Bindings: B1 adjust level; B2 set full; B3 instant bump", |
321fc6150ee3
subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents:
834
diff
changeset
|
160 font="Helvetica -12 italic",anchor='w').pack(side='top',fill='x') |
321fc6150ee3
subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents:
834
diff
changeset
|
161 |
321fc6150ee3
subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents:
834
diff
changeset
|
162 if len(args) == 1: |
321fc6150ee3
subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents:
834
diff
changeset
|
163 # it might be a little too weird that cmdline arg to this |
321fc6150ee3
subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents:
834
diff
changeset
|
164 # process changes anything else in the same session. But also |
321fc6150ee3
subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents:
834
diff
changeset
|
165 # I'm not sure who would ever make 2 subcomposers of the same |
321fc6150ee3
subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents:
834
diff
changeset
|
166 # session (except when quitting and restarting, to get the |
321fc6150ee3
subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents:
834
diff
changeset
|
167 # same window pos), so maybe it doesn't matter. But still, |
321fc6150ee3
subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents:
834
diff
changeset
|
168 # this tool should probably default to making new sessions |
321fc6150ee3
subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents:
834
diff
changeset
|
169 # usually instead of loading the same one |
850 | 170 graph.patchObject(session, |
171 session, L9['currentSub'], URIRef(args[0])) | |
342
2c782ca93e73
subcomposer takes sub name on cmdline
Drew Perttula <drewp@bigasterisk.com>
parents:
334
diff
changeset
|
172 |
838
321fc6150ee3
subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents:
834
diff
changeset
|
173 task.LoopingCall(sc.sendupdate).start(10) |
342
2c782ca93e73
subcomposer takes sub name on cmdline
Drew Perttula <drewp@bigasterisk.com>
parents:
334
diff
changeset
|
174 |
149 | 175 |
0 | 176 ############################# |
177 | |
178 if __name__ == "__main__": | |
838
321fc6150ee3
subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents:
834
diff
changeset
|
179 parser = OptionParser(usage="%prog [suburi]") |
458
8b307310cc1b
when KC launches SC to edit a sub, don't place the window right on the main SC window
drewp@bigasterisk.com
parents:
455
diff
changeset
|
180 parser.add_option('--no-geometry', action='store_true', |
8b307310cc1b
when KC launches SC to edit a sub, don't place the window right on the main SC window
drewp@bigasterisk.com
parents:
455
diff
changeset
|
181 help="don't save/restore window geometry") |
810 | 182 clientsession.add_option(parser) |
342
2c782ca93e73
subcomposer takes sub name on cmdline
Drew Perttula <drewp@bigasterisk.com>
parents:
334
diff
changeset
|
183 opts, args = parser.parse_args() |
2c782ca93e73
subcomposer takes sub name on cmdline
Drew Perttula <drewp@bigasterisk.com>
parents:
334
diff
changeset
|
184 |
838
321fc6150ee3
subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents:
834
diff
changeset
|
185 logging.basicConfig(level=logging.DEBUG) |
321fc6150ee3
subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents:
834
diff
changeset
|
186 |
0 | 187 root=tk.Tk() |
188 root.config(bg='black') | |
147 | 189 root.tk_setPalette("#004633") |
817
6885c2fa9369
subcomposer halfway to having the editchoice widget
drewp@bigasterisk.com
parents:
810
diff
changeset
|
190 |
6885c2fa9369
subcomposer halfway to having the editchoice widget
drewp@bigasterisk.com
parents:
810
diff
changeset
|
191 initTkdnd(root.tk, 'tkdnd/trunk/') |
0 | 192 |
803 | 193 graph = SyncedGraph("subcomposer") |
810 | 194 session = clientsession.getUri('subcomposer', opts) |
803 | 195 |
838
321fc6150ee3
subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents:
834
diff
changeset
|
196 graph.initiallySynced.addCallback(lambda _: launch(opts, args, root, graph, session)) |
557
4e558643c952
subcomposer: squelch the exception we got every time we exited
David McClosky <dmcc@bigasterisk.com>
parents:
458
diff
changeset
|
197 |
810 | 198 root.protocol('WM_DELETE_WINDOW', reactor.stop) |
803 | 199 tksupport.install(root,ms=10) |
200 prof.run(reactor.run, profile=False) |