changeset 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 5aac3227f9a9
children d3f6830f55a2
files bin/curvecalc
diffstat 1 files changed, 18 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/bin/curvecalc	Sat Jun 16 23:45:56 2012 +0000
+++ b/bin/curvecalc	Sat Jun 16 23:46:03 2012 +0000
@@ -16,6 +16,7 @@
 from twisted.internet import reactor
 
 import time, textwrap, os, optparse, gtk, linecache, signal, traceback, json
+from urlparse import parse_qsl
 import louie as dispatcher 
 from rdflib import URIRef, Graph, Literal, RDF, RDFS
 import logging
@@ -93,9 +94,12 @@
 
     def onDataReceived(self, widget, context, x, y, selection,
                        targetType, time):
-        uri = URIRef(selection.data.strip())
+        data = selection.data.strip()
+        if '?' in data:
+            self.handleSubtermDrop(data)
+            return
+        uri = URIRef(data)
         subName = self.graph.label(uri)
-
         
         if not list(self.graph.subjects(L9['sub'], uri)):
             # might be a new one just created in KC
@@ -111,7 +115,16 @@
         print "time", t
         curveView.add_points([(t - .5, 0),
                               (t, 1)])
-            
+
+    def handleSubtermDrop(self, data):
+        params = parse_qsl(data.split('?')[1])
+        flattened = dict(params)
+        self.makeSubterm(flattened['subtermName'],
+                         expr=flattened['subtermExpr'])
+
+        for cmd, name in params:
+            if cmd == 'curve':
+                self.curveset.new_curve(name)
 
     def onNewCurve(self, *args):
         dialog = self.wtree.get_object("newCurve")
@@ -135,7 +148,7 @@
             self.makeSubterm(newname, withCurve=wc)
         dialog.hide()
 
-    def makeSubterm(self, newname, withCurve=False):
+    def makeSubterm(self, newname, withCurve=False, expr=None):
         uri = L9['sub/%s' % newname]
         if (uri, RDF.type, L9.Subterm) in self.graph:
             raise SubtermExists("already have a subterm named %r" % newname)
@@ -144,7 +157,7 @@
         add_one_subterm(self.graph, uri,
                         self.curveset, self.subterms,
                         self.wtree.get_object("subterms"),
-                        None, show=True)
+                        expr=expr, show=True)
         if withCurve:
             self.curveset.new_curve(newname)