Mercurial > code > home > repos > light9
changeset 737:3d1112a894df
drag subs from KC into CC to make a new subterm (if needed) and curve and some points that turn the sub on right now. some bugs about adding a subterm more than once
Ignore-this: 2c90a5d00c667ea38f23b0e6b36061dc
author | Drew Perttula <drewp@bigasterisk.com> |
---|---|
date | Fri, 15 Jun 2012 07:00:49 +0000 |
parents | d1bff8a3b069 |
children | fdc7143870bf |
files | bin/curvecalc light9/curvecalc/curve.py light9/curvecalc/curveview.py |
diffstat | 3 files changed, 50 insertions(+), 25 deletions(-) [+] |
line wrap: on
line diff
--- a/bin/curvecalc Fri Jun 15 06:10:54 2012 +0000 +++ b/bin/curvecalc Fri Jun 15 07:00:49 2012 +0000 @@ -15,9 +15,8 @@ gtk2reactor.install() from twisted.internet import reactor -import time, textwrap, os, optparse, urllib2, gtk, gobject, linecache, signal, traceback +import time, textwrap, os, optparse, gtk, linecache, signal, traceback import louie as dispatcher -from twisted.python.util import sibpath from rdflib import URIRef, Graph, Literal, RDF, RDFS import logging log = logging.getLogger() @@ -42,6 +41,9 @@ read_all_subs(graph) return graph +class SubtermExists(ValueError): + pass + class Main(object): def __init__(self, graph, opts, song, curveset, subterms, music): self.graph, self.opts, self.song = graph, opts, song @@ -73,6 +75,33 @@ self.makeStatusLines(wtree.get_object("status")) + def connect(w): + w.drag_dest_set(flags=gtk.DEST_DEFAULT_ALL, + targets=[('text/uri-list', 0, 0)], + actions=gtk.gdk.ACTION_COPY) + w.connect("drag-data-received", self.onDataReceived) + connect(mainwin) + # that's not enough- deeper windows don't accept the + # event. + mainwin.forall(connect) # not very effective + connect(wtree.get_object("subterms")) # works for that area + + def onDataReceived(self, widget, context, x, y, selection, + targetType, time): + uri = URIRef(selection.data.strip()) + subName = self.graph.label(uri) + + try: + self.makeSubterm(subName, withCurve=True) + except SubtermExists: + pass + curveView = self.curvesetView.row(subName).curveView + t = curveView.current_time() + print "time", t + curveView.add_point((t - .5, 0)) + curveView.add_point((t, 1)) + + def onNewCurve(self, *args): dialog = self.wtree.get_object("newCurve") entry = self.wtree.get_object("newCurveName") @@ -91,18 +120,23 @@ entry.grab_focus() if dialog.run() == 1: newname = entry.get_text() - uri = L9['sub/%s' % newname] - self.graph.add((uri, RDF.type, L9.Subterm)) - self.graph.add((uri, RDFS.label, Literal(newname))) - add_one_subterm(self.graph, uri, - self.curveset, self.subterms, - self.wtree.get_object("subterms"), - None, show=True) - if self.wtree.get_object("newSubtermMakeCurve").get_active(): - self.curveset.new_curve(newname) - + wc = self.wtree.get_object("newSubtermMakeCurve").get_active() + self.makeSubterm(newname, withCurve=wc) dialog.hide() + def makeSubterm(self, newname, withCurve=False): + 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))) + add_one_subterm(self.graph, uri, + self.curveset, self.subterms, + self.wtree.get_object("subterms"), + None, show=True) + if withCurve: + self.curveset.new_curve(newname) + def refreshTheme(self): gtk.rc_reparse_all() reactor.callLater(1, self.refreshTheme) @@ -219,7 +253,7 @@ # the curve at startup. If tk is very slow, it's # ok. You'll just get some wasted redraws. self.curvesetView.goLive() - except Exception, e: + except Exception: print "reload failed:" traceback.print_exc() if self.opts.reload:
--- a/light9/curvecalc/curve.py Fri Jun 15 06:10:54 2012 +0000 +++ b/light9/curvecalc/curve.py Fri Jun 15 07:00:49 2012 +0000 @@ -176,6 +176,8 @@ return sorted(self.curves.keys(), key=self.sorter) def add_curve(self,name,curve): + if name in self.curves: + raise ValueError("can't add a second curve named %r" % name) self.curves[name] = curve self.curveName[curve] = name
--- a/light9/curvecalc/curveview.py Fri Jun 15 06:10:54 2012 +0000 +++ b/light9/curvecalc/curveview.py Fri Jun 15 07:00:49 2012 +0000 @@ -372,18 +372,7 @@ self.widget.connect("focus-in-event", self.onFocusIn) self.widget.connect("focus-out-event", self.onFocusOut) - #self.widget.connect("event", self.onAny) - - # this is actually for subterms or mainwin, but i test here for reloads. - self.widget.drag_dest_set(flags=gtk.DEST_DEFAULT_ALL, - targets=[('text/uri-list', 0, 0)], - actions=gtk.gdk.ACTION_COPY) - self.widget.connect("drag-data-received", self.onDataReceived) - - - def onDataReceived(self, widget, context, x, y, selection, targetType, time): - print "recv", repr(selection.data) - + #self.widget.connect("event", self.onAny) def onAny(self, w, event): print " %s on %s" % (event, w)