1 |
# (c): Matti J. Katila |
# (c): Matti J. Katila, Asko Soukka |
2 |
|
|
3 |
|
import jarray |
4 |
|
|
|
#import vob |
|
5 |
import org.fenfire as ff |
import org.fenfire as ff |
6 |
import org.nongnu.alph as alph |
import org.nongnu.alph as alph |
7 |
import org.nongnu.storm as storm |
import org.nongnu.storm as storm |
9 |
from org.fenfire.vocab import RDF |
from org.fenfire.vocab import RDF |
10 |
from org.fenfire.util import Pair |
from org.fenfire.util import Pair |
11 |
|
|
|
import jarray |
|
|
|
|
12 |
# save and load |
# save and load |
13 |
from com.hp.hpl.mesa.rdf.jena.mem import ModelMem |
from com.hp.hpl.mesa.rdf.jena.mem import ModelMem |
14 |
import os.path |
import os.path |
20 |
pool = storm.impl.DirPool(java.io.File(DIR), java.util.HashSet()) |
pool = storm.impl.DirPool(java.io.File(DIR), java.util.HashSet()) |
21 |
myalph = alph.impl.StormAlph(pool) |
myalph = alph.impl.StormAlph(pool) |
22 |
|
|
|
vob.putil.demo.usingNormalBindings = 0 |
|
|
|
|
|
# manual system to toggle the load point ;) |
|
|
# first time put 0 in here, |
|
|
# then Qtrl-Q for quit and save |
|
|
# then put load_toggle to 1 and rerun. |
|
23 |
do_load_graph = 0 |
do_load_graph = 0 |
|
|
|
24 |
# automatic system for previous |
# automatic system for previous |
25 |
if os.path.isfile(FILE): |
if os.path.isfile(FILE): |
26 |
print 'Loading the RDF graph from the file %s', FILE |
print 'Loading the RDF graph from the file %s' % (FILE) |
27 |
do_load_graph = 1 |
do_load_graph = 1 |
28 |
else: |
else: |
29 |
print 'Creating a new RDF graph' |
print 'Creating a new RDF graph' |
42 |
alphContent = ff.util.AlphContent(fen) |
alphContent = ff.util.AlphContent(fen) |
43 |
|
|
44 |
vs = w.createVobScene() |
vs = w.createVobScene() |
45 |
vs.put(background((1, 1, 1))) |
vs.put(background((.9, .9, .9))) |
46 |
|
|
47 |
textstyle = vob.GraphicsAPI.getInstance().getTextStyle("sans", 0, 24) |
textstyle = vob.GraphicsAPI.getInstance().getTextStyle("sans", 0, 24) |
48 |
nodeview = ff.view.TextNodeView(fen.txtfunc, textstyle, 1) |
nodeview = ff.view.TextNodeView(fen.txtfunc, textstyle, 1) |
60 |
def __init__(self): |
def __init__(self): |
61 |
self._acc = None |
self._acc = None |
62 |
self.offset = 0 |
self.offset = 0 |
63 |
|
|
64 |
def insertText(self, text): |
def insertText(self, text): |
65 |
if self._acc == None: |
if self._acc == None: |
66 |
self.setAccursed(ff.util.RDFUtil.N(fen.graph, M.Data)) |
self.setAccursed(ff.util.RDFUtil.N(fen.graph, M.Data)) |
67 |
self.offset = 0 |
self.offset = 0 |
68 |
alphContent.insertText(self._acc, self.offset, text, 1) |
alphContent.insertText(self._acc, self.offset, text, 1) |
69 |
self.offset += len(text) |
self.offset += len(text) |
70 |
|
|
71 |
def deleteText(self): |
def deleteText(self): |
72 |
p('offs:', self.offset) |
if dbg: p('offs:', self.offset) |
73 |
if self._acc == None: return |
if self._acc == None: return |
74 |
|
|
75 |
alphContent.deleteText(self._acc, self.offset-1, self.offset) |
alphContent.deleteText(self._acc, self.offset-1, self.offset) |
77 |
l = len(alphContent.getText(fen.graph, self._acc)) |
l = len(alphContent.getText(fen.graph, self._acc)) |
78 |
if self.offset == 0 and l == 0: |
if self.offset == 0 and l == 0: |
79 |
fen.graph.rm_111(self._acc, RDF.type, M.Data) |
fen.graph.rm_111(self._acc, RDF.type, M.Data) |
80 |
try: |
# try: |
81 |
self.setAaccursed( |
# self.setAaccursed( |
82 |
fen.graph.findN_X11_Iter(RDF.type, M.Data).next()) |
# fen.graph.findN_X11_Iter(RDF.type, M.Data).next()) |
83 |
except: self.setAccursed(None) |
# except: |
84 |
p('offs:', self.offset, l) |
self.setAccursed(None) |
85 |
|
if dbg: p('offs:', self.offset, l) |
86 |
|
|
87 |
def setAccursed(self, node): |
def setAccursed(self, node): |
88 |
self._acc = node |
self._acc = node |
90 |
self.offset = len(alphContent.getText(fen.graph, self._acc)) |
self.offset = len(alphContent.getText(fen.graph, self._acc)) |
91 |
else: |
else: |
92 |
self.offset = 0 |
self.offset = 0 |
93 |
|
|
94 |
def getAccursed(self): |
def getAccursed(self): |
95 |
return self._acc |
return self._acc |
96 |
|
|
97 |
def rmLinkTo(self, obj, with): |
def rmLinkTo(self, obj, with): |
98 |
iter = fen.graph.findN_11X_Iter(obj, M.link) |
iter = fen.graph.findN_11X_Iter(obj, M.link) |
99 |
try: |
try: |
105 |
if obj == iter.next(): |
if obj == iter.next(): |
106 |
fen.graph.rm_111(with, M.link, obj) |
fen.graph.rm_111(with, M.link, obj) |
107 |
except: pass |
except: pass |
108 |
|
|
109 |
def isLinked(self, obj): |
def isLinked(self, obj): |
110 |
iter = fen.graph.findN_11X_Iter(obj, M.link) |
iter = fen.graph.findN_11X_Iter(obj, M.link) |
111 |
if iter.hasNext(): return 1 |
if iter.hasNext(): return 1 |
122 |
if obj == iter.next(): return 1 |
if obj == iter.next(): return 1 |
123 |
return 0 |
return 0 |
124 |
|
|
|
|
|
|
|
|
125 |
class Scene: |
class Scene: |
126 |
def __init__(self): |
def __init__(self): |
127 |
w.setCursor('default') |
w.setCursor('default') |
128 |
self.mm = MindMap() |
self.mm = MindMap() |
129 |
|
if do_load_graph: |
130 |
# init = [ 'elephant', 'carrot', 'mouse', 'line', 'smoke', |
print "Setting accursed node." |
131 |
# 'dog', 'fish', 'wait', 'light', 'smile', 'work to do' ] |
self.center = fen.graph.findN_X1A_Iter(M.link).next() |
132 |
# for i in init: |
else: self.center = None |
|
# self.mm.setAccursed(None) |
|
|
# self.mm.insertText(i) |
|
|
self.center = None |
|
133 |
self.scumm = [ 'go', 'link', 'unlink' ] |
self.scumm = [ 'go', 'link', 'unlink' ] |
134 |
|
|
135 |
def mouse(self, ev): |
def mouse(self, ev): |
136 |
vs = self.vs |
vs = self.vs |
|
|
|
137 |
if ev.getType() == ev.MOUSE_CLICKED: |
if ev.getType() == ev.MOUSE_CLICKED: |
138 |
print |
print |
139 |
if ev.getButton() == 3: #Modifiers() == ev.MOUSE_BUTTON3: |
if ev.getButton() == 3: #Modifiers() == ev.MOUSE_BUTTON3: |
187 |
self.mm.deleteText() |
self.mm.deleteText() |
188 |
if self.mm.getAccursed() == None: |
if self.mm.getAccursed() == None: |
189 |
self.center = None |
self.center = None |
190 |
|
elif key == "Ctrl-S": |
191 |
|
p("going to save"); |
192 |
|
|
193 |
|
m = ff.swamp.Graphs.toModel(fen.graph); |
194 |
|
m.write(java.io.FileWriter(FILE)); |
195 |
elif key == "Ctrl-Q": |
elif key == "Ctrl-Q": |
196 |
p("going to save"); |
p("going to save"); |
197 |
|
|
201 |
java.lang.System.exit(43) |
java.lang.System.exit(43) |
202 |
elif key == "Ctrl-R": |
elif key == "Ctrl-R": |
203 |
vob.putil.demo.loadScenes() |
vob.putil.demo.loadScenes() |
204 |
|
elif key == "Return": |
205 |
|
if self.mm.getAccursed() == None: |
206 |
|
vob.AbstractUpdateManager.setNoAnimation() |
207 |
|
self.mm.insertText("\n") |
208 |
elif len(key) == 1: |
elif len(key) == 1: |
209 |
if self.mm.getAccursed() == None: |
if self.mm.getAccursed() == None: |
210 |
vob.AbstractUpdateManager.setNoAnimation() |
vob.AbstractUpdateManager.setNoAnimation() |
211 |
self.mm.insertText(key) |
self.mm.insertText(key) |
212 |
|
|
|
|
|
|
|
|
213 |
def scene(self, vs): |
def scene(self, vs): |
214 |
self.vs = vs |
self.vs = vs |
215 |
vs.put(background((1, 1, 1))) |
vs.put(background((1, 1, 1))) |
371 |
self.n.get(node).put(with, '1') |
self.n.get(node).put(with, '1') |
372 |
|
|
373 |
currentScene = Scene() |
currentScene = Scene() |
374 |
|
vob.putil.demo.usingNormalBindings = 0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|