Mercurial > code > home > repos > light9
view light9/curvecalc/subtermview.py @ 707:c4a38a247b26
cleanup. 'create' menu
Ignore-this: 1b265046817739a4271d079f5254b77f
author | Drew Perttula <drewp@bigasterisk.com> |
---|---|
date | Sun, 10 Jun 2012 08:54:17 +0000 |
parents | 16042667ab51 |
children | e8f9f4815ab4 |
line wrap: on
line source
import gtk from louie import dispatcher from rdflib import RDF, RDFS, Literal from light9 import Submaster from light9.namespaces import L9 from light9.curvecalc.subterm import Subterm, Subexpr class Subexprview(object): def __init__(self, se): self.subexpr = se self.box = gtk.HBox() self.entryBuffer = gtk.EntryBuffer("", -1) self.entry = gtk.Entry() self.error = gtk.Label("") self.box.pack_start(self.entry, expand=True) self.box.pack_start(self.error, expand=False) self.entry.set_buffer(self.entryBuffer) self.expr_changed() self.entryBuffer.connect("deleted-text", self.entry_changed) self.entryBuffer.connect("inserted-text", self.entry_changed) dispatcher.connect(self.expr_changed,"expr_changed", sender=self.subexpr) dispatcher.connect(lambda exc: self.error.set_text(str(exc)), "expr_error",sender=self.subexpr,weak=0) def expr_changed(self): e = str(self.subexpr.expr) if e != self.entryBuffer.get_text(): self.entryBuffer.set_text(e, len(e)) def entry_changed(self, *args): self.subexpr.expr = self.entryBuffer.get_text() class Subtermview(object): """ has .label and .exprView widgets for you to put in a table """ def __init__(self, graph, st): self.subterm = st self.label = gtk.Label("sub %s" % self.subterm.submaster.name) sev = Subexprview(self.subterm.subexpr) self.exprView = sev.box def add_one_subterm(graph, subUri, curveset, subterms, master, expr=None, show=False): subname = graph.label(subUri) print "%s's label is %s" % (subUri, subname) if not subname: # fake sub, like for a chase st = graph.subjects(L9['sub'], subUri).next() subname = graph.label(st) print "using parent subterm's name instead. parent %r, name %r" % (st, subname) assert subname, "%s has no name" % subUri if expr is None: expr = '%s(t)' % subname term = Subterm(Submaster.Submaster(graph=graph, name=subname, sub=subUri), Subexpr(curveset, expr)) subterms.append(term) stv = Subtermview(graph, term) y = master.get_property('n-rows') master.resize(y + 1, columns=2) master.attach(stv.label, 0, 1, y, y + 1, xoptions=0, yoptions=0) master.attach(stv.exprView, 1, 2, y, y + 1, yoptions=0) if show: master.show_all() return term