Changeset - 3d1112a894df
[Not reviewed]
default
0 3 0
Drew Perttula - 13 years ago 2012-06-15 07:00:49
drewp@bigasterisk.com
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
3 files changed with 50 insertions and 25 deletions:
0 comments (0 inline, 0 general)
bin/curvecalc
Show inline comments
 
@@ -15,9 +15,8 @@ from twisted.internet import gtk2reactor
 
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 @@ def makeGraph():
 
    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 @@ class Main(object):
 
        
 
        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 @@ class Main(object):
 
        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 @@ class Main(object):
 
                # 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:
light9/curvecalc/curve.py
Show inline comments
 
@@ -176,6 +176,8 @@ class Curveset(object):
 
        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
 

	
light9/curvecalc/curveview.py
Show inline comments
 
@@ -372,18 +372,7 @@ class Curveview(object):
 

	
 
        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)
0 comments (0 inline, 0 general)