commit-gnue
[Top][All Lists]
Advanced

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

gnue/designer/src/forms LayoutEditor.py


From: Jason Cater
Subject: gnue/designer/src/forms LayoutEditor.py
Date: Fri, 25 Jan 2002 17:54:05 -0500

CVSROOT:        /cvsroot/gnue
Module name:    gnue
Changes by:     Jason Cater <address@hidden>    02/01/25 17:54:04

Modified files:
        designer/src/forms: LayoutEditor.py 

Log message:
        polished off mouse support/feedback in the LayoutEditor [syncing 
machines-hope this doesn't break

CVSWeb URLs:
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnue/designer/src/forms/LayoutEditor.py.diff?tr1=1.5&tr2=1.6&r1=text&r2=text

Patches:
Index: gnue/designer/src/forms/LayoutEditor.py
diff -c gnue/designer/src/forms/LayoutEditor.py:1.5 
gnue/designer/src/forms/LayoutEditor.py:1.6
*** gnue/designer/src/forms/LayoutEditor.py:1.5 Fri Jan 25 11:37:47 2002
--- gnue/designer/src/forms/LayoutEditor.py     Fri Jan 25 17:54:04 2002
***************
*** 302,307 ****
--- 302,311 ----
  
    def OnLeftUp(self, event):
  
+      for selection in self._currentSelection.keys():
+        selection.setSelected(0)
+      self._currentSelection = {}
+ 
       if self.mode == 'move':
         event.Skip()
         return
***************
*** 315,320 ****
--- 319,325 ----
       self.toolbar.resetTool(mode)
       self.mode = 'move'
  
+ 
       type = None
       attributes = {'x':x,'y':y}
       parent = self.block
***************
*** 348,365 ****
         #
         # Create our new object
         #
!        Incubator.createObject(
!                self._instance,
!                self._instance.rootObject,
!                type,
!                parent=parent,
!                attributes=attributes)
  
       event.Skip()
  
  
-   def OnRightUp(self, event):
  
  
      self.toolbar.resetTool(self.mode)
      self.mode = 'move'
--- 353,373 ----
         #
         # Create our new object
         #
!        object = Incubator.createObject(
!                    self._instance,
!                    self._instance.rootObject,
!                    type,
!                    parent=parent,
!                    attributes=attributes)
! 
!        self._currentSelection[object._widgetHandler] = 1
!        object._widgetHandler.setSelected(1)
  
       event.Skip()
  
  
  
+   def OnRightUp(self, event):
  
      self.toolbar.resetTool(self.mode)
      self.mode = 'move'
***************
*** 385,390 ****
--- 393,399 ----
  
      self.panel.PopupMenu(menu, event.GetPosition())
  
+ 
    def keyTrap(self, event):
      if event.KeyCode() in (WXK_LEFT, WXK_RIGHT, WXK_UP, WXK_DOWN) and \
        len(self._currentSelection.keys()):
***************
*** 426,431 ****
--- 435,442 ----
      self.object = object
      self.hasFocus = 0
      self.highlightBox = WidgetHighlighter(self.instance.panel)
+     self._iMoved = 0
+     self._alreadySelected = 0
  
    def initialize(self, widget):
      self.widget = widget.widgets[0]
***************
*** 497,518 ****
    def focusLostTrap(self, event):
      event.Skip()
  
    def OnLeftDown(self, event):
      self.mouseStartX, self.mouseStartY = event.GetPositionTuple()
  
!     if not event.ShiftDown():                               # Select only 1 
widget
!       for selection in self.instance._currentSelection.keys():
!         selection.setSelected(0)
!       self.instance._currentSelection = {}
!     selection = self
!     if self.instance._currentSelection.has_key(selection):  # Remove widget 
from selection hash
!       del self.instance._currentSelection[selection]
!       selection.setSelected(0)
!     else:                                                   # Add widget to 
selection hash
!       self.instance._currentSelection[selection] = 1
!       self.instance._instance.onSetCurrentObject(selection.object,__name__)
!       selection.setSelected(1)
  
  
      # Drag and drop TODO: This needs changed to pull all selected widgets
  
--- 508,531 ----
    def focusLostTrap(self, event):
      event.Skip()
  
+ 
    def OnLeftDown(self, event):
+     print "OnLeftDown"
      self.mouseStartX, self.mouseStartY = event.GetPositionTuple()
+     self._iMoved = 0
  
!     if not self.instance._currentSelection.has_key(self):
!       self._alreadySelected = 1
!       self.instance._currentSelection[self] = 1
!       self.instance._instance.onSetCurrentObject(self.object,__name__)
!       self.setSelected(1)
! 
!     event.Skip()
! 
! 
!   def beginDragDrop(self, event):
  
+     print "beginDragDrop"
  
      # Drag and drop TODO: This needs changed to pull all selected widgets
  
***************
*** 531,577 ****
      do = wxCustomDataObject(wxCustomDataFormat("GNUeDesVisualElement"))
      do.SetData(cPickle.dumps(data,1))
  
!     dropSource = wxDropSource(self.instance)
      dropSource.SetData(do)
      result = dropSource.DoDragDrop(true)
  
  
  
    def OnLeftUp(self, event):
!     pass
! #    self.instance.panel.ReleaseMouse()
! 
!   def OnMotion(self, event):
!     pass
!     # TODO : Disable old mouse support
  
! ##     if event.Dragging() and event.LeftIsDown():
! ##       xshift = 0
! ##       yshift = 0
  
- ##       x, y  = event.GetPositionTuple()
- ##       positionWidget = wxPyTypeCast(event.GetEventObject(),'wxWindow')
  
! ##       relativeX = x - self.mouseStartX
! ##       relativeY = y - self.mouseStartY
  
  
! ##       if abs(relativeX) > self.instance.gridWidth/2:
! ##          xshift = (abs(relativeX)/relativeX)
! ##       if abs(relativeY) > self.instance.gridHeight/2:
! ##          yshift = (abs(relativeY)/relativeY)
  
- ##       if xshift or yshift:
- ##        self.relativeMove(xshift,yshift)
  
    def OnRightDown(self, event):
!     pass
  
    def OnRightUp(self, event):
      pt = event.GetPositionTuple()
      self.instance._instance.onSetCurrentObject(self.object, None)
      wxPyTypeCast(event.GetEventObject(),'wxWindow') \
         .PopupMenu(self.object._popupMenu, pt)
  
    def OnEditProperties(self, event):
      self.instance._instance.propertyEditorWindow.Show(1)
--- 544,596 ----
      do = wxCustomDataObject(wxCustomDataFormat("GNUeDesVisualElement"))
      do.SetData(cPickle.dumps(data,1))
  
! #    icon = FeedbackBitmap(10,10).icon()
!     dropSource = MoveDropSource(self, self.instance) #, icon)
      dropSource.SetData(do)
      result = dropSource.DoDragDrop(true)
+     event.Skip()
+     print "EndDragDrop"
  
  
  
    def OnLeftUp(self, event):
!     print "OnLeftUp"
!     if self._iMoved:
!       self._iMoved = 0
!     elif not event.ShiftDown():
!       # Select only 1 widget
!       for selection in self.instance._currentSelection.keys():
!         selection.setSelected(0)
!       self.instance._currentSelection = {self:1}
!       self.setSelected(1)
!     elif self._alreadySelected:
!       # Remove widget from selection hash
!       del self.instance._currentSelection[self]
!       self.setSelected(0)
  
!     self._alreadySelected = 0
!     event.Skip()
  
  
!   def OnMotion(self, event):
  
+     if not self._iMoved and event.LeftIsDown():
+       self._iMoved = 1
+       self.beginDragDrop(event)
  
!     event.Skip()
  
  
    def OnRightDown(self, event):
!     event.Skip()
! 
  
    def OnRightUp(self, event):
      pt = event.GetPositionTuple()
      self.instance._instance.onSetCurrentObject(self.object, None)
      wxPyTypeCast(event.GetEventObject(),'wxWindow') \
         .PopupMenu(self.object._popupMenu, pt)
+     event.Skip()
  
    def OnEditProperties(self, event):
      self.instance._instance.propertyEditorWindow.Show(1)
***************
*** 646,651 ****
--- 665,725 ----
  #
  #
  #
+ class MoveDropSource(wxDropSource):
+ 
+   def __init__(self, handler, *args, **parms):
+     self.__handler = handler
+     wxDropSource.__init__(self, *args, **parms)
+ 
+   def GiveFeedback(self, effect, scrolling=0):
+ ##    print "Giving feedback"
+     return 0
+ 
+ 
+ #
+ #
+ #
+ class FeedbackBitmap:
+   def __init__(self, width, height):
+ 
+     if width < 2: width = 2
+     if height < 2: height = 2
+ 
+     topbot = ". " * int(width/2) + divmod(width,2)[1] * '.'
+     mid = '".' + " " * width -2 + '.",\n"
+ 
+     xpm = '/* XPM */\n'
+           'static char * text1_xpm[] = {'
+           '"%s %s 2 1",'
+           '"       g None",'
+           '".      g #000000",' % (width, height) + \
+           topbot + "\n"
+ 
+     xpm += mid * (height - 2) + topbot + "};\n"
+ 
+     print xpm
+ 
+     self.bitmap=wxNullIcon
+     print self.bitmap
+     dc = wxMemoryDC()
+     dc.SelectObject(self.bitmap)
+     dc.BeginDrawing()
+     dc.DrawRectangle(0,0,width, height)
+     dc.SetBrush(wxBLACK_BRUSH)
+     dc.SetPen(wxBLACK_PEN)
+     dc.EndDrawing()
+ #    self._icon = wxIcon(width, height)
+     print self.bitmap
+ 
+ 
+   def icon(self):
+ #    return self._icon
+     return self.bitmap
+ 
+ 
+ #
+ #
+ #
  class WidgetHighlighter:
  
    def __init__(self, parent):
***************
*** 666,671 ****
--- 740,747 ----
      self.activeBorderColor = wxBLUE
  
    def createHighlights(self):
+     if self.north:
+       self.Destroy()
      self.north = wxWindow(self.parent, -1)
      self.south = wxWindow(self.parent, -1)
      self.east = wxWindow(self.parent, -1)
***************
*** 1077,1086 ****
          elif params['Type'] in ('block',):
            parent = self.editor.page
          elif params['Type'] in ('selectedWidgets',):
!           xshift = x - int(attributes['startingX']) 
            yshift = y - int(attributes['startingY'])
            for uiwidget in self.editor._currentSelection.keys():
!             uiwidget.relativeMove(xshift,yshift)          
          else:
            parent = self.editor.page
            nextY += 1
--- 1153,1162 ----
          elif params['Type'] in ('block',):
            parent = self.editor.page
          elif params['Type'] in ('selectedWidgets',):
!           xshift = x - int(attributes['startingX'])
            yshift = y - int(attributes['startingY'])
            for uiwidget in self.editor._currentSelection.keys():
!             uiwidget.relativeMove(xshift,yshift)
          else:
            parent = self.editor.page
            nextY += 1



reply via email to

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