fenfire-commits
[Top][All Lists]
Advanced

[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: Fri, 22 Aug 2003 01:21:08 -0400

CVSROOT:        /cvsroot/fenfire
Module name:    fenfire
Branch:         
Changes by:     Tuomas J. Lukka <address@hidden>        03/08/22 01:21:08

Modified files:
        org/fenfire/bin: fenpdf10.py 
        org/fenfire/fenpdf: fenpdf.py 
        org/fenfire/fenpdf/actions: keyboard.py 
        org/fenfire/fenpdf/appearance: views.py 
        org/fenfire/fenpdf/events: key.py 

Log message:
        patch-27
        Start getting rid of uses of PPActionsImpl. Simultaneously cleans up a 
lot since the Nodes.get and toString don't need to be called as often.
        patch-28
        More getting rid of ppactionsimpl
        patch-29
        Move EventHandler to its own file, to start chipping on it
        patch-30
        Move key stuff finally all to one place
        patch-31
        Reload doesn't need to be handled - vob.putil.demo does it already 
before calling us
        patch-32
        Move actions to where they belong
        patch-33
        Fix zooming to single view

CVSWeb URLs:
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/bin/fenpdf10.py.diff?tr1=1.65&tr2=1.66&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/fenpdf/fenpdf.py.diff?tr1=1.4&tr2=1.5&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/fenpdf/actions/keyboard.py.diff?tr1=1.3&tr2=1.4&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/fenpdf/appearance/views.py.diff?tr1=1.4&tr2=1.5&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/fenpdf/events/key.py.diff?tr1=1.2&tr2=1.3&r1=text&r2=text

Patches:
Index: fenfire/org/fenfire/bin/fenpdf10.py
diff -u fenfire/org/fenfire/bin/fenpdf10.py:1.65 
fenfire/org/fenfire/bin/fenpdf10.py:1.66
--- fenfire/org/fenfire/bin/fenpdf10.py:1.65    Thu Aug 21 15:23:59 2003
+++ fenfire/org/fenfire/bin/fenpdf10.py Fri Aug 22 01:21:07 2003
@@ -195,104 +195,12 @@
 
 
 
-
-class EventHandler:
-    def __init__(self, context = None):
-        self.context = context
-
-        
-    def mouse(self, ev, oldvs):
-        """ Callback from buoymanager, should not do context things..
-        Mostly because of click workaround.
-        @see vob.buoy.buoymanager.MultibuoyManager.mouse(..)
-        """
-        if dbg: p(ev)
-
-        if ev.getType() == ev.MOUSE_RELEASED:
-            p('mainMouse released? - there\'s a bug in here!')
-
-            # release event must go to mainMouse MouseMultiplexer to work 
correctly!
-            # mainMouse.deliverEvent(ev)
-            # flush implemented...
-            mainMouse.flush()
-            buoyMouse.flush()
-             
-            w.setCursor('default')
-
-            # workaround..
-            if self.context.states.lastEvent.getType() == ev.MOUSE_PRESSED:
-                p('workaround for a bug')
-                return 1
-
-            # There is a bug in AbstractUpdateManager code(?) and that's why 
now is must to return.
-        self.context.states.lastEvent = ev
-        return 0
-
-    def contextMouse(self, ev, oldvs):
-        if ev.getType() != ev.MOUSE_CLICKED:
-            return 0
-
-        if self.context.doMouse(ev, oldvs):
-            p('context seen, now cleaning it')
-            self.context.clean()
-            mainMouse.flush()
-            vob.AbstractUpdateManager.chg()
-            return 1
-        self.context.clean()
-        return 0
-
-    def buoyMouse(self, mgr, ev, single, link):
-        if buoyMouse.deliverEvent(ev):
-            vob.AbstractUpdateManager.chg()
-            return 1
-
-        if ev.getType() != ev.MOUSE_CLICKED:
-            return 0
-
-        if not (ev.getButton() in [1, 3]):
-            return 0
-
-        if isinstance(link[0].getView2D(), ff.view.PageScrollView2D):
-            mgr.singles[0].followLinkFromManager(link, single)
-        elif ev.getButton() == 1:
-            single.followLink(link)
-        else:
-            if mgr.singles[0] == single:
-                mgr.singles[1].followLinkFromManager(link, single)
-            else:
-                mgr.singles[0].followLinkFromManager(link, single)
-
-        vob.AbstractUpdateManager.chg()
-        return 1
-
-
-    def key(self, key):
-        self.context.key(key)
-
-        if key == "Home":
-            self.context.states.buoymanager.singles[1].mainNode = 
ff.view.buoy.MainNode2D(planeHome, irregu, ctrl)
-        elif key == "Ctrl-Q":
-            p("going to save");
-           self.context.save()
-
-
-            java.lang.System.exit(43)
-        elif key == "Ctrl-R":
-            vob.putil.demo.loadScenes()
-        #elif key == "?":
-        #    vob.putil.demo.showHelp = 1-showHelp
-        #    vob.AbstractUpdateManager.setNoAnimation()
-        else:
-            return globalkey(key)
-
-        vob.AbstractUpdateManager.chg()
-        return 1
-
 fenPDF = ff.fenpdf.fenpdf.FenPDF(fen, treetime)
+fenPDF.window = w
 
 
 papers = ff.fenpdf.appearance.papers.Papers()
-eventHandler = EventHandler()
+eventHandler = ff.fenpdf.events.eventhandler.EventHandler(fenPDF)
 
 
 context = Context(w, fen, ppActions, FILE)
Index: fenfire/org/fenfire/fenpdf/actions/keyboard.py
diff -u fenfire/org/fenfire/fenpdf/actions/keyboard.py:1.3 
fenfire/org/fenfire/fenpdf/actions/keyboard.py:1.4
--- fenfire/org/fenfire/fenpdf/actions/keyboard.py:1.3  Thu Aug 21 14:31:02 2003
+++ fenfire/org/fenfire/fenpdf/actions/keyboard.py      Fri Aug 22 01:21:07 2003
@@ -6,6 +6,8 @@
 
 # Therefore, we'll just use a single class.
 
+import vob
+
 from org.fenfire.swamp import Nodes
 from org import fenfire as ff
 from org.fenfire.util import RDFUtil
@@ -24,15 +26,13 @@
        If no node is accursed, will do nothing.
        """
         cur = self.context.states.cursor
-        pp = self.context.states.ppActions
 
-       acc = Nodes.toString(cur.getAccursed())
+       acc = cur.getAccursed()
 
        if dbg: p( "Typing: ", cur, cur.getAccursed())
 
         offs = cur.getCursorOffset()
-
-       pp.insertText(acc, offs, char)
+       self.fenPDF.structure.alphContent.insertText(acc, offs, char, 1)
        cur.setCursorOffset(offs + 1)
 
        
@@ -42,13 +42,18 @@
        If no node is accursed, create a new node at cursor.
        """
         cur = self.context.states.cursor
-        pp = self.context.states.ppActions
 
        if cur.getAccursed() == None:
-           paper = Nodes.toString(main.getPlane())
-           note = pp.newNote(paper, int(main.getFocus().getPanX()),
-                             int(main.getFocus().getPanY()), "")
-           cur.setAccursed(Nodes.get(note))
+           canvas = main.getPlane()
+           node = Nodes.N()
+           self.fenPDF.structure.canvas2d.placeOnCanvas(
+               canvas, node, 
+               main.getFocus().getPanX(),
+               main.getFocus().getPanY())
+           self.fenPDF.structure.alphContent.setText(
+               node, "", 1)
+
+           cur.setAccursed(node)
 
        self.insertChar(main, char)
 
@@ -62,12 +67,9 @@
        acc = cur.getAccursed()
        if acc == None: return
 
-       # XXX !!!
-        alphContent = ff.util.AlphContent(self.context.states.fen)
-       
         offs = cur.getCursorOffset() + n
        if offs < 0: offs = 0
-       l = len(alphContent.getText(acc))
+       l = len(self.fenPDF.structure.alphContent.getText(acc))
 
        if offs > l: offs = l
 
@@ -75,32 +77,28 @@
 
     def backspace(self, main):
         cur = self.context.states.cursor
-        pp = self.context.states.ppActions
 
 
-       acc = cur.getAccursed()
-       if acc == None: return
+       node = cur.getAccursed()
+       if node == None: return
         offs = cur.getCursorOffset()
 
-       note = Nodes.toString(acc)
-
-       # XXX !!!
-        alphContent = ff.util.AlphContent(self.fenPDF.fen)
+        alphContent = self.fenPDF.structure.alphContent
 
        if offs >= 1:
            p('delete:', offs)
-           pp.deleteText(note, offs - 1, offs)
+           alphContent.deleteText(node, offs - 1, offs)
            offs = cur.setCursorOffset(offs - 1)
-           text = alphContent.getText(self.fenPDF.fen.constgraph, acc)
+           text = alphContent.getText(self.fenPDF.fen.constgraph, node)
            if offs == 0 and len(text) == 0:
                # If text went to nothingness
-               if self.fenPDF.structure.structLink.isLinked(
-                           self.fenPDF.fen.graph, acc):
+               if self.fenPDF.structure.structLink.isLinked(node):
                    # Kludge workaround: insert # if it is linked
-                   pp.insertText(note, 0, "#")
+                   self.fenPDF.structure.alphContent.insertText(node, 0, "#")
                else:
                    # Delete the note
-                   pp.deleteNote(note)
+                   self.fenPDF.structure.structLink.detach(node)
+                   self.fenPDF.structure.canvas2d.removeNode(node)
                    cur.setAccursed(None)
 
        
@@ -112,3 +110,27 @@
     def changeBgPaperMaker(self):
        p("Not implemented")
        pass
+
+
+
+    def goToHome(self, main):
+       # Graa - this certainly doesn't work XXX
+       # **AND** breaks encapsulation. Was moved
+       # here from fenpdf10.py, and needs fixing XXX
+       self.context.states.buoymanager.singles[1].mainNode = 
ff.view.buoy.MainNode2D(planeHome, irregu, ctrl)
+
+    def save(self):
+       self.context.save()
+
+    def exit(self):
+       # Harsh
+       java.lang.System.exit(43)
+
+    def toggleZoomToSingle(self, main):
+       """Zoom to the currently focused view.
+
+       XXX Doesn't do that yet - always goes to upper view.
+       """
+       self.fenPDF.views.getDoubleGeometer().setSingle(
+           not self.fenPDF.views.getDoubleGeometer().getSingle())
+       vob.AbstractUpdateManager.chg()
Index: fenfire/org/fenfire/fenpdf/appearance/views.py
diff -u fenfire/org/fenfire/fenpdf/appearance/views.py:1.4 
fenfire/org/fenfire/fenpdf/appearance/views.py:1.5
--- fenfire/org/fenfire/fenpdf/appearance/views.py:1.4  Wed Aug 20 14:30:13 2003
+++ fenfire/org/fenfire/fenpdf/appearance/views.py      Fri Aug 22 01:21:08 2003
@@ -104,6 +104,9 @@
     def getBuoyManager(self):
        return self.buoyManager
 
+    def getDoubleGeometer(self):
+       return self.doubleGeometer
+
     def setFocus(self, index, plane):
        self.buoyManager.replaceManager(index, 
                self.createMainNode(plane))
Index: fenfire/org/fenfire/fenpdf/events/key.py
diff -u fenfire/org/fenfire/fenpdf/events/key.py:1.2 
fenfire/org/fenfire/fenpdf/events/key.py:1.3
--- fenfire/org/fenfire/fenpdf/events/key.py:1.2        Thu Aug 21 08:45:08 2003
+++ fenfire/org/fenfire/fenpdf/events/key.py    Fri Aug 22 01:21:08 2003
@@ -21,36 +21,40 @@
 class KeyHandler:
     def __init__(self, states):
         self.states = states
-    def key(self, stroke, main):
-        if dbg: p('KEY', stroke,', v:',main)
+    def key(self, key, main):
+        if dbg: p('KEY', key,', v:',main)
 
         ### normal alphabets etc.
-        if len(stroke) == 1:
-           self.fenPDF.actions.key.insertCharOrCreate(main, stroke)
+        if len(key) == 1:
+           self.fenPDF.actions.key.insertCharOrCreate(main, key)
 
        # XXX Need to get rid of these -- 
        # needed for bolding and italics
-        elif stroke == 'Ctrl-B':
+        elif key == 'Ctrl-B':
            self.fenPDF.actions.key.toggleBgTextureUse()
 
-        elif stroke == 'Ctrl-I':
+        elif key == 'Ctrl-I':
            self.fenPDF.actions.key.changeBgPaperMaker()
 
        # XXX Need to change this -- needed for saving!
-       elif stroke == 'Ctrl-S':
-           XXX
-           currentScene.doubleGeometer.setSingle(
-               not currentScene.doubleGeometer.getSingle())
-           print "Set single: ",currentScene.doubleGeometer.getSingle()
-           vob.AbstractUpdateManager.chg()
+       elif key == 'Ctrl-S':
+           self.fenPDF.actions.key.toggleZoomToSingle(main)
 
-        elif stroke == 'Return':
+        elif key == "Home":
+           self.fenPDF.actions.key.goToHome(main)
+
+        elif key == "Ctrl-Q":
+            p("going to save");
+           self.fenPDF.actions.key.save()
+           self.fenPDF.actions.key.exit()
+
+        elif key == 'Return':
             if dbg: p('Insert \\n')
            self.fenPDF.actions.key.insertChar(main, "\n")
-       elif stroke == 'Backspace':
+       elif key == 'Backspace':
            self.fenPDF.actions.key.backspace(main)
-       elif stroke == 'Left':
+       elif key == 'Left':
            self.fenPDF.actions.key.moveInsertionCursor(main, -1)
-        elif stroke == 'Right':
+        elif key == 'Right':
            self.fenPDF.actions.key.moveInsertionCursor(main, 1)
 
Index: fenfire/org/fenfire/fenpdf/fenpdf.py
diff -u fenfire/org/fenfire/fenpdf/fenpdf.py:1.4 
fenfire/org/fenfire/fenpdf/fenpdf.py:1.5
--- fenfire/org/fenfire/fenpdf/fenpdf.py:1.4    Thu Aug 21 15:23:59 2003
+++ fenfire/org/fenfire/fenpdf/fenpdf.py        Fri Aug 22 01:21:07 2003
@@ -29,6 +29,8 @@
 
        structLink -- a StructLink object
 
+    window -- the GraphicsAPI.window object
+
     The internal members are prefixed by underscore.
     """
 




reply via email to

[Prev in Thread] Current Thread [Next in Thread]