d0df704d8a
added python.path vm arg to startup script fixed infinite loop in unwrap() when displaying sequences of sequences git-svn-id: http://google-refine.googlecode.com/svn/trunk@509 7d457c2a-affb-35e4-300a-418c747d4874
63 lines
1.5 KiB
Python
63 lines
1.5 KiB
Python
from java import awt
|
|
from math import *
|
|
from jarray import array
|
|
|
|
class Graph(awt.Canvas):
|
|
def __init__(self):
|
|
self.function = None
|
|
|
|
def paint(self, g):
|
|
if self.function is None:
|
|
return self.error(g)
|
|
|
|
sz = self.size
|
|
xs = range(0, sz.width, 2)
|
|
|
|
xscale = 4*pi/sz.width
|
|
xoffset = -2*pi
|
|
|
|
yscale = -sz.height/2.
|
|
yoffset = sz.height/2.
|
|
|
|
ys = []
|
|
for x in xs:
|
|
x = xscale*x + xoffset
|
|
y = int(yscale*self.function(x)+yoffset)
|
|
ys.append(y)
|
|
g.drawPolyline(array(xs, 'i'), array(ys, 'i'), len(xs))
|
|
|
|
def error(self, g):
|
|
message = "Invalid Expression"
|
|
g.font = awt.Font('Serif', awt.Font.BOLD, 20)
|
|
width = g.fontMetrics.stringWidth(message)
|
|
|
|
x = (self.size.width-width)/2
|
|
y = (self.size.height+g.fontMetrics.height)/2
|
|
g.drawString("Invalid Expression", x, y)
|
|
|
|
def setExpression(self, e):
|
|
try:
|
|
self.function = eval('lambda x: '+e)
|
|
except:
|
|
self.function = None
|
|
self.repaint()
|
|
|
|
|
|
if __name__ == '__main__':
|
|
def enter(e):
|
|
graph.setExpression(expression.text)
|
|
expression.caretPosition=0
|
|
expression.selectAll()
|
|
|
|
p = awt.Panel(layout=awt.BorderLayout())
|
|
graph = Graph()
|
|
p.add(graph, 'Center')
|
|
|
|
expression = awt.TextField(text='(sin(3*x)+cos(x))/2', actionPerformed=enter)
|
|
p.add(expression, 'South')
|
|
|
|
import pawt
|
|
pawt.test(p, size=(300,300))
|
|
|
|
enter(None)
|