commit-gnue
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

gnue/designer/src Instance.py MenuBar.py


From: Jason Cater
Subject: gnue/designer/src Instance.py MenuBar.py
Date: Wed, 11 Jul 2001 11:41:34 -0700

CVSROOT:        /home/cvs
Module name:    gnue
Changes by:     Jason Cater <address@hidden>    01/07/11 11:41:34

Modified files:
        designer/src   : Instance.py MenuBar.py 

Log message:
        Got 'Reorder by Location' working. If you select a block, it reorders 
all elements in that block. If you reorder a page, it reorders all elements 
including any blocks.  It places items in this order: All hidden fields, All 
Boxes, All other elements other than blocks, all blocks; it reorders according 
to y, then x values.  This has only been partially tested on a few forms... 
save a copy before using.

CVSWeb URLs:
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/designer/src/Instance.py.diff?cvsroot=OldCVS&tr1=1.16&tr2=1.17&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/designer/src/MenuBar.py.diff?cvsroot=OldCVS&tr1=1.8&tr2=1.9&r1=text&r2=text

Patches:
Index: gnue/designer/src/Instance.py
diff -u gnue/designer/src/Instance.py:1.16 gnue/designer/src/Instance.py:1.17
--- gnue/designer/src/Instance.py:1.16  Tue Jul  3 18:43:11 2001
+++ gnue/designer/src/Instance.py       Wed Jul 11 11:41:34 2001
@@ -218,8 +218,19 @@
     self.makeDirty()
 
   def onDeleteObject (self, object, handler):
+
+    # Notify all listeners
     for listener in self.objectListeners: 
       listener.onDeleteObject(object, handler)
+
+    # Delete the actual object from its parent
+    i = 0
+    while i < len(object._parent._children) and \
+       object._parent._children[i] != object: 
+      i = i + 1
+    if object._parent._children[i] == object: 
+      object._parent._children.pop(i)
+
     self.makeDirty()
 
 
Index: gnue/designer/src/MenuBar.py
diff -u gnue/designer/src/MenuBar.py:1.8 gnue/designer/src/MenuBar.py:1.9
--- gnue/designer/src/MenuBar.py:1.8    Wed Jun 27 18:57:16 2001
+++ gnue/designer/src/MenuBar.py        Wed Jul 11 11:41:34 2001
@@ -191,8 +191,77 @@
     Incubator.deleteObject(self.instance, self.instance._form, self.object)
 
   def OnReorderLayout(self, event):
-    pass
+    unqId = 0 
+    hiddenObjects = []
+    boxObjects = {}
+    navObjects = {}
+    blockObjects = {}
+    self.object._upperX = 99999
+    self.object._upperY = 99999
+   
+    # Handle each child (note we are working from a copy 
+    # because self.oject._children will be morphing
+    for object in self.object._children[:]: 
+      if hasattr(object, 'hidden') and object.hidden: 
+        hiddenObjects.append(object)
+      elif object.getObjectType() == 'GFBlock': 
+        object._popupMenu.OnReorderLayout(event)
+        object.__savedChildren = object._children[:]
+        for o2 in object.__savedChildren:
+          self.instance.onDeleteObject(o2, __name__)
+        
+        oid = "%5d.%5d.%5d" % (object._upperY, object._upperX, unqId)
+        unqId = unqId + 1
+        blockObjects[oid] = object
 
+      else: 
+        if hasattr(object,'y') and object.y < self.object._upperY: 
+          self.object._upperY = object.y
+        if hasattr(object,'x') and object.x < self.object._upperX: 
+          self.object._upperX = object.x
+
+        oid = "%5d.%5d.%5d" % (object.y, object.x, unqId) 
+        unqId  = unqId + 1
+        if object.getObjectType() == 'GFBox': 
+          boxObjects[oid] = object
+        else: 
+          navObjects[oid] = object
+    
+      # Notify everyone that this object was deleted
+      self.instance.onDeleteObject(object, __name__)
+
+    self.object._children = []
+    # First, add back hidden objects all 
+    for object in hiddenObjects:
+#      self.object._children.append(object)
+      self.instance.onCreateObject(object, __name__)
+
+    # Now, add hidden objects
+    boxes = boxObjects.keys()
+    boxes.sort()
+    for box in boxes: 
+      self.object._children.append(boxObjects[box])
+      self.instance.onCreateObject(boxObjects[box], __name__)
+    
+    # The rest of the objects (other than blocks) go here
+    nav = navObjects.keys()
+    nav.sort()
+    for n in nav: 
+      self.object._children.append(navObjects[n])
+      self.instance.onCreateObject(navObjects[n], __name__)
+
+    # And, finally, any child blocks 
+    blocks = blockObjects.keys()
+    blocks.sort()
+    for block in blocks: 
+      children = blockObjects[block].__savedChildren[:]
+      self.object._children.append(blockObjects[block])
+      self.instance.onCreateObject(blockObjects[block], __name__)
+      for child in children: 
+        blockObjects[block]._children.append(child)
+        self.instance.onCreateObject(child,__name__)
+
+      
   def OnCreateObject(self, event):
     GDebug.printMesg(3, "Creating Object")
     tag = self._newMap[event.GetId()]



reply via email to

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