/[fenfire]/fenfire/org/fenfire/demo/mm.py
ViewVC logotype

Diff of /fenfire/org/fenfire/demo/mm.py

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.37 by humppake, Mon Aug 25 14:20:03 2003 UTC revision 1.38 by humppake, Mon Aug 25 20:11:39 2003 UTC
# Line 30  from org.fenfire.vocab import * Line 30  from org.fenfire.vocab import *
30  from org.fenfire.vocab.lava import *  from org.fenfire.vocab.lava import *
31  from org.fenfire.swamp import Nodes  from org.fenfire.swamp import Nodes
32  from org.fenfire.fenmm import MMGeometry  from org.fenfire.fenmm import MMGeometry
33    from org.fenfire.util.lava import Traversals
34  from org.nongnu.libvob.util import PUIClipboard  from org.nongnu.libvob.util import PUIClipboard
35  import org.nongnu.alph as alph  import org.nongnu.alph as alph
36  import org.nongnu.storm as storm  import org.nongnu.storm as storm
# Line 127  multiplexer = ff.swamp.MultiplexerNodeFu Line 128  multiplexer = ff.swamp.MultiplexerNodeFu
128  structLink = ff.structure.StructLink.create(fen.graph)  structLink = ff.structure.StructLink.create(fen.graph)
129    
130  class Context(ff.view.buoy.AbstractMainNode2D.Context):  class Context(ff.view.buoy.AbstractMainNode2D.Context):
131      def __init__(self, fen, w, home, multiplexer, style):      def __init__(self, fen, w, components, multiplexer, style):
132          self.fen = fen          self.fen = fen
133          self.w = w          self.w = w
134          self.home = home          self.components = components
135          self.multiplexer = multiplexer          self.multiplexer = multiplexer
136          self.style = style          self.style = style
137    
# Line 197  class Context(ff.view.buoy.AbstractMainN Line 198  class Context(ff.view.buoy.AbstractMainN
198                      self.fen.graph.rm_111(with, STRUCTLINK.linkedTo, obj)                      self.fen.graph.rm_111(with, STRUCTLINK.linkedTo, obj)
199                      totRemoved += 1                      totRemoved += 1
200          except: pass          except: pass
201            if totRemoved and structLink.isLinked(obj) \
202                   and not Traversals.isConnected(obj, STRUCTLINK.linkedTo, with, fen.graph):
203                self.components.append(obj)
204          return totRemoved          return totRemoved
205    
206      def mainNodeToBeRender(self, vs,into, main): pass      def mainNodeToBeRender(self, vs,into, main): pass
# Line 227  class LMB(Action, vob.mouse.MouseClickLi Line 231  class LMB(Action, vob.mouse.MouseClickLi
231          node = vs.getKeyAt(0, x,y, None)          node = vs.getKeyAt(0, x,y, None)
232          #p('LBM click:', node)          #p('LBM click:', node)
233    
234          if node == None: return          if node == None:
235                self.context.c.setAccursed(None);
236                return
237    
238          rmb = self.context.rmb_switch[0]          rmb = self.context.rmb_switch[0]
239          main = self.context.main          main = self.context.main
# Line 252  class LMB(Action, vob.mouse.MouseClickLi Line 258  class LMB(Action, vob.mouse.MouseClickLi
258              if node == self.context.main.getPlane(): # from border to linked              if node == self.context.main.getPlane(): # from border to linked
259                  cursor.setOffset((x-into[0])/scale/nodeScale, (y-into[1])/scale/nodeScale)                  cursor.setOffset((x-into[0])/scale/nodeScale, (y-into[1])/scale/nodeScale)
260              elif structLink.isLinked(node): # from linked or border to another linked              elif structLink.isLinked(node): # from linked or border to another linked
261                  cursor.setOffset((x-into[0])/scale/nodeScale, (y-into[1])/scale/nodeScale)                  representative = self.context.floatingHash.get(node)
262                    if representative != None:
263                        self.context.components.remove(representative)
264                        self.context.components.append(main.getPlane())
265                        cursor.setOffset((x-into[0])/nodeScale, (y-into[1])/nodeScale)
266                    else:
267                        cursor.setOffset((x-into[0])/scale/nodeScale, (y-into[1])/scale/nodeScale)
268                        
269                  focus = main.getFocus()                  focus = main.getFocus()
270                  main.setNewPlane(node, focus.getPanX(), focus.getPanY(), focus.getZoom())                  main.setNewPlane(node, focus.getPanX(), focus.getPanY(), focus.getZoom())
271              else: # from border to border              else: # from border to border
# Line 262  class LMB(Action, vob.mouse.MouseClickLi Line 275  class LMB(Action, vob.mouse.MouseClickLi
275              if node == main.getPlane(): pass              if node == main.getPlane(): pass
276              elif self.context.rmLinkTo(node, main.getPlane()) == 0:              elif self.context.rmLinkTo(node, main.getPlane()) == 0:
277                  self.fen.graph.add(main.getPlane(), STRUCTLINK.linkedTo, node)                  self.fen.graph.add(main.getPlane(), STRUCTLINK.linkedTo, node)
278                    representative = self.context.floatingHash.get(node)
279                    if representative != None:
280                        self.context.components.remove(representative)
281    
282    
283  class ZoomPan(vob.input.RelativeAxisListener, Action, vob.mouse.MousePressListener):  class ZoomPan(vob.input.RelativeAxisListener, Action, vob.mouse.MousePressListener):
# Line 287  class PanMover(Action, vob.mouse.Relativ Line 303  class PanMover(Action, vob.mouse.Relativ
303  class MMScene:  class MMScene:
304      def __init__(self):      def __init__(self):
305          self.alphContent = ff.util.AlphContent(fen)          self.alphContent = ff.util.AlphContent(fen)
306            components = []
307          if do_load_graph:          if do_load_graph:
308              self.home = fen.graph.findN_X1A_Iter(STRUCTLINK.linkedTo).next()              nodes = fen.graph.findN_X1A_Iter(STRUCTLINK.linkedTo)
309                comps = Traversals.findComponents(nodes, STRUCTLINK.linkedTo, fen.graph)
310                centered = comps[1]
311                for component in comps[0].toArray():
312                    components.append(component)
313                components.remove(centered)
314          else:          else:
315              self.home = ff.util.RDFUtil.N(fen.graph, MINDSTRUCT.Data)              centered = ff.util.RDFUtil.N(fen.graph, MINDSTRUCT.Data)
316              self.alphContent.insertText(self.home, 0, 'Home', 1)              self.alphContent.insertText(centered, 0, 'Home', 1)
317    
318          self.context = Context(fen, w, self.home, multiplexer, style)          self.context = Context(fen, w, components, multiplexer, style)
319    
320          self.mindMouse = vob.mouse.MouseMultiplexer()          self.mindMouse = vob.mouse.MouseMultiplexer()
321          self.mindMouse.setListener(3, 0, 'Right mouse button switching.', RMB(fen, self.context))          self.mindMouse.setListener(3, 0, 'Right mouse button switching.', RMB(fen, self.context))
# Line 304  class MMScene: Line 326  class MMScene:
326                            PanMover(fen, self.context))                            PanMover(fen, self.context))
327    
328          self.view = ff.view.lava.mindMapView2D.MindMapView2D(fen, self.context)          self.view = ff.view.lava.mindMapView2D.MindMapView2D(fen, self.context)
329          self.main = ff.view.lava.mindMapView2D.MindMapMainNode2D(fen, self.context, self.view, self.mindMouse)          self.main = ff.view.lava.mindMapView2D.MindMapMainNode2D(fen, centered, self.context,
330                                                                     self.view, self.mindMouse)
331          self.context.main = self.main          self.context.main = self.main
332          dimensions = w.getSize()          dimensions = w.getSize()
333          self.view.filletLength = dimensions.width * 1./4.          self.view.filletLength = dimensions.width * 1./4.
# Line 369  class MMScene: Line 392  class MMScene:
392          # draw cursor          # draw cursor
393          if accursed:          if accursed:
394              nodeview = ff.view.TextNodeView(fen.txtfunc, style)              nodeview = ff.view.TextNodeView(fen.txtfunc, style)
395              if structLink.isLinked(accursed) or self.context.home == accursed:              if structLink.isLinked(accursed) or self.context.main.getPlane() == accursed:
396                  if hasattr(self.view, "zoomPanCS"):                  if hasattr(self.view, "zoomPanCS"):
397                      self.context.c.render(vs, cs, self.view.zoomPanCS, nodeview.f(fen.graph, accursed))                      self.context.c.render(vs, cs, self.view.zoomPanCS, nodeview.f(fen.graph, accursed))
398                  else: self.context.c.render(vs, cs, nodeview.f(fen.graph, accursed))                  else: self.context.c.render(vs, cs, nodeview.f(fen.graph, accursed))

Legend:
Removed from v.1.37  
changed lines
  Added in v.1.38

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26