[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[ff-cvs] fenfire/org/fenfire bin/fenpdf10.py fenpdf/fenp...
From: |
Tuomas J. Lukka |
Subject: |
[ff-cvs] fenfire/org/fenfire bin/fenpdf10.py fenpdf/fenp... |
Date: |
Sat, 23 Aug 2003 09:25:19 -0400 |
CVSROOT: /cvsroot/fenfire
Module name: fenfire
Branch:
Changes by: Tuomas J. Lukka <address@hidden> 03/08/23 09:25:18
Modified files:
org/fenfire/bin: fenpdf10.py
org/fenfire/fenpdf: fenpdf.py
org/fenfire/fenpdf/actions: keyboard.py mouse.py
org/fenfire/fenpdf/appearance: views.py
org/fenfire/fenpdf/events: eventhandler.py mousemenu.py
Log message:
Arch: patch-50
Moving ui state. Clear encapsulation of location where reuse of vs's is
decided
patch-51
Comments, rm crud
patch-52
Fix mousemenu again
CVSWeb URLs:
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/bin/fenpdf10.py.diff?tr1=1.69&tr2=1.70&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/fenpdf/fenpdf.py.diff?tr1=1.7&tr2=1.8&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/fenpdf/actions/keyboard.py.diff?tr1=1.5&tr2=1.6&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/fenpdf/actions/mouse.py.diff?tr1=1.4&tr2=1.5&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/fenpdf/appearance/views.py.diff?tr1=1.7&tr2=1.8&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/fenpdf/events/eventhandler.py.diff?tr1=1.3&tr2=1.4&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/fenpdf/events/mousemenu.py.diff?tr1=1.1&tr2=1.2&r1=text&r2=text
Patches:
Index: fenfire/org/fenfire/bin/fenpdf10.py
diff -u fenfire/org/fenfire/bin/fenpdf10.py:1.69
fenfire/org/fenfire/bin/fenpdf10.py:1.70
--- fenfire/org/fenfire/bin/fenpdf10.py:1.69 Sat Aug 23 06:48:40 2003
+++ fenfire/org/fenfire/bin/fenpdf10.py Sat Aug 23 09:25:18 2003
@@ -207,7 +207,7 @@
context = Context(w, fen, ppActions, FILE)
-context.mousemenu = ff.fenpdf.events.mousemenu.MouseMenu(context.states)
+context.mousemenu = ff.fenpdf.events.mousemenu.MouseMenu(fenPDF,
context.states)
fenPDF.events.mousemenu = context.mousemenu
fenPDF.events.mouse = ff.fenpdf.events.mouse.MouseMapper(context)
@@ -230,7 +230,7 @@
ff.view.buoy.MainNode2D.fen = fen
ff.view.buoy.AbstractMainNode2D.context = context
-fenPDF.actions.mouse = ff.fenpdf.actions.mouse.MouseActions(context)
+fenPDF.actions.mouse = ff.fenpdf.actions.mouse.MouseActions(fenPDF,context)
fenPDF.actions.key = ff.fenpdf.actions.keyboard.KeyActions(context)
Index: fenfire/org/fenfire/fenpdf/actions/keyboard.py
diff -u fenfire/org/fenfire/fenpdf/actions/keyboard.py:1.5
fenfire/org/fenfire/fenpdf/actions/keyboard.py:1.6
--- fenfire/org/fenfire/fenpdf/actions/keyboard.py:1.5 Fri Aug 22 05:06:57 2003
+++ fenfire/org/fenfire/fenpdf/actions/keyboard.py Sat Aug 23 09:25:18 2003
@@ -17,6 +17,10 @@
def p(*s):
print 'ff.fenpdf.events.key::', s
+# Note that the default is that the old vobscene is reused.
+# If an action needs regeneration, it has to explicitly call for
+# that by fenPDF.uistate.regenerateVs()
+
class KeyActions:
def __init__(self, context):
self.context = context
@@ -35,6 +39,8 @@
self.fenPDF.structure.alphContent.insertText(acc, offs, char, 1)
cur.setCursorOffset(offs + 1)
+ fenPDF.uistate.regenerateVS()
+
def insertCharOrCreate(self, main, char):
"""Insert a character to the accursed node.
@@ -57,6 +63,8 @@
self.insertChar(main, char)
+ fenPDF.uistate.regenerateVS()
+
def moveInsertionCursor(self, main, n):
"""Move the text insertion cursor by n.
@@ -75,6 +83,8 @@
cur.setCursorOffset(offs)
+ fenPDF.uistate.regenerateVS()
+
def backspace(self, main):
cur = self.context.states.cursor
@@ -101,6 +111,8 @@
self.fenPDF.structure.canvas2d.removeNode(node)
cur.setAccursed(None)
+ fenPDF.uistate.regenerateVS()
+
# XXX Not implemented
def toggleBgTextureUse(self, value = -1):
@@ -119,8 +131,11 @@
# here from fenpdf10.py, and needs fixing XXX
self.context.states.buoymanager.singles[1].mainNode =
ff.view.buoy.MainNode2D(planeHome, irregu, ctrl)
+ fenPDF.uistate.regenerateVS()
+
def save(self):
self.context.save()
+ fenPDF.uistate.regenerateVS()
def exit(self):
# Harsh
@@ -134,6 +149,7 @@
self.fenPDF.views.getDoubleGeometer().setSingle(
not self.fenPDF.views.getDoubleGeometer().getSingle())
vob.AbstractUpdateManager.chg()
+ fenPDF.uistate.regenerateVS()
def importPDF(self):
@@ -145,12 +161,14 @@
p('sc: ',scrollBlock,'id: ', scrollBlock.getID())
if scrollBlock != None:
self.moveTo(None, scrollBlock)
+ fenPDF.uistate.regenerateVS()
def newCanvas(self):
canvas = Nodes.N()
self.fenPDF.structure.canvas2d.makeIntoCanvas(canvas)
self.fenPDF.structure.treeTime.addLatest(self.fenPDF.fen.graph, canvas)
self.moveTo(None, canvas)
+ fenPDF.uistate.regenerateVS()
def moveTo(self, main, newFocus):
"""Move the focus to a new place.
@@ -161,17 +179,7 @@
index = 0
self.fenPDF.views.setFocus(index, newFocus)
- # buoymanager.replaceManager(0,
- # ff.view.buoy.FisheyeMainNode2D(
- # scrollBlock,
- # views.pageview,
- # ff.view.buoy.AbstractMainNode2D.SimpleFocus(0,0),
- # self.states.mainMouse))
-
- #buoymanager.replaceManager(0,
- # ff.view.buoy.MainNode2D(ff.swamp.Nodes.get(paper),
- # views.irregu,
ff.view.buoy.AbstractMainNode2D.SimpleFocus(0,0),1,
- # self.states.mainMouse))
+ fenPDF.uistate.regenerateVS()
Index: fenfire/org/fenfire/fenpdf/actions/mouse.py
diff -u fenfire/org/fenfire/fenpdf/actions/mouse.py:1.4
fenfire/org/fenfire/fenpdf/actions/mouse.py:1.5
--- fenfire/org/fenfire/fenpdf/actions/mouse.py:1.4 Thu Aug 21 04:24:09 2003
+++ fenfire/org/fenfire/fenpdf/actions/mouse.py Sat Aug 23 09:25:18 2003
@@ -37,23 +37,27 @@
# Define the actions.
-def defineActions(context):
+def defineActions(fenPDF, context):
def getMainNode():
return context.states.buoymanager.getLastMain()
def getOldVS():
- return context.states.buoymanager.getVs()
+ return fenPDF.uistate.lastVs
# Inside the action, we have the following symbols usable:
+# fenPDF - the main FenPDF object
# context - the context object
# getMainNode() - get the main node that was hit last
# getOldVS() - get the previous vobScene.
+# Note that the default is that the old vobscene is reused.
+# If an action needs regeneration, it has to explicitly call for
+# that by fenPDF.uistate.regenerateVs()
+
######## Actions to control pan of main nodes etc.
class PanMover(vob.mouse.RelativeAdapter,
vob.input.RelativeAxisListener):
def changedRelative(self, x,y='foo'):
- context.states.fastChg = 1
# grrr.. pythonism, overloading of own method is sicknes
if y=='foo': return self._changedRelative(x)
f = getMainNode().getFocus()
@@ -73,26 +77,24 @@
obj = getMainNode().getNodeOnPlane(getOldVS(), x,y)
context.states.cursor.setAccursed(obj)
getMainNode().moveToPoint(int(x),int(y), getOldVS())
- context.states.fastChg = 0
+ fenPDF.uistate.regenerateVS()
class ZoomPan(vob.input.RelativeAxisListener):
def changedRelative(self, x):
getMainNode().changeZoom(x)
getMainNode().chgFast(getOldVS(), -1)
- context.states.fastChg = 1
class ChangeSize(vob.input.RelativeAxisListener):
def changedRelative(self, x):
getMainNode().changeSize(x)
getMainNode().chgFast(getOldVS(), -1)
- context.states.fastChg = 1
class IfSelectNodeOnPlane(vob.mouse.MouseClickListener):
def clicked(self, x, y):
obj = getMainNode().getNodeOnPlane(getOldVS(), x,y)
context.states.cursor.setAccursed(obj)
- context.states.fastChg = 0
+ fenPDF.uistate.regenerateVS()
class MouseMenu(vob.mouse.MouseClickListener):
def clicked(self, x, y):
@@ -102,7 +104,7 @@
context.mousemenu.link = 1
else: context.mousemenu.link = 0
context.mousemenu.showList(x,y,'mainmenu')
- context.states.fastChg = 0
+ fenPDF.uistate.regenerateVS()
vob.AbstractUpdateManager.setNoAnimation()
####### Actions to control nodes on main node plane
@@ -125,7 +127,6 @@
oy = ff.util.RDFUtil.getFloat(g, self.node, CANVAS2D.y)
self.pp.moveNote(self.node, ox+x/f.zoom, oy+y/f.zoom )
getMainNode().chgFast(getOldVS(), -1)
- context.states.fastChg = 1
@@ -150,7 +151,6 @@
getMainNode())
getMainNode().chgFast(getOldVS(), -1)
- context.states.fastChg = 1
def endDrag(self, x,y):
self.drag(x,y)
@@ -164,6 +164,7 @@
self.nodeMover = nodeMover
self.panMover = panMover
def pressed(self, x, y):
+ p("OldVS: ", getOldVS())
obj = getMainNode().getNodeOnPlane(getOldVS(), x,y)
if obj != None and obj == context.states.cursor.getAccursed():
@@ -192,7 +193,7 @@
buoymanager = context.states.buoymanager
p('hit',buoymanager.buoyHit)
context.mousemenu.showList(x,y, 'buoymenu')
- context.states.fastChg = 0
+ fenPDF.uistate.regenerateVS()
vob.AbstractUpdateManager.setNoAnimation()
class BuoyFollowClick(vob.mouse.MouseClickListener):
@@ -200,7 +201,7 @@
buoymanager = context.states.buoymanager
p('hit',buoymanager.buoyHit, buoymanager.buoyHit.single)
buoymanager.buoyHit.single.followLink(buoymanager.buoyHit.link)
- context.states.fastChg = 0
+ fenPDF.uistate.regenerateVS()
# Return a map of symbols
res = { }
@@ -210,8 +211,8 @@
return res
class MouseActions:
- def __init__(self, context):
- actions = defineActions(context)
+ def __init__(self, fenPDF, context):
+ actions = defineActions(fenPDF,context)
for sym in actions.keys():
setattr(self, sym, actions[sym])
Index: fenfire/org/fenfire/fenpdf/appearance/views.py
diff -u fenfire/org/fenfire/fenpdf/appearance/views.py:1.7
fenfire/org/fenfire/fenpdf/appearance/views.py:1.8
--- fenfire/org/fenfire/fenpdf/appearance/views.py:1.7 Fri Aug 22 07:22:58 2003
+++ fenfire/org/fenfire/fenpdf/appearance/views.py Sat Aug 23 09:25:18 2003
@@ -126,12 +126,21 @@
BuoyManager may decide
"""
- replacingScene = self.buoyManager.scene(vs)
- if replacingScene == None:
- self.fenPDF.events.buttons.render(vs, 0)
- self.fenPDF.events.mousemenu.render(vs)
+ if (not self.fenPDF.uistate.animate) or (
+ self.fenPDF.uistate.reuseVs):
+ vob.AbstractUpdateManager.setNoAnimation()
+
- return replacingScene
+ if self.fenPDF.uistate.reuseVs:
+ return self.fenPDF.uistate.lastVs
+
+ self.buoyManager.scene(vs)
+ self.fenPDF.events.buttons.render(vs, 0)
+ self.fenPDF.events.mousemenu.render(vs)
+
+ self.fenPDF.uistate.generatedNewScene(vs)
+
+ return vs
def getConnectors(self):
return self.connectors
Index: fenfire/org/fenfire/fenpdf/events/eventhandler.py
diff -u fenfire/org/fenfire/fenpdf/events/eventhandler.py:1.3
fenfire/org/fenfire/fenpdf/events/eventhandler.py:1.4
--- fenfire/org/fenfire/fenpdf/events/eventhandler.py:1.3 Sat Aug 23
06:48:41 2003
+++ fenfire/org/fenfire/fenpdf/events/eventhandler.py Sat Aug 23 09:25:18 2003
@@ -19,7 +19,7 @@
if dbg: p(ev)
if ev.getType() == ev.MOUSE_CLICKED:
- if (self.fenPDF.events.mousemenu.mouse(ev, oldvs) or
+ if (self.fenPDF.events.mousemenu.mouse(ev) or
self.fenPDF.events.buttons.mouseEvent(ev, oldvs)):
p('context seen, now cleaning it')
self.context.clean()
Index: fenfire/org/fenfire/fenpdf/events/mousemenu.py
diff -u fenfire/org/fenfire/fenpdf/events/mousemenu.py:1.1
fenfire/org/fenfire/fenpdf/events/mousemenu.py:1.2
--- fenfire/org/fenfire/fenpdf/events/mousemenu.py:1.1 Sat Aug 23 06:48:41 2003
+++ fenfire/org/fenfire/fenpdf/events/mousemenu.py Sat Aug 23 09:25:18 2003
@@ -1,6 +1,7 @@
# (c) Tuomas J. Lukka and Matti Katila
import vob
+from org.fenfire.swamp import Nodes
from org import fenfire as ff
import java
@@ -9,8 +10,9 @@
class MouseMenu:
class Action:
- def __init__(self, states):
+ def __init__(self, fenPDF, states):
self.states = states
+ self.fenPDF = fenPDF
def run(self):
pass
@@ -19,11 +21,13 @@
obj = self.states.objectOnPlane
pp = self.states.ppActions
pp.assocNotes(obj, -1, self.states.cursor.getAccursed())
+ self.fenPDF.uistate.regenerateVS()
class LinkR(Action):
def run(self):
obj = self.states.objectOnPlane
pp = self.states.ppActions
pp.assocNotes(obj, 1, self.states.cursor.getAccursed())
+ self.fenPDF.uistate.regenerateVS()
class UnlinkBuoy(Action):
def run(self):
link = self.states.buoymanager.buoyHit.link
@@ -41,6 +45,7 @@
a,b = link[1].first, link[1].second
pp.detachNotes(a, 1, b)
pp.detachNotes(a, -1, b)
+ self.fenPDF.uistate.regenerateVS()
class KillPlane(Action):
def run(self):
@@ -57,6 +62,7 @@
p('foo fish eye')
else:
p('plaah, unknow main view2d')
+ self.fenPDF.uistate.regenerateVS()
class GoHome(Action):
def run(self):
@@ -67,6 +73,7 @@
def run(self):
obj = self.states.objectOnPlane
self.states.ppActions.deleteNote(obj)
+ self.fenPDF.uistate.regenerateVS()
class Transclude(Action):
def run(self):
@@ -88,10 +95,12 @@
node = Nodes.get(self.states.ppActions.newNote(plane,
focus.getPanX(), focus.getPanY(), ""))
self.states.fen.txt.set(node, obj)
+ self.fenPDF.uistate.regenerateVS()
- def __init__(self, states):
+ def __init__(self, fenPDF, states):
+ self.fenPDF = fenPDF
self.states = states
self.style = vob.GraphicsAPI.getInstance().getTextStyle('sans', 0, 12)
self.link = 0
@@ -103,18 +112,18 @@
self.selectListVob = vob.vobs.SelectListVob(self.style)
if self.states.selection.hasSelection():
self.selectListVob.add('Transclude selection (PDF to canvas only)',
- self.Transclude(self.states))
+ self.Transclude(self.fenPDF, self.states))
if self.link:
- self.selectListVob.add('Link node to left',
self.LinkL(self.states))
- self.selectListVob.add('Link node to rigth',
self.LinkR(self.states))
+ self.selectListVob.add('Link node to left',
self.LinkL(self.fenPDF, self.states))
+ self.selectListVob.add('Link node to rigth',
self.LinkR(self.fenPDF, self.states))
self.selectListVob.add('Go to home', 'home')
- self.selectListVob.add('Destroy this canvas',
self.KillPlane(self.states))
+ self.selectListVob.add('Destroy this canvas',
self.KillPlane(self.fenPDF, self.states))
if self.link:
- self.selectListVob.add('Delete this node',
self.DeleteNode(self.states))
+ self.selectListVob.add('Delete this node',
self.DeleteNode(self.fenPDF, self.states))
def makeBuoyList(self):
self.selectListVob = vob.vobs.SelectListVob(self.style)
- self.selectListVob.add('Unlink buoy', self.UnlinkBuoy(self.states))
+ self.selectListVob.add('Unlink buoy', self.UnlinkBuoy(self.fenPDF,
self.states))
self.selectListVob.add('Go to home', 'home')
def render(self, vs):
@@ -143,8 +152,9 @@
self.w, self.h = .0, .0
self.isHide = 1
- def mouse(self, ev, vs):
+ def mouse(self, ev):
if self.isHide: return 0
+ vs = self.fenPDF.uistate.lastVs
cs = vs.matcher.getCS(0, 'MOUSE_MENU')
p('cs:', cs)
Index: fenfire/org/fenfire/fenpdf/fenpdf.py
diff -u fenfire/org/fenfire/fenpdf/fenpdf.py:1.7
fenfire/org/fenfire/fenpdf/fenpdf.py:1.8
--- fenfire/org/fenfire/fenpdf/fenpdf.py:1.7 Fri Aug 22 07:22:58 2003
+++ fenfire/org/fenfire/fenpdf/fenpdf.py Sat Aug 23 09:25:18 2003
@@ -4,10 +4,42 @@
"""
from org import fenfire as ff
+import vob
class _Empty:
pass
+class UIState:
+ """
+
+ The following fields are public:
+
+ lastVs -- The vobscene that has been drawn last.
+ reuseVs -- set to true if the change was fast and we can just
+ reuse the last time's vs.
+ animate -- The next regeneration should also animate.
+
+ """
+
+ def __init__(self):
+ self.reuseVs = 0
+ self.lastVs = None
+ self.animate = 0
+
+ def regenerateVS(self):
+ self.reuseVs = 0
+ vob.AbstractUpdateManager.chg()
+
+ def noAnimation(self):
+ self.reuseVs = 0
+
+ def generatedNewScene(self, vs):
+ """A new scene was generated, start fresh.
+ """
+ self.reuseVs = 1
+ self.lastVs = vs
+ self.animate = 1
+
class FenPDF:
"""This class represents a complete fenpdf "application".
@@ -37,6 +69,7 @@
window -- the GraphicsAPI.window object
+ uistate -- an UIState object
The internal members are prefixed by underscore.
"""
@@ -47,6 +80,7 @@
self.events = _Empty()
self.actions = _Empty()
self.structure = _Empty()
+ self.uistate = UIState()
self.structure.structLink = ff.structure.StructLink.create(fen.graph)
self.structure.alphContent = ff.util.AlphContent(fen)
- [ff-cvs] fenfire/org/fenfire bin/fenpdf10.py fenpdf/fenp..., Tuomas J. Lukka, 2003/08/20
- [ff-cvs] fenfire/org/fenfire bin/fenpdf10.py fenpdf/fenp..., Tuomas J. Lukka, 2003/08/21
- [ff-cvs] fenfire/org/fenfire bin/fenpdf10.py fenpdf/fenp..., Tuomas J. Lukka, 2003/08/22
- [ff-cvs] fenfire/org/fenfire bin/fenpdf10.py fenpdf/fenp..., Tuomas J. Lukka, 2003/08/22
- [ff-cvs] fenfire/org/fenfire bin/fenpdf10.py fenpdf/fenp..., Matti Katila, 2003/08/22
- [ff-cvs] fenfire/org/fenfire bin/fenpdf10.py fenpdf/fenp..., Tuomas J. Lukka, 2003/08/22
- [ff-cvs] fenfire/org/fenfire bin/fenpdf10.py fenpdf/fenp..., Tuomas J. Lukka, 2003/08/22
- [ff-cvs] fenfire/org/fenfire bin/fenpdf10.py fenpdf/fenp..., Tuomas J. Lukka, 2003/08/22
- [ff-cvs] fenfire/org/fenfire bin/fenpdf10.py fenpdf/fenp..., Tuomas J. Lukka, 2003/08/22
- [ff-cvs] fenfire/org/fenfire bin/fenpdf10.py fenpdf/fenp..., Tuomas J. Lukka, 2003/08/23
- [ff-cvs] fenfire/org/fenfire bin/fenpdf10.py fenpdf/fenp...,
Tuomas J. Lukka <=
- [ff-cvs] fenfire/org/fenfire bin/fenpdf10.py fenpdf/fenp..., Tuomas J. Lukka, 2003/08/24
- [ff-cvs] fenfire/org/fenfire bin/fenpdf10.py fenpdf/fenp..., Tuomas J. Lukka, 2003/08/24
- [ff-cvs] fenfire/org/fenfire bin/fenpdf10.py fenpdf/fenp..., Tuomas J. Lukka, 2003/08/25
- [ff-cvs] fenfire/org/fenfire bin/fenpdf10.py fenpdf/fenp..., Tuomas J. Lukka, 2003/08/26