[Top][All Lists]
[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
- gnue/designer/src/forms LayoutEditor.py, Jason Cater, 2002/01/22
- gnue/designer/src/forms LayoutEditor.py, James Thompson, 2002/01/25
- gnue/designer/src/forms LayoutEditor.py,
Jason Cater <=
- gnue/designer/src/forms LayoutEditor.py, Jason Cater, 2002/01/25
- gnue/designer/src/forms LayoutEditor.py, Jason Cater, 2002/01/25
- gnue/designer/src/forms LayoutEditor.py, Jason Cater, 2002/01/26
- gnue/designer/src/forms LayoutEditor.py, Jason Cater, 2002/01/26