annotate bin/subcomposer @ 1698:f140153c087c

bring back clientsession which doesn't belong in rdfdb Ignore-this: 706126cc1ce1a17823bf04a6d4523a6
author Drew Perttula <drewp@bigasterisk.com>
date Thu, 26 Apr 2018 08:21:31 +0000
parents 5c04a54df635
children 7772cc48e016
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
1697
5c04a54df635 fix startup (this might be breaking mypy)
Drew Perttula <drewp@bigasterisk.com>
parents: 1692
diff changeset
19
5c04a54df635 fix startup (this might be breaking mypy)
Drew Perttula <drewp@bigasterisk.com>
parents: 1692
diff changeset
20 from run_local import log
838
321fc6150ee3 subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents: 834
diff changeset
21 import time, logging
1697
5c04a54df635 fix startup (this might be breaking mypy)
Drew Perttula <drewp@bigasterisk.com>
parents: 1692
diff changeset
22
5c04a54df635 fix startup (this might be breaking mypy)
Drew Perttula <drewp@bigasterisk.com>
parents: 1692
diff changeset
23 log.setLevel(logging.DEBUG)
5c04a54df635 fix startup (this might be breaking mypy)
Drew Perttula <drewp@bigasterisk.com>
parents: 1692
diff changeset
24
342
2c782ca93e73 subcomposer takes sub name on cmdline
Drew Perttula <drewp@bigasterisk.com>
parents: 334
diff changeset
25 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
26 import logging, urllib
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
27 import Tkinter as tk
802
5442f5d8979a reformat
drewp@bigasterisk.com
parents: 729
diff changeset
28 import louie as dispatcher
803
ce4fffe8e413 update SC to read rdf graph
drewp@bigasterisk.com
parents: 802
diff changeset
29 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
30 from rdflib import URIRef, RDF, RDFS, Literal
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
31
209
1a84c5e83d3e dmxserver and subcomposer work in new layout
drewp@bigasterisk.com
parents: 201
diff changeset
32 from light9.dmxchanedit import Levelbox
1133
0923efae4588 fix import on subcomposer
drewp@bigasterisk.com
parents: 1114
diff changeset
33 from light9 import dmxclient, Submaster, prof, showconfig, networking
874
167a61d3cfbf subcomposer put local subs into the graph with a type edge.
Drew Perttula <drewp@bigasterisk.com>
parents: 867
diff changeset
34 from light9.Patch import get_channel_name
455
9dd2baa41cca subcomposer remembers window position
drewp@bigasterisk.com
parents: 450
diff changeset
35 from light9.uihelpers import toplevelat
1692
6fa4288da8a6 rdfdb is its own package now
drewp@bigasterisk.com
parents: 1267
diff changeset
36 from rdfdb.syncedgraph import SyncedGraph
1698
f140153c087c bring back clientsession which doesn't belong in rdfdb
Drew Perttula <drewp@bigasterisk.com>
parents: 1697
diff changeset
37 from light9 import clientsession
850
f987eb9c3672 subcomposer code merge
drewp@bigasterisk.com
parents: 838
diff changeset
38 from light9.tkdnd import initTkdnd
f987eb9c3672 subcomposer code merge
drewp@bigasterisk.com
parents: 838
diff changeset
39 from light9.namespaces import L9
1692
6fa4288da8a6 rdfdb is its own package now
drewp@bigasterisk.com
parents: 1267
diff changeset
40 from rdfdb.patch import Patch
850
f987eb9c3672 subcomposer code merge
drewp@bigasterisk.com
parents: 838
diff changeset
41 from light9.observable import Observable
f987eb9c3672 subcomposer code merge
drewp@bigasterisk.com
parents: 838
diff changeset
42 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
43 from light9.subcomposer import subcomposerweb
818
bf728997bfde start the observable between editchoice and the editor
drewp@bigasterisk.com
parents: 817
diff changeset
44
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
45
45b12307c695 Initial revision
drewp
parents:
diff changeset
46 class Subcomposer(tk.Frame):
817
6885c2fa9369 subcomposer halfway to having the editchoice widget
drewp@bigasterisk.com
parents: 810
diff changeset
47 """
6885c2fa9369 subcomposer halfway to having the editchoice widget
drewp@bigasterisk.com
parents: 810
diff changeset
48 <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
49 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
50 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
51
838
321fc6150ee3 subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents: 834
diff changeset
52 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
53 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
54 special cases.
321fc6150ee3 subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents: 834
diff changeset
55
818
bf728997bfde start the observable between editchoice and the editor
drewp@bigasterisk.com
parents: 817
diff changeset
56 Contains an EditChoice widget
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 Dependencies:
817
6885c2fa9369 subcomposer halfway to having the editchoice widget
drewp@bigasterisk.com
parents: 810
diff changeset
59
838
321fc6150ee3 subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents: 834
diff changeset
60 graph (?session :currentSub ?s) -> self.currentSub
321fc6150ee3 subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents: 834
diff changeset
61 self.currentSub -> graph
321fc6150ee3 subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents: 834
diff changeset
62 self.currentSub -> self._currentChoice (which might be Local)
321fc6150ee3 subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents: 834
diff changeset
63 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
64
838
321fc6150ee3 subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents: 834
diff changeset
65 inside the current sub:
321fc6150ee3 subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents: 834
diff changeset
66 graph -> Submaster levels (handled in Submaster)
321fc6150ee3 subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents: 834
diff changeset
67 Submaster levels -> OneLevel widget
321fc6150ee3 subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents: 834
diff changeset
68 OneLevel widget -> Submaster.editLevel
321fc6150ee3 subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents: 834
diff changeset
69 Submaster.editLevel -> graph (handled in Submaster)
817
6885c2fa9369 subcomposer halfway to having the editchoice widget
drewp@bigasterisk.com
parents: 810
diff changeset
70
6885c2fa9369 subcomposer halfway to having the editchoice widget
drewp@bigasterisk.com
parents: 810
diff changeset
71 """
810
f29788d1c8c9 kc/sc session control
drewp@bigasterisk.com
parents: 804
diff changeset
72 def __init__(self, master, graph, session):
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
73 tk.Frame.__init__(self, master, bg='black')
803
ce4fffe8e413 update SC to read rdf graph
drewp@bigasterisk.com
parents: 802
diff changeset
74 self.graph = graph
810
f29788d1c8c9 kc/sc session control
drewp@bigasterisk.com
parents: 804
diff changeset
75 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
76 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
77 self.localSerial = 0
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
78
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
79 # 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
80 # 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
81 # 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
82 # 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
83 self._currentChoice = Observable(Local)
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
84
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
85 # 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
86 self.currentSub = Observable(Submaster.PersistentSubmaster(
932
92c6e4b6cabb change base uri used on local subs
drewp@bigasterisk.com
parents: 929
diff changeset
87 graph, self.switchToLocal()))
818
bf728997bfde start the observable between editchoice and the editor
drewp@bigasterisk.com
parents: 817
diff changeset
88
bf728997bfde start the observable between editchoice and the editor
drewp@bigasterisk.com
parents: 817
diff changeset
89 def pc(val):
850
f987eb9c3672 subcomposer code merge
drewp@bigasterisk.com
parents: 838
diff changeset
90 log.info("change viewed sub to %s", val)
f987eb9c3672 subcomposer code merge
drewp@bigasterisk.com
parents: 838
diff changeset
91 self._currentChoice.subscribe(pc)
818
bf728997bfde start the observable between editchoice and the editor
drewp@bigasterisk.com
parents: 817
diff changeset
92
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
93 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
94 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
95
dcab422615ca working on local->global sub action. creation of new file in rdfdb is still a problem
drewp@bigasterisk.com
parents: 914
diff changeset
96 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
97 self.setupSubChoiceLinks()
874
167a61d3cfbf subcomposer put local subs into the graph with a type edge.
Drew Perttula <drewp@bigasterisk.com>
parents: 867
diff changeset
98 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
99
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 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
101 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
102 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
103 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
104 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
105 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
106 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
107 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
108 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
109 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
110 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
111
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 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
113 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
114
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 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
116 """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
117 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
118 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
119 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
120 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
121 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
122 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
123 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
124 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
125 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
126
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 # 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
128 # 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
129
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 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
131
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 # 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
133 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
134 (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
135 ], 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
136 (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
137 ]))
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.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
139 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
140
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 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
142 # 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
143 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
144
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 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
146 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
147 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
148 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
149 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
150 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
151 # 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
152 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
153 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
154
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
155
838
321fc6150ee3 subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents: 834
diff changeset
156 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
157 graph = self.graph
838
321fc6150ee3 subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents: 834
diff changeset
158 def ann():
321fc6150ee3 subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents: 834
diff changeset
159 print "currently: session=%s currentSub=%r _currentChoice=%r" % (
321fc6150ee3 subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents: 834
diff changeset
160 self.session, self.currentSub(), self._currentChoice())
818
bf728997bfde start the observable between editchoice and the editor
drewp@bigasterisk.com
parents: 817
diff changeset
161
838
321fc6150ee3 subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents: 834
diff changeset
162 @graph.addHandler
321fc6150ee3 subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents: 834
diff changeset
163 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
164 # 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
165 # 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
166 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
167 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
168
838
321fc6150ee3 subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents: 834
diff changeset
169 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
170 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
171 if s is None:
932
92c6e4b6cabb change base uri used on local subs
drewp@bigasterisk.com
parents: 929
diff changeset
172 s = self.switchToLocal()
838
321fc6150ee3 subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents: 834
diff changeset
173 self.currentSub(Submaster.PersistentSubmaster(graph, s))
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
174
838
321fc6150ee3 subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents: 834
diff changeset
175 @self.currentSub.subscribe
321fc6150ee3 subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents: 834
diff changeset
176 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
177 log.debug('HANDLER currentSub changed to %s', newSub)
838
321fc6150ee3 subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents: 834
diff changeset
178 if newSub is None:
321fc6150ee3 subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents: 834
diff changeset
179 graph.patchObject(self.session,
321fc6150ee3 subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents: 834
diff changeset
180 self.session, L9['currentSub'], None)
321fc6150ee3 subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents: 834
diff changeset
181 return
321fc6150ee3 subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents: 834
diff changeset
182 self.sendupdate()
321fc6150ee3 subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents: 834
diff changeset
183 graph.patchObject(self.session,
321fc6150ee3 subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents: 834
diff changeset
184 self.session, L9['currentSub'], newSub.uri)
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
185
911
4b9997ab0e4f push some logs down to debug. -v flag on SC. another tripleFilter optimization
Drew Perttula <drewp@bigasterisk.com>
parents: 880
diff changeset
186 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
187 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
188 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
189 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
190 self._currentChoice(Local)
e09e3d1d83d5 slightly better behavior when the graph is out of sync. add LocalSubmaster type
drewp@bigasterisk.com
parents: 874
diff changeset
191 else:
e09e3d1d83d5 slightly better behavior when the graph is out of sync. add LocalSubmaster type
drewp@bigasterisk.com
parents: 874
diff changeset
192 # 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
193 # 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
194 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
195 self._currentChoice(newSub.uri)
838
321fc6150ee3 subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents: 834
diff changeset
196
321fc6150ee3 subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents: 834
diff changeset
197 dispatcher.connect(self.levelsChanged, "sub levels changed")
321fc6150ee3 subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents: 834
diff changeset
198
321fc6150ee3 subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents: 834
diff changeset
199 @self._currentChoice.subscribe
321fc6150ee3 subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents: 834
diff changeset
200 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
201 log.debug('HANDLER choiceChanged to %s', newChoice)
838
321fc6150ee3 subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents: 834
diff changeset
202 if newChoice is Local:
932
92c6e4b6cabb change base uri used on local subs
drewp@bigasterisk.com
parents: 929
diff changeset
203 newChoice = self.switchToLocal()
838
321fc6150ee3 subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents: 834
diff changeset
204 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
205 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
206 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
207 self.currentSub(newSub)
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
208
838
321fc6150ee3 subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents: 834
diff changeset
209 def levelsChanged(self, sub):
321fc6150ee3 subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents: 834
diff changeset
210 if sub == self.currentSub():
321fc6150ee3 subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents: 834
diff changeset
211 self.sendupdate()
321fc6150ee3 subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents: 834
diff changeset
212
932
92c6e4b6cabb change base uri used on local subs
drewp@bigasterisk.com
parents: 929
diff changeset
213 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
214 """
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 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
216 """
838
321fc6150ee3 subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents: 834
diff changeset
217 # 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
218 # 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
219 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
220 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
221 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
222 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
223 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
224 (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
225 (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
226 ]))
874
167a61d3cfbf subcomposer put local subs into the graph with a type edge.
Drew Perttula <drewp@bigasterisk.com>
parents: 867
diff changeset
227
167a61d3cfbf subcomposer put local subs into the graph with a type edge.
Drew Perttula <drewp@bigasterisk.com>
parents: 867
diff changeset
228 return new
838
321fc6150ee3 subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents: 834
diff changeset
229
321fc6150ee3 subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents: 834
diff changeset
230 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
231 self.levelbox = Levelbox(self, self.graph, self.currentSub)
838
321fc6150ee3 subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents: 834
diff changeset
232 self.levelbox.pack(side='top')
817
6885c2fa9369 subcomposer halfway to having the editchoice widget
drewp@bigasterisk.com
parents: 810
diff changeset
233
838
321fc6150ee3 subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents: 834
diff changeset
234 tk.Button(self, text="All to zero",
321fc6150ee3 subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents: 834
diff changeset
235 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
236
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
237 def savenewsub(self, subname):
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
238 leveldict={}
45b12307c695 Initial revision
drewp
parents:
diff changeset
239 for i,lev in zip(range(len(self.levels)),self.levels):
45b12307c695 Initial revision
drewp
parents:
diff changeset
240 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
241 leveldict[get_channel_name(i+1)]=lev
342
2c782ca93e73 subcomposer takes sub name on cmdline
Drew Perttula <drewp@bigasterisk.com>
parents: 334
diff changeset
242
914
092c00f6ba25 fixes for Submaster init method
drewp@bigasterisk.com
parents: 911
diff changeset
243 s=Submaster.Submaster(subname, levels=leveldict)
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
244 s.save()
802
5442f5d8979a reformat
drewp@bigasterisk.com
parents: 729
diff changeset
245
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
246 def sendupdate(self):
838
321fc6150ee3 subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents: 834
diff changeset
247 d = self.currentSub().get_dmx_list()
321fc6150ee3 subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents: 834
diff changeset
248 dmxclient.outputlevels(d, twisted=True)
802
5442f5d8979a reformat
drewp@bigasterisk.com
parents: 729
diff changeset
249
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
250
838
321fc6150ee3 subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents: 834
diff changeset
251 def launch(opts, args, root, graph, session):
321fc6150ee3 subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents: 834
diff changeset
252 if not opts.no_geometry:
321fc6150ee3 subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents: 834
diff changeset
253 toplevelat("subcomposer - %s" % opts.session, root, graph, session)
321fc6150ee3 subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents: 834
diff changeset
254
1164
65f0179a9254 subcomposer has a web ui with buttons for toggling lights
drewp@bigasterisk.com
parents: 1133
diff changeset
255
838
321fc6150ee3 subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents: 834
diff changeset
256 sc = Subcomposer(root, graph, session)
321fc6150ee3 subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents: 834
diff changeset
257 sc.pack()
1164
65f0179a9254 subcomposer has a web ui with buttons for toggling lights
drewp@bigasterisk.com
parents: 1133
diff changeset
258
65f0179a9254 subcomposer has a web ui with buttons for toggling lights
drewp@bigasterisk.com
parents: 1133
diff changeset
259 subcomposerweb.init(graph, session, sc.currentSub)
818
bf728997bfde start the observable between editchoice and the editor
drewp@bigasterisk.com
parents: 817
diff changeset
260
838
321fc6150ee3 subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents: 834
diff changeset
261 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
262 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
263
321fc6150ee3 subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents: 834
diff changeset
264 if len(args) == 1:
321fc6150ee3 subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents: 834
diff changeset
265 # 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
266 # 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
267 # 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
268 # session (except when quitting and restarting, to get the
321fc6150ee3 subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents: 834
diff changeset
269 # 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
270 # this tool should probably default to making new sessions
321fc6150ee3 subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents: 834
diff changeset
271 # usually instead of loading the same one
850
f987eb9c3672 subcomposer code merge
drewp@bigasterisk.com
parents: 838
diff changeset
272 graph.patchObject(session,
f987eb9c3672 subcomposer code merge
drewp@bigasterisk.com
parents: 838
diff changeset
273 session, L9['currentSub'], URIRef(args[0]))
342
2c782ca93e73 subcomposer takes sub name on cmdline
Drew Perttula <drewp@bigasterisk.com>
parents: 334
diff changeset
274
838
321fc6150ee3 subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents: 834
diff changeset
275 task.LoopingCall(sc.sendupdate).start(10)
342
2c782ca93e73 subcomposer takes sub name on cmdline
Drew Perttula <drewp@bigasterisk.com>
parents: 334
diff changeset
276
149
c31601504358 now with Subcomposer.open_sub_editing_window.
dmcc
parents: 147
diff changeset
277
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
278 #############################
45b12307c695 Initial revision
drewp
parents:
diff changeset
279
45b12307c695 Initial revision
drewp
parents:
diff changeset
280 if __name__ == "__main__":
838
321fc6150ee3 subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents: 834
diff changeset
281 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
282 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
283 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
284 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
285
810
f29788d1c8c9 kc/sc session control
drewp@bigasterisk.com
parents: 804
diff changeset
286 clientsession.add_option(parser)
342
2c782ca93e73 subcomposer takes sub name on cmdline
Drew Perttula <drewp@bigasterisk.com>
parents: 334
diff changeset
287 opts, args = parser.parse_args()
2c782ca93e73 subcomposer takes sub name on cmdline
Drew Perttula <drewp@bigasterisk.com>
parents: 334
diff changeset
288
911
4b9997ab0e4f push some logs down to debug. -v flag on SC. another tripleFilter optimization
Drew Perttula <drewp@bigasterisk.com>
parents: 880
diff changeset
289 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
290
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
291 root=tk.Tk()
45b12307c695 Initial revision
drewp
parents:
diff changeset
292 root.config(bg='black')
147
6a1f4becb1db merged some late color change edits from the theater
drewp
parents: 144
diff changeset
293 root.tk_setPalette("#004633")
817
6885c2fa9369 subcomposer halfway to having the editchoice widget
drewp@bigasterisk.com
parents: 810
diff changeset
294
6885c2fa9369 subcomposer halfway to having the editchoice widget
drewp@bigasterisk.com
parents: 810
diff changeset
295 initTkdnd(root.tk, 'tkdnd/trunk/')
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
296
1114
a38955ba6f40 rdfdb port is now in the config
Drew Perttula <drewp@bigasterisk.com>
parents: 932
diff changeset
297 graph = SyncedGraph(networking.rdfdb.url, "subcomposer")
810
f29788d1c8c9 kc/sc session control
drewp@bigasterisk.com
parents: 804
diff changeset
298 session = clientsession.getUri('subcomposer', opts)
803
ce4fffe8e413 update SC to read rdf graph
drewp@bigasterisk.com
parents: 802
diff changeset
299
838
321fc6150ee3 subcomposer's nice currently-editing DnD box
drewp@bigasterisk.com
parents: 834
diff changeset
300 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
301
810
f29788d1c8c9 kc/sc session control
drewp@bigasterisk.com
parents: 804
diff changeset
302 root.protocol('WM_DELETE_WINDOW', reactor.stop)
803
ce4fffe8e413 update SC to read rdf graph
drewp@bigasterisk.com
parents: 802
diff changeset
303 tksupport.install(root,ms=10)
ce4fffe8e413 update SC to read rdf graph
drewp@bigasterisk.com
parents: 802
diff changeset
304 prof.run(reactor.run, profile=False)