23 |
|
|
24 |
dbg = 0 |
dbg = 0 |
25 |
|
|
26 |
|
w.setCursor("wait") |
27 |
|
vob.putil.demo.usingNormalBindings = 1 |
28 |
|
|
29 |
# Now, before reading the xu stuff, render something |
# Now, before reading the xu stuff, render something |
30 |
# to try to prevent NV driver |
# to try to prevent NV driver |
32 |
# Might be that it only reserves screen memory when starting to render |
# Might be that it only reserves screen memory when starting to render |
33 |
# and if we reserve it all for textures, ... splat ... |
# and if we reserve it all for textures, ... splat ... |
34 |
vs = w.createVobScene() |
vs = w.createVobScene() |
35 |
vs.put(background((.4, .2, .1))) |
vs.put(background((.5, .5, .5))) |
36 |
w.renderStill(vs, 0) |
w.renderStill(vs, 0) |
37 |
|
|
38 |
|
|
67 |
noteHome = Nodes.get(ppAct.newNote(paperHome, 0, 0, 'HOME')) |
noteHome = Nodes.get(ppAct.newNote(paperHome, 0, 0, 'HOME')) |
68 |
ppAct.assocNotes(noteHome, 1, noteA1) |
ppAct.assocNotes(noteHome, 1, noteA1) |
69 |
|
|
70 |
|
textstyle = vob.GraphicsAPI.getInstance().getTextStyle("sans", 0, 24) |
71 |
nodeview = ff.view.TextNodeView(fen.txtfunc, |
nodeview = ff.view.TextNodeView(fen.txtfunc, textstyle, 1) |
|
vob.GraphicsAPI.getInstance().getTextStyle("sans", 0, 24), |
|
|
1) |
|
72 |
nodeview.setHasNoContext() |
nodeview.setHasNoContext() |
73 |
mindView = ff.view.lava.mindMapView2D.MindMapView2D(fen, nodeview) |
mindView = ff.view.lava.mindMapView2D.MindMapView2D(fen, nodeview) |
74 |
|
|
80 |
self.main = None # MainNode2D |
self.main = None # MainNode2D |
81 |
self.fastMouseChg = 0 # callback from abstractmainnode2d when called mouse |
self.fastMouseChg = 0 # callback from abstractmainnode2d when called mouse |
82 |
self._accursed = None |
self._accursed = None |
83 |
|
self.bgcolor = (.36, .74, 1.0) |
84 |
self.offset = 0 |
self.offset = 0 |
85 |
|
self.scale = 1 |
86 |
|
|
87 |
def nextRmb(self): |
def nextRmb(self): |
88 |
rmb = self.rmb_switch |
rmb = self.rmb_switch |
89 |
rmb.append(rmb.pop(0)) |
rmb.append(rmb.pop(0)) |
90 |
rmb = rmb[0] |
rmb = rmb[0] |
91 |
if rmb == 'go': w.setCursor('default') |
if rmb == 'go': self.bgcolor = (.36, .74, 1.0); w.setCursor('default') |
92 |
elif rmb == 'link': w.setCursor('hand') |
elif rmb == 'link': self.bgcolor = (.4, .8, .4); w.setCursor('hand') |
93 |
elif rmb == 'unlink': w.setCursor('crosshair') |
elif rmb == 'unlink': self.bgcolor = (1.0, .5, .5); w.setCursor('crosshair') |
94 |
else: raise 'no good cursor!?' |
else: raise 'no good cursor!?' |
95 |
|
|
96 |
|
def drawCursor(self, vs, node, cs): |
97 |
|
xy = jarray.zeros(2, 'f') |
98 |
|
nodeview.getXY(fen.graph, context.getAccursed(), context.offset, xy) |
99 |
|
cs = vs.orthoCS(cs, "CURSOR", 0, xy[0]*self.scale, xy[1]*self.scale, |
100 |
|
0, -textstyle.getHeight(self.scale)) |
101 |
|
vs.put(vob.vobs.LineVob(0,0,0,1, java.awt.Color.white), cs) |
102 |
|
|
103 |
def insertText(self, text): |
def insertText(self, text): |
104 |
if self._accursed == None: |
if self._accursed == None: |
105 |
self.setAccursed(ff.util.RDFUtil.N(fen.graph, MINDSTRUCT.Data)) |
self.setAccursed(ff.util.RDFUtil.N(fen.graph, MINDSTRUCT.Data)) |
124 |
else: self.setAccursed(node) |
else: self.setAccursed(node) |
125 |
if dbg: p('offs:', self.offset, l) |
if dbg: p('offs:', self.offset, l) |
126 |
|
|
127 |
|
def isLinked(self, obj): |
128 |
|
iter = fen.graph.findN_11X_Iter(obj, STRUCTLINK.linkedTo) |
129 |
|
if iter.hasNext(): return 1 |
130 |
|
iter = fen.graph.findN_X11_Iter(STRUCTLINK.linkedTo, obj) |
131 |
|
if iter.hasNext(): return 1 |
132 |
|
return 0 |
133 |
|
|
134 |
def setAccursed(self, node): |
def setAccursed(self, node): |
135 |
self._accursed = node |
self._accursed = node |
136 |
if self._accursed != None: |
if self._accursed != None: |
178 |
|
|
179 |
rmb = context.rmb_switch[0] |
rmb = context.rmb_switch[0] |
180 |
if rmb == 'go': |
if rmb == 'go': |
181 |
|
self.context.setAccursed(node) |
182 |
|
|
183 |
|
# set cursor, transitions between zoomed and normal should be accounted |
184 |
|
cs = vs.getCSAt(0, x,y, None) |
185 |
|
into = jarray.zeros(3, 'f') |
186 |
|
vs.coords.transformPoints3(cs, [0,0,0], into) |
187 |
|
|
188 |
if node == self.context.main.getPlane(): |
if node == self.context.main.getPlane(): |
189 |
pass |
self.context.scale = self.context.main.getFocus().getZoom() |
190 |
|
self.context.offset = nodeview.getPos(fen.graph, context.getAccursed(), |
191 |
|
(x-into[0])/self.context.scale, |
192 |
|
(y-into[1])/self.context.scale) |
193 |
elif ff.util.RDFUtil.isLinked(fen.graph, node): |
elif ff.util.RDFUtil.isLinked(fen.graph, node): |
194 |
|
self.context.offset = nodeview.getPos(fen.graph, context.getAccursed(), |
195 |
|
(x-into[0])/self.context.scale, |
196 |
|
(y-into[1])/self.context.scale) |
197 |
|
self.context.scale = 1 |
198 |
self.context.main.setNewPlane(node, 0,0,1) |
self.context.main.setNewPlane(node, 0,0,1) |
199 |
self.context.setAccursed(node) |
else: |
200 |
|
self.context.scale = 1 |
201 |
|
self.context.offset = nodeview.getPos(fen.graph, context.getAccursed(), |
202 |
|
(x-into[0])/self.context.scale, |
203 |
|
(y-into[1])/self.context.scale) |
204 |
|
|
205 |
elif rmb == 'link': |
elif rmb == 'link': |
206 |
if node == self.context.main.getPlane(): |
if node == self.context.main.getPlane(): |
207 |
pass |
pass |
225 |
self.context.main.changeZoom(x) |
self.context.main.changeZoom(x) |
226 |
self.context.main.chgFast(self.context.oldVS, -1) |
self.context.main.chgFast(self.context.oldVS, -1) |
227 |
self.context.fastMouseChg = 1 |
self.context.fastMouseChg = 1 |
228 |
|
if self.context.getAccursed() and \ |
229 |
|
ff.util.RDFUtil.isLinked(fen.graph, self.context.getAccursed()): |
230 |
|
self.context.scale = self.context.main.getFocus().getZoom() |
231 |
|
|
232 |
class PanMover(Action, vob.mouse.RelativeAdapter, vob.mouse.MousePressListener): |
class PanMover(Action, vob.mouse.RelativeAdapter, vob.mouse.MousePressListener): |
233 |
def pressed(self, x,y): |
def pressed(self, x,y): |
257 |
self.main.init(fen, nodeview) |
self.main.init(fen, nodeview) |
258 |
context.main = self.main |
context.main = self.main |
259 |
self.main.context = context |
self.main.context = context |
260 |
|
mindView.context = context |
261 |
|
w.setCursor('default') |
262 |
|
|
263 |
def scene(self, vs): |
def scene(self, vs): |
264 |
context.oldVS = vs |
context.oldVS = vs |
265 |
vs.put(background((.36, .74, 1.0))) |
vs.put(background(context.bgcolor)) |
266 |
cs = vs.orthoBoxCS(0, "foo",0, 50,50, 1,1, 750,650) |
cs = vs.orthoBoxCS(0, "foo",0, 50,50, 1,1, 750,650) |
267 |
self.main.renderMain(vs, cs) |
self.main.renderMain(vs, cs) |
268 |
|
|
282 |
context.deleteText() |
context.deleteText() |
283 |
elif key == "Ctrl-S": |
elif key == "Ctrl-S": |
284 |
p("going to save"); |
p("going to save"); |
|
|
|
285 |
m = ff.swamp.Graphs.toModel(fen.graph); |
m = ff.swamp.Graphs.toModel(fen.graph); |
286 |
m.write(java.io.FileWriter(FILE)); |
m.write(java.io.FileWriter(FILE)); |
287 |
elif key == "Ctrl-Q": |
elif key == "Ctrl-Q": |
288 |
p("going to save"); |
p("going to save"); |
|
|
|
289 |
m = ff.swamp.Graphs.toModel(fen.graph); |
m = ff.swamp.Graphs.toModel(fen.graph); |
290 |
m.write(java.io.FileWriter(FILE)); |
m.write(java.io.FileWriter(FILE)); |
|
|
|
291 |
java.lang.System.exit(43) |
java.lang.System.exit(43) |
292 |
elif key == "Ctrl-R": |
elif key == "Ctrl-R": |
293 |
vob.putil.demo.loadScenes() |
vob.putil.demo.loadScenes() |
294 |
elif key == "Return": |
elif key == "Return": |
295 |
context.insertText("\n") |
context.insertText("\n") |
296 |
|
text = alphContent.getText(fen.graph, context.getAccursed()) |
297 |
|
# small hack to show the new line on NodeView, without content it would be shrank |
298 |
|
if len(text) == context.offset: |
299 |
|
context.insertText(" ") |
300 |
|
context.offset -= 1 |
301 |
|
elif key == 'Up': |
302 |
|
xy = jarray.zeros(2, 'f') |
303 |
|
nodeview.getXY(fen.graph, context.getAccursed(), |
304 |
|
context.offset, xy) |
305 |
|
xy[1] -= textstyle.getHeight(context.scale) * 1.5 |
306 |
|
context.offset = nodeview.getPos(fen.graph, context.getAccursed(), xy[0], xy[1]) |
307 |
|
elif key == 'Down': |
308 |
|
xy = jarray.zeros(2, 'f') |
309 |
|
nodeview.getXY(fen.graph, context.getAccursed(), |
310 |
|
context.offset, xy) |
311 |
|
xy[1] += textstyle.getHeight(context.scale) * 0.5 |
312 |
|
context.offset = nodeview.getPos(fen.graph, context.getAccursed(), xy[0], xy[1]) |
313 |
|
elif key == 'Left': |
314 |
|
if context.offset > 0: context.offset -= 1 |
315 |
|
elif key == 'Right': |
316 |
|
text = alphContent.getText(fen.graph, context.getAccursed()) |
317 |
|
if context.offset < len(text): |
318 |
|
context.offset += 1 |
319 |
|
if key == "Ctrl-HomE": |
320 |
|
context.offset = 0 |
321 |
|
if key == "Ctrl-EnD": |
322 |
|
text = alphContent.getText(fen.graph, context.getAccursed()) |
323 |
|
context.offset = len(text) |
324 |
|
if key == "Home" or key == "Ctrl-A": |
325 |
|
xy = jarray.zeros(2, 'f') |
326 |
|
nodeview.getXY(fen.graph, context.getAccursed(), |
327 |
|
context.offset, xy) |
328 |
|
xy[0] = 0 |
329 |
|
# we must return a half of the line height back to stay on the same line |
330 |
|
xy[1] -= textstyle.getHeight(context.scale) * 0.5 # XXX scaling! |
331 |
|
context.offset = nodeview.getPos(fen.graph, context.getAccursed(), xy[0], xy[1]) |
332 |
|
if key == "End" or key == "Ctrl-E": |
333 |
|
# the end of line is reached by going to home of the line below |
334 |
|
# and returning a single character back if not the end of text was reached |
335 |
|
xy = jarray.zeros(2, 'f') |
336 |
|
nodeview.getXY(fen.graph, context.getAccursed(), |
337 |
|
context.offset, xy) |
338 |
|
xy[0] = 0 |
339 |
|
xy[1] += textstyle.getHeight(context.scale) * 0.5 # XXX scaling! |
340 |
|
context.offset = nodeview.getPos(fen.graph, context.getAccursed(), xy[0], xy[1]) |
341 |
|
text = alphContent.getText(fen.graph, context.getAccursed()) |
342 |
|
if context.offset < len(text): context.offset -= 1 |
343 |
elif len(key) == 1: |
elif len(key) == 1: |
344 |
context.insertText(key) |
context.insertText(key) |
|
|
|
345 |
|
|
346 |
|
if dbg: |
347 |
|
text = alphContent.getText(fen.graph, context.getAccursed()) |
348 |
|
print text[0:context.offset], '[cursor]' |
349 |
|
|
350 |
vob.AbstractUpdateManager.chg() |
vob.AbstractUpdateManager.chg() |
351 |
|
|
352 |
|
|
353 |
currentScene = VeryStupidBuoyManager() |
currentScene = VeryStupidBuoyManager() |
354 |
|
vob.putil.demo.usingNormalBindings = 0 |