[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Gzz-commits] fenfire/org/fenfire demo/actions.py demo/buoyoi...
From: |
Matti Katila |
Subject: |
[Gzz-commits] fenfire/org/fenfire demo/actions.py demo/buoyoi... |
Date: |
Tue, 01 Jul 2003 12:33:34 -0400 |
CVSROOT: /cvsroot/fenfire
Module name: fenfire
Branch:
Changes by: Matti Katila <address@hidden> 03/07/01 12:33:34
Modified files:
org/fenfire/demo: actions.py buoyoing.py fenpdfcontext.py
mind.py
org/fenfire/util: ControlBinding.java
org/fenfire/view: AreaSelectingView2D.java TextNodeView.java
TextNodeView.test
org/fenfire/view/buoy: AbstractMainNode2D.java
FisheyeMainNode2D.java MainNode2D.java
org/fenfire/view/lava: ContextNodeView.java FenPDFContext.java
org/fenfire/vocab/lava: MINDSTRUCT.java
Log message:
more selecting
CVSWeb URLs:
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/demo/actions.py.diff?tr1=1.6&tr2=1.7&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/demo/buoyoing.py.diff?tr1=1.86&tr2=1.87&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/demo/fenpdfcontext.py.diff?tr1=1.4&tr2=1.5&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/demo/mind.py.diff?tr1=1.1&tr2=1.2&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/util/ControlBinding.java.diff?tr1=1.9&tr2=1.10&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/view/AreaSelectingView2D.java.diff?tr1=1.5&tr2=1.6&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/view/TextNodeView.java.diff?tr1=1.8&tr2=1.9&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/view/TextNodeView.test.diff?tr1=1.5&tr2=1.6&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/view/buoy/AbstractMainNode2D.java.diff?tr1=1.28&tr2=1.29&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/view/buoy/FisheyeMainNode2D.java.diff?tr1=1.12&tr2=1.13&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/view/buoy/MainNode2D.java.diff?tr1=1.30&tr2=1.31&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/view/lava/ContextNodeView.java.diff?tr1=1.2&tr2=1.3&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/view/lava/FenPDFContext.java.diff?tr1=1.34&tr2=1.35&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/vocab/lava/MINDSTRUCT.java.diff?tr1=1.1&tr2=1.2&r1=text&r2=text
Patches:
Index: fenfire/org/fenfire/demo/actions.py
diff -u fenfire/org/fenfire/demo/actions.py:1.6
fenfire/org/fenfire/demo/actions.py:1.7
--- fenfire/org/fenfire/demo/actions.py:1.6 Fri Jun 27 10:00:33 2003
+++ fenfire/org/fenfire/demo/actions.py Tue Jul 1 12:33:33 2003
@@ -35,10 +35,7 @@
######## Actions to control pan of main nodes etc.
-class MovePanFast(AbstractContextController):
- def __init__(self, context, select):
- AbstractContextController.__init__(self, context)
- self.select = select
+class MovePanFast(ff.util.ControlBinding.AbstractController):
def isChangeable(self): return 1
def change(self, x, y):
if dbg: p('move pan fast')
@@ -47,14 +44,6 @@
f.setPan( fX-x/f.zoom, fY-y/f.zoom)
self.obj.chgFast(self.oldVS)
- if dbg: self.context.states.p()
- if self.context.states.hasCtrl():
- xy = self.context.states.getPressPans()
- self.obj.setSelection(xy[0], xy[1], f.getPanX(), f.getPanY())
- else: self.obj.setSelection(0,0,0,0)
-
-
-
class MovePanSlow(ff.util.ControlBinding.AbstractController):
def isChangeable(self): return 0
def controlPoint(self, x, y, scale):
@@ -102,45 +91,69 @@
oy = ff.util.RDFUtil.getInt(g, node, CANVAS2D.y)
self.obj[3].moveNote(node, int(ox+x/f.zoom), int(oy+y/f.zoom) )
+####### Actions to control selection
+
+class SelectArea(AbstractContextController):
+ def isChangeable(self): return 0
+ def tryFast(self): return 0
+ def controlPoint(self, x, y, scale):
+ if dbg: self.context.states.p()
+ xy = self.obj.getXYHit(self.oldVS, x,y)
+ oldXY = self.context.states.getPressPans()
+ self.context.selection.setArea(oldXY[0], oldXY[1], xy[0], xy[1])
+
-####### Dispatcher for plane events
+####### Dispatcher for plane events etc.
-class PlaneDispatcher(ff.util.ControlBinding):
- def __init__(self, main, plane, graph, pp):
+class ControlsDispatcher(ff.util.ControlBinding):
+ def __init__(self, main, plane, withCtrl, graph, pp):
self.m = main
self.p = plane
- self.all = [ main, plane ]
+ self.c = withCtrl
+ self.all = [ main, plane, withCtrl ]
self.last = main
+ self.args = main
self.graph = graph
self.pp = pp
def handleEvent(self, main, ev, vs):
-
if ev.getID() == ev.MOUSE_DRAGGED:
if dbg: p('drag')
return self.last.handleEvent(self.args, ev, vs)
elif ev.getID() == ev.MOUSE_PRESSED:
- xy = main.getXYHitOnPlane(vs, ev.getX(), ev.getY())
+ xy = main.getXYHit(vs, ev.getX(), ev.getY())
self.context.states.setPressPans(xy[0], xy[1])
+ if dbg: self.context.states.p()
if dbg: p('event', ev)
obj = main.getNodeOnPlane(vs, ev.getX(), ev.getY())
if dbg: p(obj)
- if ev.getID() == ev.MOUSE_CLICKED:
- if obj != None and self.p.hasBinding(ev):
- p('object on plane click')
- self.last = self.p
- self.args = [main, obj, self.graph, self.pp]
- return self.p.handleEvent(self.args, ev, vs)
- # Drag if something under mouse pointer is accursed!
- if obj != None and self.p.hasBinding(ev) and
self.context.isAccursed(obj):
- self.last = self.p
- self.args = [main, obj, self.graph, self.pp]
- else:
- p('something else')
- self.last = self.m
+ self.context.selection.setCurrentPlane(main.getPlane())
+
+ # Special case if user has pressed 'Ctrl'
+ if self.context.states.hasCtrl():
+ self.last = self.c
self.args = main
+ else:
+ if ev.getID() == ev.MOUSE_CLICKED:
+ if obj != None and self.p.hasBinding(ev):
+ self.last = self.p
+ self.args = [main, obj, self.graph, self.pp]
+ return self.p.handleEvent(self.args, ev, vs)
+
+ # Drag if something under mouse pointer is accursed!
+ if obj != None and self.p.hasBinding(ev) and
self.context.isAccursed(obj):
+ self.last = self.p
+ self.args = [main, obj, self.graph, self.pp]
+ else:
+ self.last = self.m
+ self.args = main
+
+ if 0 and ev.getID() != ev.MOUSE_PRESSED and not
self.last.hasPressState():
+ self.removePressState()
+ self.last.setPressStateByForce(ev)
+ raise 'set press state by force - should not happen', ev
return self.last.handleEvent(self.args, ev, vs)
def removePressState(self):
for c in self.all:
Index: fenfire/org/fenfire/demo/buoyoing.py
diff -u fenfire/org/fenfire/demo/buoyoing.py:1.86
fenfire/org/fenfire/demo/buoyoing.py:1.87
--- fenfire/org/fenfire/demo/buoyoing.py:1.86 Fri Jun 27 10:00:34 2003
+++ fenfire/org/fenfire/demo/buoyoing.py Tue Jul 1 12:33:33 2003
@@ -54,6 +54,7 @@
import vob
w.setCursor('wait')
+
vob.putil.demo.usingNormalBindings = 0
vob.buoy.buoymanager.replaceNewScene = vob.putil.demo.replacingScene
@@ -112,26 +113,29 @@
textstyle = vob.GraphicsAPI.getInstance().getTextStyle("sans", 0, 24)
textnodeview = ff.view.TextNodeView(fen.txtfunc, textstyle, 1)
+#textnodeview = ff.view.lava.RSTText(fen.txtfunc, textstyle, 1)
pagenodeview = ff.view.PageNodeView(fen.txtfunc)
dispnodeview = ff.view.DispatchingNodeView(fen.txtfunc,
textnodeview,
pagenodeview)
-cached = ff.swamp.CachedNodeFunction(50, fen.constgraph, dispnodeview)
-nodeview = ff.view.lava.ContextNodeView(cached, dispnodeview)
+#cached = ff.swamp.CachedNodeFunction(50, fen.constgraph, dispnodeview)
+nodeview = ff.view.lava.ContextNodeView(dispnodeview, fen.constgraph, 150)
view = ff.view.CanvasView2D(fen, nodeview)
view.cull = 1
paperview = ff.view.PaperView2D(vob.putil.demowindow.w, view)
-irregu = ff.view.IrregularViewportView2D(paperview)
+selection = ff.view.AreaSelectingView2D(paperview)
+irregu = ff.view.IrregularViewportView2D(selection)
ff.view.buoy.NodeType2D.effigy = 0
ff.view.buoy.NodeType2DFull.effigy = 0
main_ctrl = ff.util.ControlBinding()
node_ctrl = ff.util.ControlBinding()
-ctrl = PlaneDispatcher(main_ctrl, node_ctrl, fen.graph, ppAct)
+ctrlkey_ctrl = ff.util.ControlBinding()
+ctrl = ControlsDispatcher(main_ctrl, node_ctrl, ctrlkey_ctrl, fen.graph, ppAct)
#context = ff.view.lava.FenPDFContext(fen, ppAct, nodeview, ctrl)
-context = Context(w, fen, ppAct, nodeview, ctrl)
+context = Context(w, fen, ppAct, nodeview, ctrl, selection)
context.initMainNodes(2)
nodeview.setContext(context)
@@ -147,20 +151,18 @@
# Default controls
-selectview = None
-
ctrl.setContext(context)
-main_ctrl.add(MovePanFast(context, selectview), -1, ctrl.WHEEL, 7,0,
ctrl.VERTICAL)
-main_ctrl.add(MovePanFast(context, selectview), 1, ctrl.DRAG, 1, 0, ctrl.ALL)
+main_ctrl.add(MovePanFast(), -1, ctrl.WHEEL, 7,0, ctrl.VERTICAL)
+main_ctrl.add(MovePanFast(), 1, ctrl.DRAG, 1, 0, ctrl.ALL)
main_ctrl.add(MovePanSlow(), 1, ctrl.CLICK)
main_ctrl.add(ZoomPan(), 3, ctrl.DRAG, 1, 0, ctrl.VERTICAL)
main_ctrl.add(PanSize(), 3, ctrl.DRAG, 1, 0, ctrl.HORIZONTAL)
main_ctrl.add(UnSelectNodeOnPlane(context), 3, ctrl.CLICK)
-node_ctrl.add(SelectNodeOnPlane(context), 3, node_ctrl.CLICK)
-node_ctrl.add(MoveNodeOnPlane(context), 1, node_ctrl.DRAG)
-
+node_ctrl.add(SelectNodeOnPlane(context), 3, ctrl.CLICK)
+node_ctrl.add(MoveNodeOnPlane(context), 1, ctrl.DRAG)
+ctrlkey_ctrl.add(SelectArea(context), 1, ctrl.DRAG)
@@ -177,8 +179,6 @@
mainNode2 = ff.view.buoy.MainNode2D(planeHome, irregu, ctrl)
#mainNode = ff.view.buoy.MainNode2D(plane, paperview, ctrl)
-#connector = ff.view.buoy.PPConnector(fen, paperviewonly)
-#connector.hackForTesting = 1
ppconnector = ff.view.buoy.PPConnector(fen, irregu,
ff.view.buoy.MainNode2D.MainNode2DFactory(1, ctrl),
@@ -189,19 +189,22 @@
# ff.view.PaperView2D(vob.putil.demowindow.w,
# ff.view.PageScrollView2D()))
pagescroll2d = ff.view.PageScrollView2D()
+
+
tconnector.normalNodeNodeType = ff.view.buoy.NodeType2D(irregu,
ff.view.buoy.MainNode2D.MainNode2DFactory(1, ctrl))
tconnector.pageImageScrollNodeType = ff.view.buoy.NodeType2DFull(pagescroll2d,
ff.view.buoy.FisheyeMainNode2D.FisheyeMainNode2DFactory(ctrl))
class DoubleGeometer:
- def __init__(self, mgr, context):
+ def __init__(self, mgr, context, nodeview):
self.split = .5
self.height = 100
self.width = 100
self.mgr = mgr
self.context = context
self.context.setMngr(mgr)
+ self.nv = nodeview
def _doset(self, vs):
w,h = vs.size.width, vs.size.height
@@ -290,6 +293,7 @@
if ev.getID() == ev.MOUSE_RELEASED:
ctrl.removePressState()
+ self.context.states.clean()
w.setCursor('default')
return 1
#return 0
@@ -301,7 +305,7 @@
planes = []
for single in self.mgr.singles:
planes.append(single.getMainNode())
- newPlanes = self.context.doMouse(ev, oldvs, planes)
+ newPlanes = self.context.doMouse(ev, oldvs, planes, self.nv)
if newPlanes != None and planes != newPlanes:
for i in range(0, len(newPlanes)):
self.mgr.singles[i] = vob.buoy.buoymanager.SingleFocusManager(
@@ -362,7 +366,7 @@
def __init__(self):
vob.buoy.buoymanager.MultiBuoyManager.__init__(self,
[mainNode, mainNode2], [ppconnector, tconnector],
- DoubleGeometer(self, context),
+ DoubleGeometer(self, context, nodeview),
context=context)
w.setCursor('default')
Index: fenfire/org/fenfire/demo/fenpdfcontext.py
diff -u fenfire/org/fenfire/demo/fenpdfcontext.py:1.4
fenfire/org/fenfire/demo/fenpdfcontext.py:1.5
--- fenfire/org/fenfire/demo/fenpdfcontext.py:1.4 Fri Jun 27 10:00:34 2003
+++ fenfire/org/fenfire/demo/fenpdfcontext.py Tue Jul 1 12:33:33 2003
@@ -52,7 +52,7 @@
class ContextStates:
def __init__(self):
- self.ctrl = 0
+ self.clean()
def chgCtrl(self):
self.ctrl = not self.ctrl
if self.ctrl:
@@ -67,15 +67,19 @@
return [ self.pressPanX, self.pressPanY ]
def p(self):
p('Pans', self.pressPanX, self.pressPanY)
+ def clean(self):
+ self.ctrl = 0
+
class Context(ff.view.lava.FenPDFContext, SuperCaller):
- def __init__(self, win, fen, pp, nv, ctrl):
+ def __init__(self, win, fen, pp, nv, ctrl, selection):
self.super = self.superproxy(ff.view.lava.FenPDFContext)
ff.view.lava.FenPDFContext.__init__(self, fen, pp, nv, ctrl)
self.states = ContextStates()
self.keys = KeyHandler(self.states)
global w
w = win
+ self.selection = selection
def setMngr(self, mngr):
self.mgr = mngr
def key(self, key):
Index: fenfire/org/fenfire/demo/mind.py
diff -u fenfire/org/fenfire/demo/mind.py:1.1
fenfire/org/fenfire/demo/mind.py:1.2
--- fenfire/org/fenfire/demo/mind.py:1.1 Wed Jun 25 15:40:27 2003
+++ fenfire/org/fenfire/demo/mind.py Tue Jul 1 12:33:33 2003
@@ -214,7 +214,7 @@
if len(links) == 0: return
- angle = 360.0/len(links)
+ angle = 2 * Math.PI/len(links)
xx,yy = int(x), int(y)
for i in range(len(links)):
li = links[i]
@@ -250,8 +250,8 @@
return [ vs.orthoBoxCS(0, key, 0,x-bx/2,y-by/2, 1,1, bx,by), x, y]
def getXY(self, x0, y0, angle, deepnes):
- angle += 0.5 * Math.PI
- angle %= 2.0 * Math.PI
+# angle += 0.5 * Math.PI
+# angle %= 2.0 * Math.PI
wi, h = vs.size.width, vs.size.height
d = 1./(4+deepnes)
r = wi/2 * d
Index: fenfire/org/fenfire/util/ControlBinding.java
diff -u fenfire/org/fenfire/util/ControlBinding.java:1.9
fenfire/org/fenfire/util/ControlBinding.java:1.10
--- fenfire/org/fenfire/util/ControlBinding.java:1.9 Wed Jun 25 20:29:25 2003
+++ fenfire/org/fenfire/util/ControlBinding.java Tue Jul 1 12:33:33 2003
@@ -67,6 +67,10 @@
}
public boolean hasPressState() { return pressState!=null; }
+ public void setPressStateByForce(MouseEvent event) {
+ pressState = event;
+ }
+
// keeping track of drags for specific object
private Object accursedObj = null;
@@ -119,7 +123,7 @@
return FAST;
} else {
c.controlPoint(x,y, scale);
- return ANIMATE;
+ return c.tryFast(); //ANIMATE;
}
}
}
@@ -136,7 +140,7 @@
if (c.isChangeable())
throw new Error("Clicks can't be used to measure of
change.");
else c.controlPoint(x, y, scale);
- return ANIMATE;
+ return c.tryFast(); //ANIMATE;
}
}
}
@@ -175,7 +179,7 @@
ret = FAST;
}
else c.controlPoint(x, y, scale);
- ret = ANIMATE;
+ ret = c.tryFast(); //ANIMATE;
}
}
lastEvent = event;
@@ -275,6 +279,7 @@
public interface Controller {
boolean isChangeable();
+ boolean tryFast();
void change(float x, float y);
void controlPoint(float x, float y, float scale);
void set(Object obj, VobScene oldVS);
@@ -283,9 +288,14 @@
public static abstract class AbstractController implements Controller {
public AbstractController() {}
public abstract boolean isChangeable();
+ public boolean tryFast() { return isChangeable(); }
- public void change(float x, float y) { }
- public void controlPoint(float x, float y, float scale) {}
+ public void change(float x, float y) {
+ if (dbg) p("change");
+ }
+ public void controlPoint(float x, float y, float scale) {
+ if (dbg) p("controlPoint");
+ }
// need to be public to be accessible from Python...
public Object obj = null;
Index: fenfire/org/fenfire/view/AreaSelectingView2D.java
diff -u fenfire/org/fenfire/view/AreaSelectingView2D.java:1.5
fenfire/org/fenfire/view/AreaSelectingView2D.java:1.6
--- fenfire/org/fenfire/view/AreaSelectingView2D.java:1.5 Fri Jun 27
10:00:34 2003
+++ fenfire/org/fenfire/view/AreaSelectingView2D.java Tue Jul 1 12:33:33 2003
@@ -19,6 +19,10 @@
this.x0 = x0; this.y0 = y0;
this.x1 = x1; this.y1 = y1;
}
+
+ private Object current = null;
+ public void setCurrentPlane(Object obj) { current = obj; }
+
private Paper paper;
private GLRen.FixedPaperQuad pq;
@@ -41,10 +45,12 @@
child.render(vs, plane, matchingParent,
box2screen, box2paper);
+ if (current != plane) return;
+
int paper2box = vs.invertCS(box2paper, "areaselectview_INv");
int paper2screen = vs.concatCS(box2screen, "areaselectview_conc",
paper2box);
- int cs = vs.orthoCS(paper2screen, "selection", 0, x0,y0,x1,y1);
+ int cs = vs.orthoCS(paper2screen, "selection", 0, x0,y0,x1,y1);
vs.put(pq, cs);
}
Index: fenfire/org/fenfire/view/TextNodeView.java
diff -u fenfire/org/fenfire/view/TextNodeView.java:1.8
fenfire/org/fenfire/view/TextNodeView.java:1.9
--- fenfire/org/fenfire/view/TextNodeView.java:1.8 Mon Jun 16 07:55:04 2003
+++ fenfire/org/fenfire/view/TextNodeView.java Tue Jul 1 12:33:33 2003
@@ -39,7 +39,7 @@
* currently, places text as a single very long line.
*/
public class TextNodeView extends TextHandler implements NodeFunction {
-public static final String rcsid = "$Id: TextNodeView.java,v 1.8 2003/06/16
11:55:04 mudyc Exp $";
+public static final String rcsid = "$Id: TextNodeView.java,v 1.9 2003/07/01
16:33:33 mudyc Exp $";
public static boolean dbg = false;
private static void pa(String s) { System.out.println("TextNodeView::"+s);
}
@@ -73,6 +73,13 @@
final Object objNode = node;
String s = enf.makeString();
+ if (s.length() == 0)
+ return new org.nongnu.libvob.lava.placeable.Placeable() {
+ public void place(VobScene vs, int into) {
+ }
+ public float getWidth() { return 10; }
+ public float getHeight() { return 10; }
+ };
HChain ch = getChain(s);
final HBroken br = breaker.breakLines(ch, width, scale);
Index: fenfire/org/fenfire/view/TextNodeView.test
diff -u fenfire/org/fenfire/view/TextNodeView.test:1.5
fenfire/org/fenfire/view/TextNodeView.test:1.6
--- fenfire/org/fenfire/view/TextNodeView.test:1.5 Mon Jun 16 07:55:04 2003
+++ fenfire/org/fenfire/view/TextNodeView.test Tue Jul 1 12:33:33 2003
@@ -34,15 +34,15 @@
gfx.needGL()
+
def testNotEmptyAndEmptyNodes():
+# fail: GL
"""
- fail: GL
"""
vs = gfx.getvs()
# Create fen with swamps.
fen = ff.test.fen.newFen()
- rst = ff.modules.pp.RSTActionsImpl(fen)
textstyle = vob.GraphicsAPI.getInstance().getTextStyle("sans", 0, 24)
textnodeview = ff.view.TextNodeView(fen.txtfunc, textstyle, 1)
@@ -50,36 +50,18 @@
view.cull = 1
paperview = ff.view.PaperView2D(gfx.win, view)
- canvas = rst.newRSTCanvas()
- parag = rst.newParagraph(canvas, 200, 10,10)
- senten = rst.newSentence(parag,0)
note = ff.swamp.Nodes.N()
- ff.util.AlphContent(fen).setText(note, 'This is rst canvas test', 1)
- rst.insertNode(senten, note, 0)
+ paper = ff.util.RDFUtil.N(fen.graph, ff.vocab.CANVAS2D.Canvas)
+ fen.graph.add(paper, ff.vocab.STRUCTLINK.linkedTo, note)
+ ff.util.AlphContent(fen).setText(note, '', 1)
- mainNode = ff.view.buoy.MainNode2D(canvas, paperview)
-
- # set context...
- context = ff.view.FenPDFContext(fen, rst, textnodeview)
- context.setAccursed(note)
- context.setRSTNode(senten)
- context.setCursorOffset(3)
- mainNode.context = context
- rst.util.generateBasicSpatialCoords(canvas, textnodeview)
+ mainNode = ff.view.buoy.MainNode2D(paper, paperview, None)
vs.map.put(vob.vobs.SolidBackdropVob(java.awt.Color.green))
into = vs.orthoBoxCS(0, "FocusFrame", 0,
30, 30, 1, 1, 50, 50)
mainNode.renderMain(vs, into)
gfx.render(vs)
-
-
- # put up some empty nodes and test will jam
- mainNode.keystroke('Space')
- mainNode.keystroke('Space')
- mainNode.keystroke('Space')
- mainNode.keystroke('Return')
- rst.util.generateBasicSpatialCoords(canvas, textnodeview)
vs = gfx.getvs()
vs.map.put(vob.vobs.SolidBackdropVob(java.awt.Color.green))
Index: fenfire/org/fenfire/view/buoy/AbstractMainNode2D.java
diff -u fenfire/org/fenfire/view/buoy/AbstractMainNode2D.java:1.28
fenfire/org/fenfire/view/buoy/AbstractMainNode2D.java:1.29
--- fenfire/org/fenfire/view/buoy/AbstractMainNode2D.java:1.28 Fri Jun 27
10:00:34 2003
+++ fenfire/org/fenfire/view/buoy/AbstractMainNode2D.java Tue Jul 1
12:33:33 2003
@@ -119,17 +119,15 @@
*/
static public org.fenfire.view.lava.FenPDFContext context = null;
public void keystroke(String s) {
- context.handleKeyStroke(s, this);
- }
-
- protected AreaSelectingView2D selection = new AreaSelectingView2D(null);
- public void setSelection(float x, float y, float x1, float y1) {
- selection.setArea(x,y,x1,y1);
+ if (context != null)
+ context.handleKeyStroke(s, this);
}
public void renderMain(VobScene vs, int into) {
- context.mainNodeToBeRender(vs, into, this);
- // extending classes will render after this.
+ // inherited classes will render before this.
+ if (context != null)
+ context.mainNodeToBeRender(vs, into, this);
+
}
public interface Render {
void mainNodeToBeRender(VobScene vs, int into,
@@ -165,18 +163,15 @@
}
}
- public float[] getXYHitOnPlane(VobScene oldVobScene, float x, float y) {
+ public float[] getXYHit(VobScene oldVobScene, float x, float y) {
float[] pt = new float[] { x, y, 0 };
- float[] sq = new float[2];
- oldVobScene.coords.inverseTransformPoints3(
- box2screen, pt, pt);
- if (this instanceof MainNode2D) {
- return pt;
- } else if (this instanceof FisheyeMainNode2D) {
- oldVobScene.coords.transformPoints3(box2paper, pt, pt);
- return pt;
- } else throw new Error("No known main node view2d");
- }
+ if (dbg) p("P1: "+pt[0]+" "+pt[1]+" "+pt[2]);
+ oldVobScene.coords.inverseTransformPoints3(box2screen, pt, pt);
+ if (dbg) p("P2: "+pt[0]+" "+pt[1]+" "+pt[2]);
+ oldVobScene.coords.transformPoints3(box2paper, pt, pt);
+ if (dbg) p("P3: "+pt[0]+" "+pt[1]+" "+pt[2]);
+ return pt;
+ }
public boolean isHitInsidePlane(int x, int y, VobScene oldVobScene) {
float[] pt = new float[] { x, y, 0 };
Index: fenfire/org/fenfire/view/buoy/FisheyeMainNode2D.java
diff -u fenfire/org/fenfire/view/buoy/FisheyeMainNode2D.java:1.12
fenfire/org/fenfire/view/buoy/FisheyeMainNode2D.java:1.13
--- fenfire/org/fenfire/view/buoy/FisheyeMainNode2D.java:1.12 Fri Jun 27
10:00:34 2003
+++ fenfire/org/fenfire/view/buoy/FisheyeMainNode2D.java Tue Jul 1
12:33:33 2003
@@ -99,7 +99,6 @@
view2d.render(vs, plane, into, box2screen, box2paper);
- selection.render(vs, plane, into, box2screen, box2paper);
super.renderMain(vs, into);
}
Index: fenfire/org/fenfire/view/buoy/MainNode2D.java
diff -u fenfire/org/fenfire/view/buoy/MainNode2D.java:1.30
fenfire/org/fenfire/view/buoy/MainNode2D.java:1.31
--- fenfire/org/fenfire/view/buoy/MainNode2D.java:1.30 Fri Jun 27 10:00:34 2003
+++ fenfire/org/fenfire/view/buoy/MainNode2D.java Tue Jul 1 12:33:33 2003
@@ -91,8 +91,6 @@
setZoomPan(vs, box2paper);
view2d.render(vs, plane, into, into, box2paper);
- selection.render(vs, plane, into, into, box2paper);
-
super.renderMain(vs, into);
}
@@ -102,4 +100,5 @@
focus.getPanX()-boxw/zoom/2,
focus.getPanY()-boxh/zoom/2,
1/zoom, 1/zoom, boxw, boxh);
}
+
}
Index: fenfire/org/fenfire/view/lava/ContextNodeView.java
diff -u fenfire/org/fenfire/view/lava/ContextNodeView.java:1.2
fenfire/org/fenfire/view/lava/ContextNodeView.java:1.3
--- fenfire/org/fenfire/view/lava/ContextNodeView.java:1.2 Wed Jun 11
13:00:24 2003
+++ fenfire/org/fenfire/view/lava/ContextNodeView.java Tue Jul 1 12:33:33 2003
@@ -32,21 +32,27 @@
import org.nongnu.libvob.vobs.*;
/** This node function uses caching for nodes which aren't focused,
- * othervise uses noncached node functions.
+ * othervise uses noncached node functions. Caching can be
+ * reinitialized i.e., after loading a new state of graph.
*/
public class ContextNodeView implements NodeFunction {
- final NodeFunction cached, unCached;
+ final private NodeFunction nodef;
+ private NodeFunction cached, unCached;
private ContextNodeView.Context context = null;
private NodeFunction current;
- public ContextNodeView(NodeFunction cached,
- NodeFunction uncached)
- {
- this.cached = cached;
- this.unCached = uncached;
- current = unCached;
+ public ContextNodeView(NodeFunction nodef, ConstGraph graph, int n) {
+ this.nodef = nodef;
+ this.unCached = nodef;
+ current = unCached;
+ reinit(graph, n);
}
+
+ public void reinit(ConstGraph graph, int n) {
+ this.cached = new CachedNodeFunction(n, graph, nodef);
+ }
+
public void setContext(ContextNodeView.Context context) {
this.context = context;
}
Index: fenfire/org/fenfire/view/lava/FenPDFContext.java
diff -u fenfire/org/fenfire/view/lava/FenPDFContext.java:1.34
fenfire/org/fenfire/view/lava/FenPDFContext.java:1.35
--- fenfire/org/fenfire/view/lava/FenPDFContext.java:1.34 Mon Jun 23
14:16:19 2003
+++ fenfire/org/fenfire/view/lava/FenPDFContext.java Tue Jul 1 12:33:33 2003
@@ -222,7 +222,7 @@
/** @return new or old mainnodes. null is good also.
*/
public AbstractMainNode2D[] doMouse(MouseEvent e, VobScene oldVS,
- AbstractMainNode2D[] mainNodes)
+ AbstractMainNode2D[] mainNodes, ContextNodeView
cnv)
throws RemoteException, IOException, RDFException
{
p("planes: " + mainNodes);
@@ -303,13 +303,14 @@
Model m = new ModelMem();
m.read(new FileReader("myFenfire/mygraph.rdf"), null);
fen.constgraph = fen.graph = Graphs.toGraph(m);
+ cnv.reinit(fen.graph, 200);
int i = 0;
Iterator it = fen.graph.findN_11X_Iter(SAVE.State, SAVE.point);
p("Going to iterate graph if iter has: " + it.hasNext());
while (it.hasNext() && i<mainNodes.length) {
Object plane = it.next();
- if (fen.graph.find1_11X(plane, RDF.type) ==
- CANVAS2D.Canvas) {
+ p("plane: " + plane);
+ if (RDFUtil.isNodeType(fen.graph, plane, CANVAS2D.Canvas))
{
mainNodes[i] = new MainNode2D(plane,
ppView, new
MainNode2D.SimpleFocus(0,0),1,
controller);
Index: fenfire/org/fenfire/vocab/lava/MINDSTRUCT.java
diff -u fenfire/org/fenfire/vocab/lava/MINDSTRUCT.java:1.1
fenfire/org/fenfire/vocab/lava/MINDSTRUCT.java:1.2
--- fenfire/org/fenfire/vocab/lava/MINDSTRUCT.java:1.1 Wed Jun 25 15:39:42 2003
+++ fenfire/org/fenfire/vocab/lava/MINDSTRUCT.java Tue Jul 1 12:33:33 2003
@@ -8,7 +8,7 @@
*/
public class MINDSTRUCT {
static public final String _nsId =
- "http://fenfire.org/rdf-v/EXPERIMENTAL/2003/06/mindstruct";
+ "http://fenfire.org/EXPERIMENTAL/rdf-v/2003/06/mindstruct";
static public final Object Data;
static public final Object link;
- [Gzz-commits] fenfire/org/fenfire demo/actions.py demo/buoyoi...,
Matti Katila <=
- [Gzz-commits] fenfire/org/fenfire demo/actions.py demo/buoyoi..., Matti Katila, 2003/07/07
- [Gzz-commits] fenfire/org/fenfire demo/actions.py demo/buoyoi..., Matti Katila, 2003/07/17
- [Gzz-commits] fenfire/org/fenfire demo/actions.py demo/buoyoi..., Matti Katila, 2003/07/19
- [Gzz-commits] fenfire/org/fenfire demo/actions.py demo/buoyoi..., Matti Katila, 2003/07/19
- [Gzz-commits] fenfire/org/fenfire demo/actions.py demo/buoyoi..., Matti Katila, 2003/07/30