comparison bin/curvecalc @ 778:a2c1dc358bb1

support dragging in a url to make curves and subterms Ignore-this: 8cb0583c1350d8d414d8ef2995524c68
author drewp@bigasterisk.com
date Sat, 16 Jun 2012 23:46:03 +0000
parents 24db623e2097
children d3f6830f55a2
comparison
equal deleted inserted replaced
777:5aac3227f9a9 778:a2c1dc358bb1
14 from twisted.internet import gtk2reactor 14 from twisted.internet import gtk2reactor
15 gtk2reactor.install() 15 gtk2reactor.install()
16 from twisted.internet import reactor 16 from twisted.internet import reactor
17 17
18 import time, textwrap, os, optparse, gtk, linecache, signal, traceback, json 18 import time, textwrap, os, optparse, gtk, linecache, signal, traceback, json
19 from urlparse import parse_qsl
19 import louie as dispatcher 20 import louie as dispatcher
20 from rdflib import URIRef, Graph, Literal, RDF, RDFS 21 from rdflib import URIRef, Graph, Literal, RDF, RDFS
21 import logging 22 import logging
22 log = logging.getLogger() 23 log = logging.getLogger()
23 24
91 # may not work 92 # may not work
92 wtree.get_object("paned1").set_position(600) 93 wtree.get_object("paned1").set_position(600)
93 94
94 def onDataReceived(self, widget, context, x, y, selection, 95 def onDataReceived(self, widget, context, x, y, selection,
95 targetType, time): 96 targetType, time):
96 uri = URIRef(selection.data.strip()) 97 data = selection.data.strip()
98 if '?' in data:
99 self.handleSubtermDrop(data)
100 return
101 uri = URIRef(data)
97 subName = self.graph.label(uri) 102 subName = self.graph.label(uri)
98
99 103
100 if not list(self.graph.subjects(L9['sub'], uri)): 104 if not list(self.graph.subjects(L9['sub'], uri)):
101 # might be a new one just created in KC 105 # might be a new one just created in KC
102 print "didn't find %r, reloading subs" % uri 106 print "didn't find %r, reloading subs" % uri
103 self.onReloadSubs() 107 self.onReloadSubs()
109 curveView = self.curvesetView.row(subName).curveView 113 curveView = self.curvesetView.row(subName).curveView
110 t = self.lastSeenInputTime # curveView.current_time() # new curve hasn't heard the time yet. this has gotten too messy- everyone just needs to be able to reach the time source 114 t = self.lastSeenInputTime # curveView.current_time() # new curve hasn't heard the time yet. this has gotten too messy- everyone just needs to be able to reach the time source
111 print "time", t 115 print "time", t
112 curveView.add_points([(t - .5, 0), 116 curveView.add_points([(t - .5, 0),
113 (t, 1)]) 117 (t, 1)])
114 118
119 def handleSubtermDrop(self, data):
120 params = parse_qsl(data.split('?')[1])
121 flattened = dict(params)
122 self.makeSubterm(flattened['subtermName'],
123 expr=flattened['subtermExpr'])
124
125 for cmd, name in params:
126 if cmd == 'curve':
127 self.curveset.new_curve(name)
115 128
116 def onNewCurve(self, *args): 129 def onNewCurve(self, *args):
117 dialog = self.wtree.get_object("newCurve") 130 dialog = self.wtree.get_object("newCurve")
118 entry = self.wtree.get_object("newCurveName") 131 entry = self.wtree.get_object("newCurveName")
119 # if you don't have songx, that should be the suggested name 132 # if you don't have songx, that should be the suggested name
133 newname = entry.get_text() 146 newname = entry.get_text()
134 wc = self.wtree.get_object("newSubtermMakeCurve").get_active() 147 wc = self.wtree.get_object("newSubtermMakeCurve").get_active()
135 self.makeSubterm(newname, withCurve=wc) 148 self.makeSubterm(newname, withCurve=wc)
136 dialog.hide() 149 dialog.hide()
137 150
138 def makeSubterm(self, newname, withCurve=False): 151 def makeSubterm(self, newname, withCurve=False, expr=None):
139 uri = L9['sub/%s' % newname] 152 uri = L9['sub/%s' % newname]
140 if (uri, RDF.type, L9.Subterm) in self.graph: 153 if (uri, RDF.type, L9.Subterm) in self.graph:
141 raise SubtermExists("already have a subterm named %r" % newname) 154 raise SubtermExists("already have a subterm named %r" % newname)
142 self.graph.add((uri, RDF.type, L9.Subterm)) 155 self.graph.add((uri, RDF.type, L9.Subterm))
143 self.graph.add((uri, RDFS.label, Literal(newname))) 156 self.graph.add((uri, RDFS.label, Literal(newname)))
144 add_one_subterm(self.graph, uri, 157 add_one_subterm(self.graph, uri,
145 self.curveset, self.subterms, 158 self.curveset, self.subterms,
146 self.wtree.get_object("subterms"), 159 self.wtree.get_object("subterms"),
147 None, show=True) 160 expr=expr, show=True)
148 if withCurve: 161 if withCurve:
149 self.curveset.new_curve(newname) 162 self.curveset.new_curve(newname)
150 163
151 def refreshTheme(self): 164 def refreshTheme(self):
152 gtk.rc_reparse_all() 165 gtk.rc_reparse_all()