annotate bin/subcomposer @ 1432:185f3e2208c3

show and config updates Ignore-this: ed3bcb2f19250dd65d39c11131f36e93
author drewp@bigasterisk.com
date Sat, 11 Jun 2016 17:16:11 +0000
parents ce8a71fab284
children 6fa4288da8a6
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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
45b12307c695 Initial revision
drewp
parents:
diff changeset
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
45b12307c695 Initial revision
drewp
parents:
diff changeset
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
924
dcab422615ca working on local->global sub action. creation of new file in rdfdb is still a problem
drewp@bigasterisk.com
parents: 914
diff changeset
21 import logging, urllib
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
22 import Tkinter as tk
802
5442f5d8979a reformat
drewp@bigasterisk.com
parents: 729
diff changeset
23 import louie as dispatcher
803
ce4fffe8e413 update SC to read rdf graph
drewp@bigasterisk.com
parents: 802
diff changeset
24 from twisted.internet import reactor, tksupport, task
924
dcab422615ca working on local->global sub action. creation of new file in rdfdb is still a problem
drewp@bigasterisk.com
parents: 914
diff changeset
25 from rdflib import URIRef, RDF, RDFS, Literal
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
26
833
bdfdfea84510 colored logs
Drew Perttula <drewp@bigasterisk.com>
parents: 831
diff changeset
27 from run_local import log
874
167a61d3cfbf subcomposer put local subs into the graph with a type edge.
Drew Perttula <drewp@bigasterisk.com>
parents: 867
diff changeset
28 log.setLevel(logging.DEBUG)
167a61d3cfbf subcomposer put local subs into the graph with a type edge.
Drew Perttula <drewp@bigasterisk.com>
parents: 867
diff changeset
29
209
1a84c5e83d3e dmxserver and subcomposer work in new layout
drewp@bigasterisk.com
parents: 201
diff changeset
30 from light9.dmxchanedit import Levelbox
1133
0923efae4588 fix import on subcomposer
drewp@bigasterisk.com
parents: 1114
diff changeset
31 from light9 import dmxclient, Submaster, prof, showconfig, networking
0923efae4588 fix import on subcomposer
drewp@bigasterisk.com
parents: 1114
diff changeset
32
874
167a61d3cfbf subcomposer put local subs into the graph with a type edge.
Drew Perttula <drewp@bigasterisk.com>
parents: 867
diff changeset
33 from light9.Patch import get_channel_name
455
9dd2baa41cca subcomposer remembers window position
drewp@bigasterisk.com
parents: 450
diff changeset
34 from light9.uihelpers import toplevelat
803
ce4fffe8e413 update SC to read rdf graph
drewp@bigasterisk.com
parents: 802
diff changeset
35 from light9.rdfdb.syncedgraph import SyncedGraph
810
f29788d1c8c9 kc/sc session control
drewp@bigasterisk.com
parents: 804
diff changeset
36 from light9.rdfdb import clientsession
850
f987eb9c3672 subcomposer code merge
drewp@bigasterisk.com
parents: 838
diff changeset
37 from light9.tkdnd import initTkdnd
f987eb9c3672 subcomposer code merge
drewp@bigasterisk.com
parents: 838
diff changeset
38 from light9.namespaces import L9
874
167a61d3cfbf subcomposer put local subs into the graph with a type edge.
Drew Perttula <drewp@bigasterisk.com>
parents: 867
diff changeset
39 from light9.rdfdb.patch import Patch
850
f987eb9c3672 subcomposer code merge
drewp@bigasterisk.com
parents: 838
diff changeset
40 from light9.observable import Observable
f987eb9c3672 subcomposer code merge
drewp@bigasterisk.com
parents: 838
diff changeset
41 from light9.editchoice import EditChoice, Local
1164
65f0179a9254 subcomposer has a web ui with buttons for toggling lights
drewp@bigasterisk.com
parents: 1133
diff changeset
42 from light9.subcomposer import subcomposerweb
818
bf728997bfde start the observable between editchoice and the editor
drewp@bigasterisk.com
parents: 817
diff changeset
43
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
44
45b12307c695 Initial revision
drewp
parents:
diff changeset
45 class Subcomposer(tk.Frame):
817
6885c2fa9369 subcomposer halfway to having the editchoice widget
drewp@bigasterisk.com
parents: 810
diff changeset
46 """
6885c2fa9369 subcomposer halfway to having the editchoice widget
drewp@bigasterisk.com
parents: 810
diff changeset
47 <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
48 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
49 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
50
838
321fc6150ee3 subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents: 834
diff changeset
51 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
52 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
53 special cases.
321fc6150ee3 subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents: 834
diff changeset
54
818
bf728997bfde start the observable between editchoice and the editor
drewp@bigasterisk.com
parents: 817
diff changeset
55 Contains an EditChoice widget
bf728997bfde start the observable between editchoice and the editor
drewp@bigasterisk.com
parents: 817
diff changeset
56
838
321fc6150ee3 subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents: 834
diff changeset
57 Dependencies:
817
6885c2fa9369 subcomposer halfway to having the editchoice widget
drewp@bigasterisk.com
parents: 810
diff changeset
58
838
321fc6150ee3 subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents: 834
diff changeset
59 graph (?session :currentSub ?s) -> self.currentSub
321fc6150ee3 subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents: 834
diff changeset
60 self.currentSub -> graph
321fc6150ee3 subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents: 834
diff changeset
61 self.currentSub -> self._currentChoice (which might be Local)
321fc6150ee3 subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents: 834
diff changeset
62 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
63
838
321fc6150ee3 subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents: 834
diff changeset
64 inside the current sub:
321fc6150ee3 subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents: 834
diff changeset
65 graph -> Submaster levels (handled in Submaster)
321fc6150ee3 subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents: 834
diff changeset
66 Submaster levels -> OneLevel widget
321fc6150ee3 subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents: 834
diff changeset
67 OneLevel widget -> Submaster.editLevel
321fc6150ee3 subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents: 834
diff changeset
68 Submaster.editLevel -> graph (handled in Submaster)
817
6885c2fa9369 subcomposer halfway to having the editchoice widget
drewp@bigasterisk.com
parents: 810
diff changeset
69
6885c2fa9369 subcomposer halfway to having the editchoice widget
drewp@bigasterisk.com
parents: 810
diff changeset
70 """
810
f29788d1c8c9 kc/sc session control
drewp@bigasterisk.com
parents: 804
diff changeset
71 def __init__(self, master, graph, session):
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
72 tk.Frame.__init__(self, master, bg='black')
803
ce4fffe8e413 update SC to read rdf graph
drewp@bigasterisk.com
parents: 802
diff changeset
73 self.graph = graph
810
f29788d1c8c9 kc/sc session control
drewp@bigasterisk.com
parents: 804
diff changeset
74 self.session = session
1267
ce8a71fab284 trying to fix SC bad graph reload behavior, but this barely works. other tools have trouble too
drewp@bigasterisk.com
parents: 1164
diff changeset
75 self.launchTime = time.time()
ce8a71fab284 trying to fix SC bad graph reload behavior, but this barely works. other tools have trouble too
drewp@bigasterisk.com
parents: 1164
diff changeset
76 self.localSerial = 0
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
77
924
dcab422615ca working on local->global sub action. creation of new file in rdfdb is still a problem
drewp@bigasterisk.com
parents: 914
diff changeset
78 # this is a URIRef or Local. Strangely, the Local case still
dcab422615ca working on local->global sub action. creation of new file in rdfdb is still a problem
drewp@bigasterisk.com
parents: 914
diff changeset
79 # has a uri, which you can get from
dcab422615ca working on local->global sub action. creation of new file in rdfdb is still a problem
drewp@bigasterisk.com
parents: 914
diff changeset
80 # self.currentSub.uri. Probably that should be on the Local
dcab422615ca working on local->global sub action. creation of new file in rdfdb is still a problem
drewp@bigasterisk.com
parents: 914
diff changeset
81 # object too, or maybe Local should be a subclass of URIRef
867
4b3d7e8ba24a subcomposer is nicer if we always have some Submaster object. and if you call all the init code
Drew Perttula <drewp@bigasterisk.com>
parents: 850
diff changeset
82 self._currentChoice = Observable(Local)
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
83
867
4b3d7e8ba24a subcomposer is nicer if we always have some Submaster object. and if you call all the init code
Drew Perttula <drewp@bigasterisk.com>
parents: 850
diff changeset
84 # this is a PersistentSubmaster (even for local)
4b3d7e8ba24a subcomposer is nicer if we always have some Submaster object. and if you call all the init code
Drew Perttula <drewp@bigasterisk.com>
parents: 850
diff changeset
85 self.currentSub = Observable(Submaster.PersistentSubmaster(
932
92c6e4b6cabb change base uri used on local subs
drewp@bigasterisk.com
parents: 929
diff changeset
86 graph, self.switchToLocal()))
818
bf728997bfde start the observable between editchoice and the editor
drewp@bigasterisk.com
parents: 817
diff changeset
87
bf728997bfde start the observable between editchoice and the editor
drewp@bigasterisk.com
parents: 817
diff changeset
88 def pc(val):
850
f987eb9c3672 subcomposer code merge
drewp@bigasterisk.com
parents: 838
diff changeset
89 log.info("change viewed sub to %s", val)
f987eb9c3672 subcomposer code merge
drewp@bigasterisk.com
parents: 838
diff changeset
90 self._currentChoice.subscribe(pc)
818
bf728997bfde start the observable between editchoice and the editor
drewp@bigasterisk.com
parents: 817
diff changeset
91
924
dcab422615ca working on local->global sub action. creation of new file in rdfdb is still a problem
drewp@bigasterisk.com
parents: 914
diff changeset
92 ec = self.editChoice = EditChoice(self, self.graph, self._currentChoice)
dcab422615ca working on local->global sub action. creation of new file in rdfdb is still a problem
drewp@bigasterisk.com
parents: 914
diff changeset
93 ec.frame.pack(side='top')
dcab422615ca working on local->global sub action. creation of new file in rdfdb is still a problem
drewp@bigasterisk.com
parents: 914
diff changeset
94
dcab422615ca working on local->global sub action. creation of new file in rdfdb is still a problem
drewp@bigasterisk.com
parents: 914
diff changeset
95 ec.subIcon.bind("<ButtonPress-1>", self.clickSubIcon)
867
4b3d7e8ba24a subcomposer is nicer if we always have some Submaster object. and if you call all the init code
Drew Perttula <drewp@bigasterisk.com>
parents: 850
diff changeset
96 self.setupSubChoiceLinks()
874
167a61d3cfbf subcomposer put local subs into the graph with a type edge.
Drew Perttula <drewp@bigasterisk.com>
parents: 867
diff changeset
97 self.setupLevelboxUi()
924
dcab422615ca working on local->global sub action. creation of new file in rdfdb is still a problem
drewp@bigasterisk.com
parents: 914
diff changeset
98
dcab422615ca working on local->global sub action. creation of new file in rdfdb is still a problem
drewp@bigasterisk.com
parents: 914
diff changeset
99 def clickSubIcon(self, *args):
dcab422615ca working on local->global sub action. creation of new file in rdfdb is still a problem
drewp@bigasterisk.com
parents: 914
diff changeset
100 box = tk.Toplevel(self.editChoice.frame)
dcab422615ca working on local->global sub action. creation of new file in rdfdb is still a problem
drewp@bigasterisk.com
parents: 914
diff changeset
101 box.wm_transient(self.editChoice.frame)
dcab422615ca working on local->global sub action. creation of new file in rdfdb is still a problem
drewp@bigasterisk.com
parents: 914
diff changeset
102 tk.Label(box, text="Name this sub:").pack()
dcab422615ca working on local->global sub action. creation of new file in rdfdb is still a problem
drewp@bigasterisk.com
parents: 914
diff changeset
103 e = tk.Entry(box)
dcab422615ca working on local->global sub action. creation of new file in rdfdb is still a problem
drewp@bigasterisk.com
parents: 914
diff changeset
104 e.pack()
dcab422615ca working on local->global sub action. creation of new file in rdfdb is still a problem
drewp@bigasterisk.com
parents: 914
diff changeset
105 b = tk.Button(box, text="Make global")
dcab422615ca working on local->global sub action. creation of new file in rdfdb is still a problem
drewp@bigasterisk.com
parents: 914
diff changeset
106 b.pack()
dcab422615ca working on local->global sub action. creation of new file in rdfdb is still a problem
drewp@bigasterisk.com
parents: 914
diff changeset
107 def clicked(*args):
dcab422615ca working on local->global sub action. creation of new file in rdfdb is still a problem
drewp@bigasterisk.com
parents: 914
diff changeset
108 self.makeGlobal(newName=e.get())
dcab422615ca working on local->global sub action. creation of new file in rdfdb is still a problem
drewp@bigasterisk.com
parents: 914
diff changeset
109 box.destroy()
dcab422615ca working on local->global sub action. creation of new file in rdfdb is still a problem
drewp@bigasterisk.com
parents: 914
diff changeset
110
dcab422615ca working on local->global sub action. creation of new file in rdfdb is still a problem
drewp@bigasterisk.com
parents: 914
diff changeset
111 b.bind("<Button-1>", clicked)
dcab422615ca working on local->global sub action. creation of new file in rdfdb is still a problem
drewp@bigasterisk.com
parents: 914
diff changeset
112 e.focus()
dcab422615ca working on local->global sub action. creation of new file in rdfdb is still a problem
drewp@bigasterisk.com
parents: 914
diff changeset
113
dcab422615ca working on local->global sub action. creation of new file in rdfdb is still a problem
drewp@bigasterisk.com
parents: 914
diff changeset
114 def makeGlobal(self, newName):
dcab422615ca working on local->global sub action. creation of new file in rdfdb is still a problem
drewp@bigasterisk.com
parents: 914
diff changeset
115 """promote our local submaster into a non-local, named one"""
dcab422615ca working on local->global sub action. creation of new file in rdfdb is still a problem
drewp@bigasterisk.com
parents: 914
diff changeset
116 uri = self.currentSub().uri
dcab422615ca working on local->global sub action. creation of new file in rdfdb is still a problem
drewp@bigasterisk.com
parents: 914
diff changeset
117 newUri = showconfig.showUri() + ("/sub/%s" %
dcab422615ca working on local->global sub action. creation of new file in rdfdb is still a problem
drewp@bigasterisk.com
parents: 914
diff changeset
118 urllib.quote(newName, safe=''))
dcab422615ca working on local->global sub action. creation of new file in rdfdb is still a problem
drewp@bigasterisk.com
parents: 914
diff changeset
119 with self.graph.currentState(
dcab422615ca working on local->global sub action. creation of new file in rdfdb is still a problem
drewp@bigasterisk.com
parents: 914
diff changeset
120 tripleFilter=(uri, None, None)) as current:
dcab422615ca working on local->global sub action. creation of new file in rdfdb is still a problem
drewp@bigasterisk.com
parents: 914
diff changeset
121 if (uri, RDF.type, L9['LocalSubmaster']) not in current:
dcab422615ca working on local->global sub action. creation of new file in rdfdb is still a problem
drewp@bigasterisk.com
parents: 914
diff changeset
122 raise ValueError("%s is not a local submaster" % uri)
dcab422615ca working on local->global sub action. creation of new file in rdfdb is still a problem
drewp@bigasterisk.com
parents: 914
diff changeset
123 if (newUri, None, None) in current:
dcab422615ca working on local->global sub action. creation of new file in rdfdb is still a problem
drewp@bigasterisk.com
parents: 914
diff changeset
124 raise ValueError("new uri %s is in use" % newUri)
dcab422615ca working on local->global sub action. creation of new file in rdfdb is still a problem
drewp@bigasterisk.com
parents: 914
diff changeset
125
dcab422615ca working on local->global sub action. creation of new file in rdfdb is still a problem
drewp@bigasterisk.com
parents: 914
diff changeset
126 # the local submaster was storing in ctx=self.session, but now
dcab422615ca working on local->global sub action. creation of new file in rdfdb is still a problem
drewp@bigasterisk.com
parents: 914
diff changeset
127 # we want it to be in ctx=uri
dcab422615ca working on local->global sub action. creation of new file in rdfdb is still a problem
drewp@bigasterisk.com
parents: 914
diff changeset
128
dcab422615ca working on local->global sub action. creation of new file in rdfdb is still a problem
drewp@bigasterisk.com
parents: 914
diff changeset
129 self.relocateSub(newUri, newName)
dcab422615ca working on local->global sub action. creation of new file in rdfdb is still a problem
drewp@bigasterisk.com
parents: 914
diff changeset
130
dcab422615ca working on local->global sub action. creation of new file in rdfdb is still a problem
drewp@bigasterisk.com
parents: 914
diff changeset
131 # these are in separate patches for clarity as i'm debugging this
dcab422615ca working on local->global sub action. creation of new file in rdfdb is still a problem
drewp@bigasterisk.com
parents: 914
diff changeset
132 self.graph.patch(Patch(addQuads=[
dcab422615ca working on local->global sub action. creation of new file in rdfdb is still a problem
drewp@bigasterisk.com
parents: 914
diff changeset
133 (newUri, RDFS.label, Literal(newName), newUri),
dcab422615ca working on local->global sub action. creation of new file in rdfdb is still a problem
drewp@bigasterisk.com
parents: 914
diff changeset
134 ], delQuads=[
dcab422615ca working on local->global sub action. creation of new file in rdfdb is still a problem
drewp@bigasterisk.com
parents: 914
diff changeset
135 (newUri, RDF.type, L9['LocalSubmaster'], newUri),
dcab422615ca working on local->global sub action. creation of new file in rdfdb is still a problem
drewp@bigasterisk.com
parents: 914
diff changeset
136 ]))
dcab422615ca working on local->global sub action. creation of new file in rdfdb is still a problem
drewp@bigasterisk.com
parents: 914
diff changeset
137 self.graph.patchObject(self.session,
dcab422615ca working on local->global sub action. creation of new file in rdfdb is still a problem
drewp@bigasterisk.com
parents: 914
diff changeset
138 self.session, L9['currentSub'], newUri)
dcab422615ca working on local->global sub action. creation of new file in rdfdb is still a problem
drewp@bigasterisk.com
parents: 914
diff changeset
139
dcab422615ca working on local->global sub action. creation of new file in rdfdb is still a problem
drewp@bigasterisk.com
parents: 914
diff changeset
140 def relocateSub(self, newUri, newName):
dcab422615ca working on local->global sub action. creation of new file in rdfdb is still a problem
drewp@bigasterisk.com
parents: 914
diff changeset
141 # maybe this goes in Submaster
dcab422615ca working on local->global sub action. creation of new file in rdfdb is still a problem
drewp@bigasterisk.com
parents: 914
diff changeset
142 uri = self.currentSub().uri
dcab422615ca working on local->global sub action. creation of new file in rdfdb is still a problem
drewp@bigasterisk.com
parents: 914
diff changeset
143
dcab422615ca working on local->global sub action. creation of new file in rdfdb is still a problem
drewp@bigasterisk.com
parents: 914
diff changeset
144 def repl(u):
dcab422615ca working on local->global sub action. creation of new file in rdfdb is still a problem
drewp@bigasterisk.com
parents: 914
diff changeset
145 if u == uri:
dcab422615ca working on local->global sub action. creation of new file in rdfdb is still a problem
drewp@bigasterisk.com
parents: 914
diff changeset
146 return newUri
dcab422615ca working on local->global sub action. creation of new file in rdfdb is still a problem
drewp@bigasterisk.com
parents: 914
diff changeset
147 return u
dcab422615ca working on local->global sub action. creation of new file in rdfdb is still a problem
drewp@bigasterisk.com
parents: 914
diff changeset
148 delQuads = self.currentSub().allQuads()
dcab422615ca working on local->global sub action. creation of new file in rdfdb is still a problem
drewp@bigasterisk.com
parents: 914
diff changeset
149 addQuads = [(repl(s), p, repl(o), newUri) for s,p,o,c in delQuads]
dcab422615ca working on local->global sub action. creation of new file in rdfdb is still a problem
drewp@bigasterisk.com
parents: 914
diff changeset
150 # patch can't span contexts yet
dcab422615ca working on local->global sub action. creation of new file in rdfdb is still a problem
drewp@bigasterisk.com
parents: 914
diff changeset
151 self.graph.patch(Patch(addQuads=addQuads, delQuads=[]))
929
c20c2eea6fce another hack to stop graphfile from thinking its own new empty file means it should delete all the statements in that context
Drew Perttula <drewp@bigasterisk.com>
parents: 924
diff changeset
152 self.graph.patch(Patch(addQuads=[], delQuads=delQuads))
924
dcab422615ca working on local->global sub action. creation of new file in rdfdb is still a problem
drewp@bigasterisk.com
parents: 914
diff changeset
153
867
4b3d7e8ba24a subcomposer is nicer if we always have some Submaster object. and if you call all the init code
Drew Perttula <drewp@bigasterisk.com>
parents: 850
diff changeset
154
838
321fc6150ee3 subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents: 834
diff changeset
155 def setupSubChoiceLinks(self):
874
167a61d3cfbf subcomposer put local subs into the graph with a type edge.
Drew Perttula <drewp@bigasterisk.com>
parents: 867
diff changeset
156 graph = self.graph
838
321fc6150ee3 subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents: 834
diff changeset
157 def ann():
321fc6150ee3 subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents: 834
diff changeset
158 print "currently: session=%s currentSub=%r _currentChoice=%r" % (
321fc6150ee3 subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents: 834
diff changeset
159 self.session, self.currentSub(), self._currentChoice())
818
bf728997bfde start the observable between editchoice and the editor
drewp@bigasterisk.com
parents: 817
diff changeset
160
838
321fc6150ee3 subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents: 834
diff changeset
161 @graph.addHandler
321fc6150ee3 subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents: 834
diff changeset
162 def graphChanged():
1267
ce8a71fab284 trying to fix SC bad graph reload behavior, but this barely works. other tools have trouble too
drewp@bigasterisk.com
parents: 1164
diff changeset
163 # some bug where SC is making tons of graph edits and many
ce8a71fab284 trying to fix SC bad graph reload behavior, but this barely works. other tools have trouble too
drewp@bigasterisk.com
parents: 1164
diff changeset
164 # are failing. this calms things down.
ce8a71fab284 trying to fix SC bad graph reload behavior, but this barely works. other tools have trouble too
drewp@bigasterisk.com
parents: 1164
diff changeset
165 log.warn('skip graphChanged')
ce8a71fab284 trying to fix SC bad graph reload behavior, but this barely works. other tools have trouble too
drewp@bigasterisk.com
parents: 1164
diff changeset
166 return
ce8a71fab284 trying to fix SC bad graph reload behavior, but this barely works. other tools have trouble too
drewp@bigasterisk.com
parents: 1164
diff changeset
167
838
321fc6150ee3 subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents: 834
diff changeset
168 s = graph.value(self.session, L9['currentSub'])
1267
ce8a71fab284 trying to fix SC bad graph reload behavior, but this barely works. other tools have trouble too
drewp@bigasterisk.com
parents: 1164
diff changeset
169 log.debug('HANDLER getting session currentSub from graph: %s', s)
838
321fc6150ee3 subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents: 834
diff changeset
170 if s is None:
932
92c6e4b6cabb change base uri used on local subs
drewp@bigasterisk.com
parents: 929
diff changeset
171 s = self.switchToLocal()
838
321fc6150ee3 subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents: 834
diff changeset
172 self.currentSub(Submaster.PersistentSubmaster(graph, s))
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
173
838
321fc6150ee3 subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents: 834
diff changeset
174 @self.currentSub.subscribe
321fc6150ee3 subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents: 834
diff changeset
175 def subChanged(newSub):
1267
ce8a71fab284 trying to fix SC bad graph reload behavior, but this barely works. other tools have trouble too
drewp@bigasterisk.com
parents: 1164
diff changeset
176 log.debug('HANDLER currentSub changed to %s', newSub)
838
321fc6150ee3 subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents: 834
diff changeset
177 if newSub is None:
321fc6150ee3 subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents: 834
diff changeset
178 graph.patchObject(self.session,
321fc6150ee3 subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents: 834
diff changeset
179 self.session, L9['currentSub'], None)
321fc6150ee3 subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents: 834
diff changeset
180 return
321fc6150ee3 subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents: 834
diff changeset
181 self.sendupdate()
321fc6150ee3 subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents: 834
diff changeset
182 graph.patchObject(self.session,
321fc6150ee3 subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents: 834
diff changeset
183 self.session, L9['currentSub'], newSub.uri)
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
184
911
4b9997ab0e4f push some logs down to debug. -v flag on SC. another tripleFilter optimization
Drew Perttula <drewp@bigasterisk.com>
parents: 880
diff changeset
185 localStmt = (newSub.uri, RDF.type, L9['LocalSubmaster'])
4b9997ab0e4f push some logs down to debug. -v flag on SC. another tripleFilter optimization
Drew Perttula <drewp@bigasterisk.com>
parents: 880
diff changeset
186 with graph.currentState(tripleFilter=localStmt) as current:
4b9997ab0e4f push some logs down to debug. -v flag on SC. another tripleFilter optimization
Drew Perttula <drewp@bigasterisk.com>
parents: 880
diff changeset
187 if newSub and localStmt in current:
1267
ce8a71fab284 trying to fix SC bad graph reload behavior, but this barely works. other tools have trouble too
drewp@bigasterisk.com
parents: 1164
diff changeset
188 log.debug(' HANDLER set _currentChoice to Local')
880
e09e3d1d83d5 slightly better behavior when the graph is out of sync. add LocalSubmaster type
drewp@bigasterisk.com
parents: 874
diff changeset
189 self._currentChoice(Local)
e09e3d1d83d5 slightly better behavior when the graph is out of sync. add LocalSubmaster type
drewp@bigasterisk.com
parents: 874
diff changeset
190 else:
e09e3d1d83d5 slightly better behavior when the graph is out of sync. add LocalSubmaster type
drewp@bigasterisk.com
parents: 874
diff changeset
191 # i think right here is the point that the last local
1267
ce8a71fab284 trying to fix SC bad graph reload behavior, but this barely works. other tools have trouble too
drewp@bigasterisk.com
parents: 1164
diff changeset
192 # becomes garbage, and we could clean it up.
ce8a71fab284 trying to fix SC bad graph reload behavior, but this barely works. other tools have trouble too
drewp@bigasterisk.com
parents: 1164
diff changeset
193 log.debug(' HANDLER set _currentChoice to newSub.uri')
880
e09e3d1d83d5 slightly better behavior when the graph is out of sync. add LocalSubmaster type
drewp@bigasterisk.com
parents: 874
diff changeset
194 self._currentChoice(newSub.uri)
838
321fc6150ee3 subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents: 834
diff changeset
195
321fc6150ee3 subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents: 834
diff changeset
196 dispatcher.connect(self.levelsChanged, "sub levels changed")
321fc6150ee3 subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents: 834
diff changeset
197
321fc6150ee3 subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents: 834
diff changeset
198 @self._currentChoice.subscribe
321fc6150ee3 subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents: 834
diff changeset
199 def choiceChanged(newChoice):
1267
ce8a71fab284 trying to fix SC bad graph reload behavior, but this barely works. other tools have trouble too
drewp@bigasterisk.com
parents: 1164
diff changeset
200 log.debug('HANDLER choiceChanged to %s', newChoice)
838
321fc6150ee3 subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents: 834
diff changeset
201 if newChoice is Local:
932
92c6e4b6cabb change base uri used on local subs
drewp@bigasterisk.com
parents: 929
diff changeset
202 newChoice = self.switchToLocal()
838
321fc6150ee3 subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents: 834
diff changeset
203 if newChoice is not None:
1267
ce8a71fab284 trying to fix SC bad graph reload behavior, but this barely works. other tools have trouble too
drewp@bigasterisk.com
parents: 1164
diff changeset
204 newSub = Submaster.PersistentSubmaster(graph, newChoice)
ce8a71fab284 trying to fix SC bad graph reload behavior, but this barely works. other tools have trouble too
drewp@bigasterisk.com
parents: 1164
diff changeset
205 log.debug('write new choice to currentSub, from %r to %r', self.currentSub(), newSub)
ce8a71fab284 trying to fix SC bad graph reload behavior, but this barely works. other tools have trouble too
drewp@bigasterisk.com
parents: 1164
diff changeset
206 self.currentSub(newSub)
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
207
838
321fc6150ee3 subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents: 834
diff changeset
208 def levelsChanged(self, sub):
321fc6150ee3 subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents: 834
diff changeset
209 if sub == self.currentSub():
321fc6150ee3 subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents: 834
diff changeset
210 self.sendupdate()
321fc6150ee3 subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents: 834
diff changeset
211
932
92c6e4b6cabb change base uri used on local subs
drewp@bigasterisk.com
parents: 929
diff changeset
212 def switchToLocal(self):
924
dcab422615ca working on local->global sub action. creation of new file in rdfdb is still a problem
drewp@bigasterisk.com
parents: 914
diff changeset
213 """
dcab422615ca working on local->global sub action. creation of new file in rdfdb is still a problem
drewp@bigasterisk.com
parents: 914
diff changeset
214 change our display to a local submaster
dcab422615ca working on local->global sub action. creation of new file in rdfdb is still a problem
drewp@bigasterisk.com
parents: 914
diff changeset
215 """
838
321fc6150ee3 subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents: 834
diff changeset
216 # 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
217 # subcomposer process and don't use PersistentSubmaster at all?
1267
ce8a71fab284 trying to fix SC bad graph reload behavior, but this barely works. other tools have trouble too
drewp@bigasterisk.com
parents: 1164
diff changeset
218 localId = "%s-%s" % (self.launchTime, self.localSerial)
ce8a71fab284 trying to fix SC bad graph reload behavior, but this barely works. other tools have trouble too
drewp@bigasterisk.com
parents: 1164
diff changeset
219 self.localSerial += 1
ce8a71fab284 trying to fix SC bad graph reload behavior, but this barely works. other tools have trouble too
drewp@bigasterisk.com
parents: 1164
diff changeset
220 new = URIRef("http://light9.bigasterisk.com/sub/local/%s" % localId)
ce8a71fab284 trying to fix SC bad graph reload behavior, but this barely works. other tools have trouble too
drewp@bigasterisk.com
parents: 1164
diff changeset
221 log.debug('making up a local sub %s', new)
880
e09e3d1d83d5 slightly better behavior when the graph is out of sync. add LocalSubmaster type
drewp@bigasterisk.com
parents: 874
diff changeset
222 self.graph.patch(Patch(addQuads=[
e09e3d1d83d5 slightly better behavior when the graph is out of sync. add LocalSubmaster type
drewp@bigasterisk.com
parents: 874
diff changeset
223 (new, RDF.type, L9['Submaster'], self.session),
e09e3d1d83d5 slightly better behavior when the graph is out of sync. add LocalSubmaster type
drewp@bigasterisk.com
parents: 874
diff changeset
224 (new, RDF.type, L9['LocalSubmaster'], self.session),
e09e3d1d83d5 slightly better behavior when the graph is out of sync. add LocalSubmaster type
drewp@bigasterisk.com
parents: 874
diff changeset
225 ]))
874
167a61d3cfbf subcomposer put local subs into the graph with a type edge.
Drew Perttula <drewp@bigasterisk.com>
parents: 867
diff changeset
226
167a61d3cfbf subcomposer put local subs into the graph with a type edge.
Drew Perttula <drewp@bigasterisk.com>
parents: 867
diff changeset
227 return new
838
321fc6150ee3 subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents: 834
diff changeset
228
321fc6150ee3 subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents: 834
diff changeset
229 def setupLevelboxUi(self):
874
167a61d3cfbf subcomposer put local subs into the graph with a type edge.
Drew Perttula <drewp@bigasterisk.com>
parents: 867
diff changeset
230 self.levelbox = Levelbox(self, self.graph, self.currentSub)
838
321fc6150ee3 subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents: 834
diff changeset
231 self.levelbox.pack(side='top')
817
6885c2fa9369 subcomposer halfway to having the editchoice widget
drewp@bigasterisk.com
parents: 810
diff changeset
232
838
321fc6150ee3 subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents: 834
diff changeset
233 tk.Button(self, text="All to zero",
321fc6150ee3 subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents: 834
diff changeset
234 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
235
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
236 def savenewsub(self, subname):
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
237 leveldict={}
45b12307c695 Initial revision
drewp
parents:
diff changeset
238 for i,lev in zip(range(len(self.levels)),self.levels):
45b12307c695 Initial revision
drewp
parents:
diff changeset
239 if lev!=0:
874
167a61d3cfbf subcomposer put local subs into the graph with a type edge.
Drew Perttula <drewp@bigasterisk.com>
parents: 867
diff changeset
240 leveldict[get_channel_name(i+1)]=lev
342
2c782ca93e73 subcomposer takes sub name on cmdline
Drew Perttula <drewp@bigasterisk.com>
parents: 334
diff changeset
241
914
092c00f6ba25 fixes for Submaster init method
drewp@bigasterisk.com
parents: 911
diff changeset
242 s=Submaster.Submaster(subname, levels=leveldict)
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
243 s.save()
802
5442f5d8979a reformat
drewp@bigasterisk.com
parents: 729
diff changeset
244
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
245 def sendupdate(self):
838
321fc6150ee3 subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents: 834
diff changeset
246 d = self.currentSub().get_dmx_list()
321fc6150ee3 subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents: 834
diff changeset
247 dmxclient.outputlevels(d, twisted=True)
802
5442f5d8979a reformat
drewp@bigasterisk.com
parents: 729
diff changeset
248
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
249
838
321fc6150ee3 subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents: 834
diff changeset
250 def launch(opts, args, root, graph, session):
321fc6150ee3 subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents: 834
diff changeset
251 if not opts.no_geometry:
321fc6150ee3 subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents: 834
diff changeset
252 toplevelat("subcomposer - %s" % opts.session, root, graph, session)
321fc6150ee3 subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents: 834
diff changeset
253
1164
65f0179a9254 subcomposer has a web ui with buttons for toggling lights
drewp@bigasterisk.com
parents: 1133
diff changeset
254
838
321fc6150ee3 subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents: 834
diff changeset
255 sc = Subcomposer(root, graph, session)
321fc6150ee3 subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents: 834
diff changeset
256 sc.pack()
1164
65f0179a9254 subcomposer has a web ui with buttons for toggling lights
drewp@bigasterisk.com
parents: 1133
diff changeset
257
65f0179a9254 subcomposer has a web ui with buttons for toggling lights
drewp@bigasterisk.com
parents: 1133
diff changeset
258 subcomposerweb.init(graph, session, sc.currentSub)
818
bf728997bfde start the observable between editchoice and the editor
drewp@bigasterisk.com
parents: 817
diff changeset
259
838
321fc6150ee3 subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents: 834
diff changeset
260 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
261 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
262
321fc6150ee3 subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents: 834
diff changeset
263 if len(args) == 1:
321fc6150ee3 subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents: 834
diff changeset
264 # 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
265 # 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
266 # 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
267 # session (except when quitting and restarting, to get the
321fc6150ee3 subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents: 834
diff changeset
268 # 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
269 # this tool should probably default to making new sessions
321fc6150ee3 subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents: 834
diff changeset
270 # usually instead of loading the same one
850
f987eb9c3672 subcomposer code merge
drewp@bigasterisk.com
parents: 838
diff changeset
271 graph.patchObject(session,
f987eb9c3672 subcomposer code merge
drewp@bigasterisk.com
parents: 838
diff changeset
272 session, L9['currentSub'], URIRef(args[0]))
342
2c782ca93e73 subcomposer takes sub name on cmdline
Drew Perttula <drewp@bigasterisk.com>
parents: 334
diff changeset
273
838
321fc6150ee3 subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents: 834
diff changeset
274 task.LoopingCall(sc.sendupdate).start(10)
342
2c782ca93e73 subcomposer takes sub name on cmdline
Drew Perttula <drewp@bigasterisk.com>
parents: 334
diff changeset
275
149
c31601504358 now with Subcomposer.open_sub_editing_window.
dmcc
parents: 147
diff changeset
276
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
277 #############################
45b12307c695 Initial revision
drewp
parents:
diff changeset
278
45b12307c695 Initial revision
drewp
parents:
diff changeset
279 if __name__ == "__main__":
838
321fc6150ee3 subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents: 834
diff changeset
280 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
281 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
282 help="don't save/restore window geometry")
911
4b9997ab0e4f push some logs down to debug. -v flag on SC. another tripleFilter optimization
Drew Perttula <drewp@bigasterisk.com>
parents: 880
diff changeset
283 parser.add_option('-v', action='store_true', help="log debug level")
4b9997ab0e4f push some logs down to debug. -v flag on SC. another tripleFilter optimization
Drew Perttula <drewp@bigasterisk.com>
parents: 880
diff changeset
284
810
f29788d1c8c9 kc/sc session control
drewp@bigasterisk.com
parents: 804
diff changeset
285 clientsession.add_option(parser)
342
2c782ca93e73 subcomposer takes sub name on cmdline
Drew Perttula <drewp@bigasterisk.com>
parents: 334
diff changeset
286 opts, args = parser.parse_args()
2c782ca93e73 subcomposer takes sub name on cmdline
Drew Perttula <drewp@bigasterisk.com>
parents: 334
diff changeset
287
911
4b9997ab0e4f push some logs down to debug. -v flag on SC. another tripleFilter optimization
Drew Perttula <drewp@bigasterisk.com>
parents: 880
diff changeset
288 log.setLevel(logging.DEBUG if opts.v else logging.INFO)
4b9997ab0e4f push some logs down to debug. -v flag on SC. another tripleFilter optimization
Drew Perttula <drewp@bigasterisk.com>
parents: 880
diff changeset
289
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
290 root=tk.Tk()
45b12307c695 Initial revision
drewp
parents:
diff changeset
291 root.config(bg='black')
147
6a1f4becb1db merged some late color change edits from the theater
drewp
parents: 144
diff changeset
292 root.tk_setPalette("#004633")
817
6885c2fa9369 subcomposer halfway to having the editchoice widget
drewp@bigasterisk.com
parents: 810
diff changeset
293
6885c2fa9369 subcomposer halfway to having the editchoice widget
drewp@bigasterisk.com
parents: 810
diff changeset
294 initTkdnd(root.tk, 'tkdnd/trunk/')
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
295
1114
a38955ba6f40 rdfdb port is now in the config
Drew Perttula <drewp@bigasterisk.com>
parents: 932
diff changeset
296 graph = SyncedGraph(networking.rdfdb.url, "subcomposer")
810
f29788d1c8c9 kc/sc session control
drewp@bigasterisk.com
parents: 804
diff changeset
297 session = clientsession.getUri('subcomposer', opts)
803
ce4fffe8e413 update SC to read rdf graph
drewp@bigasterisk.com
parents: 802
diff changeset
298
838
321fc6150ee3 subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents: 834
diff changeset
299 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
300
810
f29788d1c8c9 kc/sc session control
drewp@bigasterisk.com
parents: 804
diff changeset
301 root.protocol('WM_DELETE_WINDOW', reactor.stop)
803
ce4fffe8e413 update SC to read rdf graph
drewp@bigasterisk.com
parents: 802
diff changeset
302 tksupport.install(root,ms=10)
ce4fffe8e413 update SC to read rdf graph
drewp@bigasterisk.com
parents: 802
diff changeset
303 prof.run(reactor.run, profile=False)