commit-gnue
[Top][All Lists]
Advanced

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

gnue/designer/src base/MenuBar.py forms/Instanc...


From: Jason Cater
Subject: gnue/designer/src base/MenuBar.py forms/Instanc...
Date: Sun, 30 Mar 2003 12:17:00 -0500

CVSROOT:        /cvsroot/gnue
Module name:    gnue
Changes by:     Jason Cater <address@hidden>    03/03/30 12:17:00

Modified files:
        designer/src/base: MenuBar.py 
        designer/src/forms: Instance.py 
        designer/src/forms/LayoutEditor: DisplayDropTarget.py 
                                         LayoutEditor.py 
                                         WidgetHandler.py 
                                         WidgetHighlighter.py 

Log message:
        more work on selection logic on the layout editor

CVSWeb URLs:
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnue/designer/src/base/MenuBar.py.diff?tr1=1.37&tr2=1.38&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnue/designer/src/forms/Instance.py.diff?tr1=1.34&tr2=1.35&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnue/designer/src/forms/LayoutEditor/DisplayDropTarget.py.diff?tr1=1.10&tr2=1.11&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnue/designer/src/forms/LayoutEditor/LayoutEditor.py.diff?tr1=1.64&tr2=1.65&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnue/designer/src/forms/LayoutEditor/WidgetHandler.py.diff?tr1=1.10&tr2=1.11&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnue/designer/src/forms/LayoutEditor/WidgetHighlighter.py.diff?tr1=1.5&tr2=1.6&r1=text&r2=text

Patches:
Index: gnue/designer/src/base/MenuBar.py
diff -c gnue/designer/src/base/MenuBar.py:1.37 
gnue/designer/src/base/MenuBar.py:1.38
*** gnue/designer/src/base/MenuBar.py:1.37      Mon Feb 17 02:32:50 2003
--- gnue/designer/src/base/MenuBar.py   Sun Mar 30 12:17:00 2003
***************
*** 186,192 ****
  
       self._tools = wxMenu()
       for location in self._toolMenuOrder:
!      
         if location == "":
           self._tools.AppendSeparator()
           continue
--- 186,192 ----
  
       self._tools = wxMenu()
       for location in self._toolMenuOrder:
! 
         if location == "":
           self._tools.AppendSeparator()
           continue
Index: gnue/designer/src/forms/Instance.py
diff -c gnue/designer/src/forms/Instance.py:1.34 
gnue/designer/src/forms/Instance.py:1.35
*** gnue/designer/src/forms/Instance.py:1.34    Wed Mar 19 01:06:08 2003
--- gnue/designer/src/forms/Instance.py Sun Mar 30 12:17:00 2003
***************
*** 138,153 ****
  
  
    def onModifyObject(self, event):
      object = event.object
!     # TODO: Maintain all those fun dicts/lists created in inventoryObject()
  
  
    def onDeleteObject(self, event):
      object = event.object
      if object._type == 'GFPage':
        self._pages.remove(object)
  
!     # TODO: Maintain all those fun dicts/lists created in inventoryObject()
  
  
    def createTools(self):
--- 138,181 ----
  
  
    def onModifyObject(self, event):
+ 
      object = event.object
! 
!     #
!     # Maintain all those fun dicts/lists created in inventoryObject()
!     #
!     if object._type == 'GFBlock':
!       try:
!         del self.rootObject._blockMap[old['name']]
!       except KeyError:
!         pass
!       self.rootObject._blockMap[object.name] = object
! 
!     elif object._type == 'GFField':
!       block = object.findParentOfType('GFBlock')
!       try:
!         del block._fieldMap[old['name']]
!       except KeyError:
!         pass
!       block._fieldMap[object.name] = object
  
  
    def onDeleteObject(self, event):
+     print "Instance.onDeleteObject"
      object = event.object
      if object._type == 'GFPage':
        self._pages.remove(object)
  
!     # Maintain all those fun dicts/lists created in inventoryObject()
!     if object._type == 'GFBlock':
!       del self.rootObject._blockMap[object.name]
!     elif object._type == 'GFField':
!       del object.findParentOfType('GFBlock')._fieldMap[object.name]
!     elif isinstance(object, GFObjects.GFPage) and \
!         object._parent == self.rootObject:
!       del self._pages[object]
! 
!     object._popupMenu = ObjectMenu(self, object)
  
  
    def createTools(self):
***************
*** 205,221 ****
          logic.append(child)
        else:
          other.append(child)
!       
!   
!     if len(logic[0]._children): 
        valid = 1
!     else: 
!       valid = 0
!       
      if not valid: 
        if wxMessageDialog(self, 
            _('The form definition you are about to save\n') +
!           _('does not appear to be a working definition.') +
            _('\n\nIf you save an incomplete definition, you\n') + 
            _('may not be able to reopen it in Designer.'),
               _("Incomplete Form Definition"), wxYES_NO|wxICON_QUESTION 
).ShowModal() == wxID_NO:
--- 233,250 ----
          logic.append(child)
        else:
          other.append(child)
! 
! 
!     # Do a little sanity check before saving...
!     if len(logic[0]._children):
        valid = 1
!     else:
!       valid = 0  # No blocks! :(
! 
      if not valid: 
        if wxMessageDialog(self, 
            _('The form definition you are about to save\n') +
!           _('does not appear to be a workable definition.') +
            _('\n\nIf you save an incomplete definition, you\n') + 
            _('may not be able to reopen it in Designer.'),
               _("Incomplete Form Definition"), wxYES_NO|wxICON_QUESTION 
).ShowModal() == wxID_NO:
***************
*** 251,258 ****
              'block': self.visualEditor.block,
              'object': self._currentObject}
  
- #  # Hack having to do with UIwxpython import
- #  def uiEventTrap(self, event):
- #    pass
  
  
--- 280,284 ----
Index: gnue/designer/src/forms/LayoutEditor/DisplayDropTarget.py
diff -c gnue/designer/src/forms/LayoutEditor/DisplayDropTarget.py:1.10 
gnue/designer/src/forms/LayoutEditor/DisplayDropTarget.py:1.11
*** gnue/designer/src/forms/LayoutEditor/DisplayDropTarget.py:1.10      Mon Feb 
17 02:32:51 2003
--- gnue/designer/src/forms/LayoutEditor/DisplayDropTarget.py   Sun Mar 30 
12:17:00 2003
***************
*** 179,186 ****
          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
--- 179,186 ----
          elif params['Type'] in ('selectedWidgets',):
            xshift = x - int(attributes['startingX'])
            yshift = y - int(attributes['startingY'])
!           for widget in self.editor._currentSelection:
!             widget._widgetHandler.relativeMove(xshift,yshift)
          else:
            parent = self.editor.page
            nextY += 1
Index: gnue/designer/src/forms/LayoutEditor/LayoutEditor.py
diff -c gnue/designer/src/forms/LayoutEditor/LayoutEditor.py:1.64 
gnue/designer/src/forms/LayoutEditor/LayoutEditor.py:1.65
*** gnue/designer/src/forms/LayoutEditor/LayoutEditor.py:1.64   Wed Mar 19 
01:06:08 2003
--- gnue/designer/src/forms/LayoutEditor/LayoutEditor.py        Sun Mar 30 
12:17:00 2003
***************
*** 89,94 ****
--- 89,95 ----
  
      self._currentObject = None
      self.mode = 'move'
+     self.__drawing = 0
      self.__x = 0
      self.__y = 0
      self.__ox = 0
***************
*** 150,165 ****
    def onSetCurrentObject (self, event):
      object = event.object
      handler = event.originator
      self._currentObject = object
!     if object == None:
!       for o in self._currentSelection.keys():
!         o.setSelected(0)
!       return
! ##    if hasattr(object, '_widgetHandler'):
! ##      self.propBar.setCurrentObject(object)
      if handler != "Forms::LayoutEditor":
        self._setCurrentPage(object)
      self._setCurrentBlock(object)
      self._setFeedback()
  
    def _setCurrentBlock(self,object):
--- 151,168 ----
    def onSetCurrentObject (self, event):
      object = event.object
      handler = event.originator
+ 
+     try:
+       selection = event.selection
+     except:
+       selection = [object]
+ 
      self._currentObject = object
! 
      if handler != "Forms::LayoutEditor":
        self._setCurrentPage(object)
      self._setCurrentBlock(object)
+     self._setSelection(object, selection)
      self._setFeedback()
  
    def _setCurrentBlock(self,object):
***************
*** 171,178 ****
          block = object._block
      if block:
        self.block = block
-       print self
-       print "Setting current block to %s" % self.block
        self.blockCombo.SetValue(block.name)
  ##      self._setFeedback()
  
--- 174,179 ----
***************
*** 242,257 ****
          pass
  
  
!   def __setCurrentObject(self,object):
!     if hasattr(object, '_widgetHandler'):
!       self._currentSelection[object._widgetHandler] = 1
!       object._widgetHandler.setSelected(1)
  
  
    def onCreateObject (self, event):
      object = event.object
      handler = event.originator
!     self._currentSelection = {}
      if object == None:
        return
  
--- 243,270 ----
          pass
  
  
!   def _setSelection(self, focus, objects):
! 
!     for key in self._currentSelection:
!       if key not in objects:
!         try:
!           key._widgetHandler.setSelected(0)
!         except AttributeError:
!           pass
! 
! 
!     for object in objects:
!       if hasattr(object, '_widgetHandler'):
!         self._currentSelection.append(object)
!         object._widgetHandler.setSelected(1, object == focus)
! 
!     self._currentSelection = objects[:]
  
  
    def onCreateObject (self, event):
      object = event.object
      handler = event.originator
! ##    self._currentSelection = []
      if object == None:
        return
  
***************
*** 274,281 ****
    def onModifyObject (self, event):
      object = event.object
      handler = event.originator
-     if object == None:
-       return
  
      # TODO: adjust label width to match new length...this shouldn't be here
      if object._type == 'GFLabel':
--- 287,292 ----
***************
*** 312,317 ****
--- 323,329 ----
  
  
    def onDeleteObject (self, event):
+ 
      object = event.object
      handler = event.originator
  
***************
*** 329,338 ****
          self.notebook.DeletePage(index)
  
      if hasattr(object, '_widgetHandler') and object._widgetHandler != None:
!       try:
!         del self._currentSelection[object._widgetHandler]
!       except KeyError:
!         pass
  
        for i in range(len(self.widgetList)):
          if self.widgetList[i] == object:
--- 341,349 ----
          self.notebook.DeletePage(index)
  
      if hasattr(object, '_widgetHandler') and object._widgetHandler != None:
!       if object in self._currentSelection:
!         object._widgetHandler.setSelected(0)
!         del self._currentSelection[self._currentSelection.index(object)]
  
        for i in range(len(self.widgetList)):
          if self.widgetList[i] == object:
***************
*** 357,363 ****
  
  
    def drawPage(self, page):
!     self._currentSelection = {}
      self.page = page
  
      try:
--- 368,374 ----
  
  
    def drawPage(self, page):
!     self._currentSelection = []
      self.page = page
  
      try:
***************
*** 413,418 ****
--- 424,431 ----
        page.walk(self.__drawItem)
  
  
+ ###    coverPanel = TransparentPanel(self, self.panel)
+ 
      EVT_CHAR(self.panel, self.keyTrap)
      EVT_LEFT_DOWN(self.panel, self.OnLeftDown)
      EVT_MOTION(self.panel, self.OnMotion)
***************
*** 446,463 ****
        
        # TODO: This segfaults us... yay!!!
        widget.phaseInit(widget._buildObject())
!       
        object._widget._object = object
        object._widgetHandler.initialize(object._widget)
-       if not len(self._currentSelection.keys()):
-         self._currentSelection = {object._widgetHandler:1}
-         object._widgetHandler.setSelected(0)
        self.widgetList.append(object)
  
    def OnSize(self, event):
- ##    self.propBar.SetSize(wxSize(self.GetClientSize().x, 
self.propBar.GetSize().y))
- ##    self.propBar.SetPosition(wxPoint(0, self.GetClientSize().y - 
self.propBar.GetSize().y))
- ##    self.notebook.SetSize(wxSize(self.GetClientSize().x-8, 
self.GetClientSize().y - 8 - self.propBar.GetSize().y))
      self.notebook.SetSize(wxSize(self.GetClientSize().x-8, 
self.GetClientSize().y - 8))# - self.propBar.GetSize().y))
  
    def OnPageSelected(self, event):
--- 459,470 ----
        
        # TODO: This segfaults us... yay!!!
        widget.phaseInit(widget._buildObject())
! 
        object._widget._object = object
        object._widgetHandler.initialize(object._widget)
        self.widgetList.append(object)
  
    def OnSize(self, event):
      self.notebook.SetSize(wxSize(self.GetClientSize().x-8, 
self.GetClientSize().y - 8))# - self.propBar.GetSize().y))
  
    def OnPageSelected(self, event):
***************
*** 471,477 ****
      # Save starting coordinates for cross-selection box
      x, y = event.GetPositionTuple()
  
!     self.panel.SetCursor(wxCROSS_CURSOR)
  
  ##    x = int(x / self.gridWidth) * self.gridWidth
  ##    y = int(y / self.gridHeight) * self.gridHeight
--- 478,484 ----
      # Save starting coordinates for cross-selection box
      x, y = event.GetPositionTuple()
  
!     self.__drawing = 1
  
  ##    x = int(x / self.gridWidth) * self.gridWidth
  ##    y = int(y / self.gridHeight) * self.gridHeight
***************
*** 500,506 ****
  
    def OnMotion(self, event):
      # draw cross-selection box
!     if event.LeftIsDown():
        x, y = event.GetPositionTuple()
        self.xorBox(self.__x, self.__y, x, y, self.__ox, self.__oy)
  
--- 507,518 ----
  
    def OnMotion(self, event):
      # draw cross-selection box
!     if self.__drawing and event.LeftIsDown():
! 
!       if self.__drawing == 1:
!         self.panel.SetCursor(wxCROSS_CURSOR)
!         self.__drawing = 2
! 
        x, y = event.GetPositionTuple()
        self.xorBox(self.__x, self.__y, x, y, self.__ox, self.__oy)
  
***************
*** 512,530 ****
  
    def OnLeftUp(self, event):
  
!     for selection in self._currentSelection.keys():
!       selection.setSelected(0)
  
-     self._currentSelection = {}
  
!     if self.__ox != None:
        self.xorBox(self.__x, self.__y, self.__ox, self.__oy)
        self.__ox = None
        self.__oy = None
  
!     x, y = event.GetPositionTuple()
  
      # Set x1,y1 to be smaller coordinates, and x2,y2 to be larger
      x1, x2 = order(int(self.__x / self.gridWidth), int(x / self.gridWidth))
      y1, y2 = order(int(self.__y / self.gridHeight),int(y / self.gridHeight))
  
--- 524,541 ----
  
    def OnLeftUp(self, event):
  
!     selection = []
  
  
!     if self.__drawing and self.__ox is not None:
        self.xorBox(self.__x, self.__y, self.__ox, self.__oy)
        self.__ox = None
        self.__oy = None
  
!     self.__drawing = 0
  
      # Set x1,y1 to be smaller coordinates, and x2,y2 to be larger
+     x, y = event.GetPositionTuple()
      x1, x2 = order(int(self.__x / self.gridWidth), int(x / self.gridWidth))
      y1, y2 = order(int(self.__y / self.gridHeight),int(y / self.gridHeight))
  
***************
*** 540,546 ****
      if self.mode == 'move':
        if areaSelected:
          # We are selecting an area
!         self.page.walk(self.selectWidgetInArea, x1, y1, x2, y2)
  
      elif self.mode == 'positioning':
  
--- 551,569 ----
      if self.mode == 'move':
        if areaSelected:
          # We are selecting an area
!         self.page.walk(self.selectWidgetInArea, x1, y1, x2, y2, selection)
!         try:
!           object = selection[-1]
!         except IndexError:
!           object = self.page
!         self.dispatchEvent('ObjectSelected',
!                          object = object,
!                          originator = "Forms::LayoutEditor",
!                          selection = selection)
!       else:
!         self.dispatchEvent('ObjectSelected',
!                          object = self.page,
!                          originator = "Forms::LayoutEditor")
  
      elif self.mode == 'positioning':
  
***************
*** 555,567 ****
  
  
  
! 
!   def selectWidgetInArea(self, object, x1, y1, x2, y2):
      try:
        if x1 <= object.Char__x <= x2 and \
           y1 <= object.Char__y <= y2:
!         self._currentSelection[object._widgetHandler] = 1
!         object._widgetHandler.setSelected(1)
      except AttributeError:
        # Not all child objects have coordinates (x,y)
        pass
--- 578,589 ----
  
  
  
!   def selectWidgetInArea(self, object, x1, y1, x2, y2, selection):
      try:
        if x1 <= object.Char__x <= x2 and \
           y1 <= object.Char__y <= y2:
!         if object not in selection:
!           selection.append(object)
      except AttributeError:
        # Not all child objects have coordinates (x,y)
        pass
***************
*** 593,637 ****
      self.panel.PopupMenu(menu, event.GetPosition())
  
  
-   def clearSelections(self):
-     for widget in self._currentSelection.keys():
-       widget.setSelected(0)
-     self._currentSelection = {}
- 
- 
    def keyTrap(self, event):
      if event.KeyCode() in (WXK_LEFT, WXK_RIGHT, WXK_UP, WXK_DOWN) and \
!       len(self._currentSelection.keys()):
        if event.AltDown(): # or event.MetaDown():
          if event.KeyCode() == WXK_LEFT:
!           for widget in self._currentSelection.keys():
!             widget.relativeResize(-1,0)
          if event.KeyCode() == WXK_RIGHT:
!           for widget in self._currentSelection.keys():
!             widget.relativeResize(1,0)
          if event.KeyCode() == WXK_UP:
!           for widget in self._currentSelection.keys():
!             widget.relativeResize(0,-1)
          if event.KeyCode() == WXK_DOWN:
!           for widget in self._currentSelection.keys():
!             widget.relativeResize(0,1)
        else:
          if event.KeyCode() == WXK_LEFT:
!           for widget in self._currentSelection.keys():
!             widget.relativeMove(-1,0)
          if event.KeyCode() == WXK_RIGHT:
!           for widget in self._currentSelection.keys():
!             widget.relativeMove(1,0)
          if event.KeyCode() == WXK_UP:
!           for widget in self._currentSelection.keys():
!             widget.relativeMove(0,-1)
          if event.KeyCode() == WXK_DOWN:
!           for widget in self._currentSelection.keys():
!             widget.relativeMove(0,1)
      elif event.KeyCode() == WXK_DELETE and \
!          len(self._currentSelection.keys()):
!       for object in self._currentSelection.keys():
!         self.dispatchEvent('ObjectDeleted', object=object.object,
                             originator=self)
  
    def startPrePositioningTemplate(self, template):
--- 615,655 ----
      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):
        if event.AltDown(): # or event.MetaDown():
+         resize = None
          if event.KeyCode() == WXK_LEFT:
!           resize = (-1,0)
          if event.KeyCode() == WXK_RIGHT:
!           resize = (1,0)
          if event.KeyCode() == WXK_UP:
!           resize = (0,-1)
          if event.KeyCode() == WXK_DOWN:
!           resize = (0,1)
!         if resize:
!           for widget in self._currentSelection:
!             widget._widgetHandler.relativeResize(*resize)
        else:
+         pos = None
          if event.KeyCode() == WXK_LEFT:
!           pos = (-1,0)
          if event.KeyCode() == WXK_RIGHT:
!           pos = (1,0)
          if event.KeyCode() == WXK_UP:
!           pos = (0,-1)
          if event.KeyCode() == WXK_DOWN:
!           pos = (0,1)
! 
!         if pos:
!           for widget in self._currentSelection:
!             widget._widgetHandler.relativeMove(*pos)
! 
      elif event.KeyCode() == WXK_DELETE and \
!          len(self._currentSelection):
!       for object in self._currentSelection:
!         self.dispatchEvent('ObjectDeleted', object=object,
                             originator=self)
  
    def startPrePositioningTemplate(self, template):
***************
*** 660,664 ****
--- 678,724 ----
  
      def Notify(self):
        self.__method(*self.__args, **self.__params)
+ 
+ 
+ 
+ class TransparentPanel:
+   def __init__(self, layoutEditor, parent):
+     self.parent = parent
+     self.editor = layoutEditor
+     self.bitmap = wxEmptyBitmap(*self.parent.GetClientSizeTuple())
+ 
+ class TransparentPanelXXXX(wxWindow):
+   def __init__(self, layoutEditor, parent):
+     wxWindow.__init__(self, parent, -1, pos=wxPoint(0,0), 
size=parent.GetClientSize())
+ #    EVT_PAINT(self, self.OnPaint)
+     EVT_ERASE_BACKGROUND(self, self.OnEraseBackground)
+ #    parent.Refresh()
+ 
+   def OnEraseBackground(self, event):
+     print "Painting"
+     pass
+ 
+ 
+   def OnPaint(self, event):
+     object = wxPyTypeCast(event.GetEventObject(),'wxWindow')
+     dc = wxPaintDC(object)
+     dc.BeginDrawing()
+     dc.SetBackgroundMode(wxTRANSPARENT)
+     dc.SetClippingRegion(5,5,10,50)
+ ##    
dc.SetBackground(wxBrush(self.parent.GetBackgroundColour(),wxTRANSPARENT))
+ ##    dc.SetBackground(wxBrush(wxBLACK,wxTRANSPARENT))
+ 
+ ##    dc.Clear()
+ ##    if self.focused:
+ ##      dc.SetPen(wxPen(activeBorderColor))
+ ##    else:
+ ##      dc.SetPen(wxPen(inactiveBorderColor))
+ ##    x1,y1 = object.GetSizeTuple()
+ ##    dc.DrawRectangle(0,0,x1,y1)
+ ##    if self.focused:
+ ##      dc.DrawRectangle(1,1,x1-2,y1-2)
+ 
+     dc.EndDrawing()
+ 
  
  
Index: gnue/designer/src/forms/LayoutEditor/WidgetHandler.py
diff -c gnue/designer/src/forms/LayoutEditor/WidgetHandler.py:1.10 
gnue/designer/src/forms/LayoutEditor/WidgetHandler.py:1.11
*** gnue/designer/src/forms/LayoutEditor/WidgetHandler.py:1.10  Mon Feb 17 
02:32:52 2003
--- gnue/designer/src/forms/LayoutEditor/WidgetHandler.py       Sun Mar 30 
12:17:00 2003
***************
*** 1,6 ****
  #
- # Copyright 2001-2003 Free Software Foundation
- #
  # This file is part of GNU Enterprise.
  #
  # GNU Enterprise is free software; you can redistribute it
--- 1,4 ----
***************
*** 18,23 ****
--- 16,23 ----
  # write to the Free Software Foundation, Inc., 59 Temple Place
  # - Suite 330, Boston, MA 02111-1307, USA.
  #
+ # Copyright 2001-2003 Free Software Foundation
+ #
  # FILE:
  # WidgetHandler.py
  #
***************
*** 109,117 ****
         widget.Refresh()
  
  
!   def setSelected(self, selected):
      self.selected = selected
!     self.highlightBox.setSelected(selected)
  
  
    def setAllChildren(self, event, widget, trap):
--- 109,118 ----
         widget.Refresh()
  
  
!   def setSelected(self, selected, focused=1):
      self.selected = selected
!     self.focused = focused
!     self.highlightBox.setSelected(selected, focused)
  
  
    def setAllChildren(self, event, widget, trap):
***************
*** 131,151 ****
      event.Skip()
  
  
-   def OnLeftDown(self, event):
-     self.mouseStartX, self.mouseStartY = event.GetPositionTuple()
-     self._iMoved = 0
- 
-     if not self.instance._currentSelection.has_key(self):
-       self.instance._currentSelection[self] = 1
-       
self.instance._instance.dispatchEvent('ObjectSelected',object=self.object,originator="Forms::LayoutEditor")
-       self.setSelected(1)
-       self._alreadySelected = 0
-     else:
-       self._alreadySelected = 1
- 
-     event.Skip()
- 
- 
    def beginDragDrop(self, event):
  
      # Drag and drop TODO: This needs changed to pull all selected widgets
--- 132,137 ----
***************
*** 175,195 ****
      event.Skip()
  
  
    def OnLeftUp(self, event):
      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()
  
  
--- 161,191 ----
      event.Skip()
  
  
+   def OnLeftDown(self, event):
+     self.mouseStartX, self.mouseStartY = event.GetPositionTuple()
+     self._iMoved = 0
+ 
+     if event.ShiftDown():
+       selections = self.instance._currentSelection[:]
+     else:
+       selections = []
+ 
+     if self.object in selections:
+       if event.ShiftDown():
+         del selections[selections.index(self.object)]
+     else:
+       selections.append(self.object)
+ 
+     self.instance._instance.dispatchEvent('ObjectSelected',object=self.object,
+                                            originator="Forms::LayoutEditor",
+                                            selection=selections)
+     event.Skip()
+ 
+ 
    def OnLeftUp(self, event):
      if self._iMoved:
        self._iMoved = 0
  
      event.Skip()
  
  
***************
*** 252,258 ****
          x = self.widget.GetPosition().x
          width = self.widget.GetSize().width + self.instance.gridWidth
  
-       self.instance.clearSelections()
        self._popup_editor = PopupEditor(self.instance.workspace,
            self._endPopupEditor,
            x + self.instance.panel.GetPosition().x,
--- 248,253 ----
Index: gnue/designer/src/forms/LayoutEditor/WidgetHighlighter.py
diff -c gnue/designer/src/forms/LayoutEditor/WidgetHighlighter.py:1.5 
gnue/designer/src/forms/LayoutEditor/WidgetHighlighter.py:1.6
*** gnue/designer/src/forms/LayoutEditor/WidgetHighlighter.py:1.5       Mon Feb 
17 02:32:52 2003
--- gnue/designer/src/forms/LayoutEditor/WidgetHighlighter.py   Sun Mar 30 
12:17:00 2003
***************
*** 1,6 ****
  #
- # Copyright 2001-2003 Free Software Foundation
- #
  # This file is part of GNU Enterprise.
  #
  # GNU Enterprise is free software; you can redistribute it
--- 1,4 ----
***************
*** 18,23 ****
--- 16,23 ----
  # write to the Free Software Foundation, Inc., 59 Temple Place
  # - Suite 330, Boston, MA 02111-1307, USA.
  #
+ # Copyright 2001-2003 Free Software Foundation
+ #
  # FILE:
  # WidgetHighlighter.py
  #
***************
*** 30,35 ****
--- 30,37 ----
  from Utils import *
  from gnue.common.apps import GDebug
  
+ inactiveBorderColor = wxBLACK
+ activeBorderColor = wxBLUE
  
  #
  #
***************
*** 38,43 ****
--- 40,46 ----
  
    def __init__(self, parent):
      self.selected = 0
+     self.focused = 0
      self.parent = parent
      self.x1 = 1
      self.y1 = 1
***************
*** 47,69 ****
      self.east = None
      self.north = None
      self.south = None
-     panelColor = parent.GetBackgroundColour()
-     self.inactiveBorderColor = wxColour(panelColor.Red()-16,
-                  panelColor.Green()-16,
-                  panelColor.Blue()-16)
-     self.activeBorderColor = wxBLUE
  
!     
    # Draw the lines comprising the highlights
    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)
      self.west = wxWindow(self.parent, -1)
      for object in (self.north,self.south,self.east,self.west):
        EVT_PAINT(object, self.OnPaint)
      self.setBoundary(self.x1, self.y1, self.x2, self.y2)
  
  
--- 50,79 ----
      self.east = None
      self.north = None
      self.south = None
  
! 
    # Draw the lines comprising the highlights
    def createHighlights(self):
      if self.north:
        self.Destroy()
+ 
+     self.northb = wxWindow(self.parent, -1)
+     self.southb = wxWindow(self.parent, -1)
+     self.eastb = wxWindow(self.parent, -1)
+     self.westb = wxWindow(self.parent, -1)
+     for object in (self.northb,self.southb,self.eastb,self.westb):
+       EVT_PAINT(object, self.OnPaintBorder)
+ 
+ 
      self.north = wxWindow(self.parent, -1)
      self.south = wxWindow(self.parent, -1)
      self.east = wxWindow(self.parent, -1)
      self.west = wxWindow(self.parent, -1)
      for object in (self.north,self.south,self.east,self.west):
        EVT_PAINT(object, self.OnPaint)
+ 
+ 
+ 
      self.setBoundary(self.x1, self.y1, self.x2, self.y2)
  
  
***************
*** 82,89 ****
      self.north = None
      self.south = None
  
  
!   def setBoundary(self, x1, y1, x2, y2):
       self.x1 = x1
       self.y1 = y1
       self.x2 = x2
--- 92,112 ----
      self.north = None
      self.south = None
  
+     if self.westb:
+       self.westb.Destroy()
+     if self.eastb:
+       self.eastb.Destroy()
+     if self.northb:
+       self.northb.Destroy()
+     if self.southb:
+       self.southb.Destroy()
+     self.westb = None
+     self.eastb = None
+     self.northb = None
+     self.southb = None
  
! 
!   def setBoundaryXXXXXX(self, x1, y1, x2, y2):
       self.x1 = x1
       self.y1 = y1
       self.x2 = x2
***************
*** 91,106 ****
  
       if self.west:
         self.west.SetPosition(wxPoint(x1,y1))
!        self.west.SetSize(wxSize(1,y2-y1+1))
       if self.east:
         self.east.SetPosition(wxPoint(x2,y1))
!        self.east.SetSize(wxSize(1,y2-y1+1))
       if self.south:
         self.south.SetPosition(wxPoint(x1,y2))
!        self.south.SetSize(wxSize(x2-x1+1,1))
       if self.north:
         self.north.SetPosition(wxPoint(x1,y1))
!        self.north.SetSize(wxSize(x2-x1+1,1))
  
    def GetChildren(self):
      if self.west:
--- 114,166 ----
  
       if self.west:
         self.west.SetPosition(wxPoint(x1,y1))
!        self.west.SetSize(wxSize(2,y2-y1+2))
       if self.east:
         self.east.SetPosition(wxPoint(x2,y1))
!        self.east.SetSize(wxSize(2,y2-y1+2))
       if self.south:
         self.south.SetPosition(wxPoint(x1,y2))
!        self.south.SetSize(wxSize(x2-x1+2,2))
       if self.north:
         self.north.SetPosition(wxPoint(x1,y1))
!        self.north.SetSize(wxSize(x2-x1+2,2))
! 
! 
!   def setBoundary(self, x1, y1, x2, y2):
!      self.x1 = x1
!      self.y1 = y1
!      self.x2 = x2
!      self.y2 = y2
! 
!      mx = (x2 - x1)/2 + x1 - 1
!      my = (y2 - y1)/2 + y1 - 1
! 
!      if self.west:
!        self.west.SetPosition(wxPoint(x1 - 3,my))
!        self.west.SetSize(wxSize(4,4))
!      if self.east:
!        self.east.SetPosition(wxPoint(x2,my))
!        self.east.SetSize(wxSize(4,4))
!      if self.south:
!        self.south.SetPosition(wxPoint(mx,y2))
!        self.south.SetSize(wxSize(4,4))
!      if self.north:
!        self.north.SetPosition(wxPoint(mx,y1 - 3))
!        self.north.SetSize(wxSize(4,4))
! 
!      if self.west:
!        self.westb.SetPosition(wxPoint(x1,y1))
!        self.westb.SetSize(wxSize(1,y2-y1+1))
!      if self.east:
!        self.eastb.SetPosition(wxPoint(x2,y1))
!        self.eastb.SetSize(wxSize(1,y2-y1+1))
!      if self.south:
!        self.southb.SetPosition(wxPoint(x1,y2))
!        self.southb.SetSize(wxSize(x2-x1+1,1))
!      if self.north:
!        self.northb.SetPosition(wxPoint(x1,y1))
!        self.northb.SetSize(wxSize(x2-x1+1,1))
! 
  
    def GetChildren(self):
      if self.west:
***************
*** 115,123 ****
    def Destroy(self):
      self.deleteHighlights()
  
!   def setSelected (self, selected):
      if selected:
        self.selected = selected
        self.createHighlights()
        self.Refresh()
      else:
--- 175,184 ----
    def Destroy(self):
      self.deleteHighlights()
  
!   def setSelected (self, selected, focused):
      if selected:
        self.selected = selected
+       self.focused = focused
        self.createHighlights()
        self.Refresh()
      else:
***************
*** 126,143 ****
    def reconfigure(self, event):
      self.Refresh()
  
!   def OnPaint(self, event):
      object = wxPyTypeCast(event.GetEventObject(),'wxWindow')
      dc = wxPaintDC(object)
      dc.BeginDrawing()
      dc.SetBackground(wxBrush(self.parent.GetBackgroundColour(),wxTRANSPARENT))
      dc.Clear()
!     if self.selected:
!       dc.SetPen(wxPen(self.activeBorderColor))
      else:
!       dc.SetPen(wxPen(self.inactiveBorderColor))
      x1,y1 = object.GetSizeTuple()
!     dc.DrawRectangle(0,0,x1,y1)
      dc.EndDrawing()
  
    def OnEraseBackground(self, event):
--- 187,249 ----
    def reconfigure(self, event):
      self.Refresh()
  
!   def OnPaintXXXX(self, event):
      object = wxPyTypeCast(event.GetEventObject(),'wxWindow')
      dc = wxPaintDC(object)
      dc.BeginDrawing()
      dc.SetBackground(wxBrush(self.parent.GetBackgroundColour(),wxTRANSPARENT))
      dc.Clear()
!     if self.focused:
!       dc.SetPen(wxPen(activeBorderColor))
      else:
!       dc.SetPen(wxPen(inactiveBorderColor))
      x1,y1 = object.GetSizeTuple()
! ##    dc.DrawRectangle(0,0,x1,y1)
! ##    if self.focused:
! ##      dc.DrawRectangle(1,1,x1-2,y1-2)
! 
!     dc.EndDrawing()
! 
!   def OnPaint(self, event):
!     if not self.focused: return
!     object = wxPyTypeCast(event.GetEventObject(),'wxWindow')
!     dc = wxPaintDC(object)
!     dc.BeginDrawing()
! ##    
dc.SetBackground(wxBrush(self.parent.GetBackgroundColour(),wxTRANSPARENT))
!     if self.focused:
!       dc.SetBackground(wxBrush(activeBorderColor,wxTRANSPARENT))
!     else:
!       dc.SetBackground(wxBrush(inactiveBorderColor,wxTRANSPARENT))
! 
!     dc.Clear()
! ##    if self.focused:
! ##      dc.SetPen(wxPen(activeBorderColor))
! ##    else:
! ##      dc.SetPen(wxPen(inactiveBorderColor))
! ##    x1,y1 = object.GetSizeTuple()
! ##    dc.DrawRectangle(0,0,x1,y1)
! ##    if self.focused:
! ##      dc.DrawRectangle(1,1,x1-2,y1-2)
! 
!     dc.EndDrawing()
! 
! 
!   def OnPaintBorder(self, event):
!     object = wxPyTypeCast(event.GetEventObject(),'wxWindow')
!     dc = wxPaintDC(object)
!     dc.BeginDrawing()
! ##    
dc.SetBackground(wxBrush(self.parent.GetBackgroundColour(),wxTRANSPARENT))
!     dc.SetBackground(wxBrush(wxBLACK,wxTRANSPARENT))
!     dc.Clear()
! ##    if self.focused:
! ##      dc.SetPen(wxPen(activeBorderColor))
! ##    else:
! ##      dc.SetPen(wxPen(inactiveBorderColor))
! ##    x1,y1 = object.GetSizeTuple()
! ##    dc.DrawRectangle(0,0,x1,y1)
! ##    if self.focused:
! ##      dc.DrawRectangle(1,1,x1-2,y1-2)
! 
      dc.EndDrawing()
  
    def OnEraseBackground(self, event):




reply via email to

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