diff bin/curvecalc @ 889:3b1a435a29b8

start fixing curvecalc data model; not done yet Ignore-this: 9960bef2556cd57da749e921bcf3248
author Drew Perttula <drewp@bigasterisk.com>
date Sat, 08 Jun 2013 08:22:39 +0000
parents 4fe5612db2ed
children 95e311bffbd9
line wrap: on
line diff
--- a/bin/curvecalc	Sat Jun 08 08:21:24 2013 +0000
+++ b/bin/curvecalc	Sat Jun 08 08:22:39 2013 +0000
@@ -35,6 +35,7 @@
 from light9.curvecalc.output import Output
 from light9.gtkpyconsole import togglePyConsole
 from light9.rdfdb.syncedgraph import SyncedGraph
+from light9.rdfdb.patch import Patch
 from light9.editchoicegtk import EditChoice
 from light9.observable import Observable
 
@@ -157,13 +158,26 @@
             self.makeSubterm(newname, withCurve=wc)
         dialog.hide()
 
+    def currentSong(self):
+        with self.graph.currentState() as current:
+            return current.value(self.session, L9['currentSong'])
+
+    def songSubtermsContext(self):
+        return self.currentSong()
+
     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)
-        self.graph.add((uri, RDF.type, L9.Subterm))
-        self.graph.add((uri, RDFS.label, Literal(newname)))
-        self.graph.add((self.song, L9['subterm'], uri))
+        with self.graph.currentState() as current:
+            if (uri, RDF.type, L9.Subterm) in current:
+                raise SubtermExists("already have a subterm named %r" % newname)
+
+        ctx = self.songSubtermsContext()
+        self.graph.patch(Patch(addQuads=[
+            (uri, RDF.type, L9.Subterm, ctx),
+            (uri, RDFS.label, Literal(newname), ctx),
+            (self.currentSong(), L9['subterm'], uri, ctx),
+            ]))
+            
         if withCurve:
             self.curveset.new_curve(newname)