[Commits] (john) Bug #2034 Hook up 'delete' in the Edit menu or
remove it
commits at osafoundation.org
commits at osafoundation.org
Mon Oct 4 17:33:17 PDT 2004
Commit by: john
Modified files:
chandler/parcels/osaf/views/main/Main.py 1.70 1.71
chandler/parcels/osaf/views/main/parcel.xml 1.117 1.118
chandler/parcels/osaf/views/main/SideBar.py 1.21 1.22
chandler/parcels/osaf/framework/blocks/ControlBlocks.py 1.129 1.130
chandler/parcels/osaf/framework/blocks/DynamicContainerBlocks.py 1.21 1.22
chandler/parcels/osaf/framework/blocks/parcel.xml 1.120 1.121
chandler/parcels/osaf/framework/blocks/Views.py 1.44 1.45
chandler/parcels/osaf/framework/blocks/Events/parcel.xml 1.56 1.57
Log message:
Bug #2034 Hook up 'delete' in the Edit menu or remove it
ViewCVS links:
http://cvs.osafoundation.org/index.cgi/chandler/parcels/osaf/views/main/Main.py.diff?r1=text&tr1=1.70&r2=text&tr2=1.71
http://cvs.osafoundation.org/index.cgi/chandler/parcels/osaf/views/main/parcel.xml.diff?r1=text&tr1=1.117&r2=text&tr2=1.118
http://cvs.osafoundation.org/index.cgi/chandler/parcels/osaf/views/main/SideBar.py.diff?r1=text&tr1=1.21&r2=text&tr2=1.22
http://cvs.osafoundation.org/index.cgi/chandler/parcels/osaf/framework/blocks/ControlBlocks.py.diff?r1=text&tr1=1.129&r2=text&tr2=1.130
http://cvs.osafoundation.org/index.cgi/chandler/parcels/osaf/framework/blocks/DynamicContainerBlocks.py.diff?r1=text&tr1=1.21&r2=text&tr2=1.22
http://cvs.osafoundation.org/index.cgi/chandler/parcels/osaf/framework/blocks/parcel.xml.diff?r1=text&tr1=1.120&r2=text&tr2=1.121
http://cvs.osafoundation.org/index.cgi/chandler/parcels/osaf/framework/blocks/Views.py.diff?r1=text&tr1=1.44&r2=text&tr2=1.45
http://cvs.osafoundation.org/index.cgi/chandler/parcels/osaf/framework/blocks/Events/parcel.xml.diff?r1=text&tr1=1.56&r2=text&tr2=1.57
Index: chandler/parcels/osaf/views/main/parcel.xml
diff -u chandler/parcels/osaf/views/main/parcel.xml:1.117 chandler/parcels/osaf/views/main/parcel.xml:1.118
--- chandler/parcels/osaf/views/main/parcel.xml:1.117 Mon Oct 4 16:52:30 2004
+++ chandler/parcels/osaf/views/main/parcel.xml Mon Oct 4 17:33:13 2004
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="iso-8859-1"?>
-<!-- $Revision: 1.117 $ -->
-<!-- $Date: 2004/10/04 23:52:30 $ -->
+<!-- $Revision: 1.118 $ -->
+<!-- $Date: 2004/10/05 00:33:13 $ -->
<!-- Copyright (c) 2003-2004 Open Source Applications Foundation -->
<!-- License: http://osafoundation.org/Chandler_0.1_license_terms.htm -->
@@ -336,7 +336,7 @@
<MenuItem itsName="NewNoteItem">
<blockName>NewNoteItem</blockName>
<title>Note</title>
- <accel>N</accel>
+ <accel>Ctrl+N</accel>
<helpString>Create a new Note</helpString>
<event itemref="doc:NewNote"/>
</MenuItem>
@@ -344,7 +344,7 @@
<MenuItem itsName="NewMessageItem">
<blockName>NewMessageItem</blockName>
<title>Message</title>
- <accel>M</accel>
+ <accel>Ctrl+M</accel>
<helpString>Create a new Message</helpString>
<event itemref="doc:NewMailMessage"/>
</MenuItem>
@@ -378,7 +378,7 @@
<MenuItem itsName="NewTabItem">
<blockName>NewTabItem</blockName>
<title>New Tab</title>
- <accel>T</accel>
+ <accel>Ctrl+T</accel>
<helpString>Open a new blank tab</helpString>
<event itemref="events:New"/>
</MenuItem>
@@ -400,7 +400,7 @@
<MenuItem itsName="CloseTabItem">
<blockName>CloseTabItem</blockName>
<title>Close Tab</title>
- <accel>W</accel>
+ <accel>Ctrl+W</accel>
<helpString>Close the current tab</helpString>
<event itemref="events:Close"/>
</MenuItem>
@@ -486,7 +486,7 @@
<MenuItem itsName="PrefsAccountsItem">
<blockName>PrefsAccountsItem</blockName>
<title>Accounts...</title>
- <accel>A</accel>
+ <accel>Ctrl+A</accel>
<helpString>Account Preferences</helpString>
<event itemref="events:EditAccountPreferences"/>
</MenuItem>
@@ -494,7 +494,7 @@
<MenuItem itsName="QuitItem">
<blockName>QuitItem</blockName>
<title>Quit</title>
- <accel>Q</accel>
+ <accel>Ctrl+Q</accel>
<helpString value="Quit Chandler"/>
<event itemref="events:Quit"/>
</MenuItem>
@@ -502,7 +502,7 @@
<MenuItem itsName="UndoItem">
<blockName>UndoItem</blockName>
<title>Undo</title>
- <accel>Z</accel>
+ <accel>Ctrl+Z</accel>
<event itemref="events:Undo"/>
<helpString value="Can't Undo"/>
</MenuItem>
@@ -510,7 +510,7 @@
<MenuItem itsName="RedoItem">
<blockName>RedoItem</blockName>
<title>Redo</title>
- <accel>Y</accel>
+ <accel>Ctrl+Y</accel>
<event itemref="events:Redo"/>
<helpString value="Can't Redo"/>
</MenuItem>
@@ -523,21 +523,21 @@
<MenuItem itsName="CutItem">
<blockName>CutItem</blockName>
<title>Cut</title>
- <accel>X</accel>
+ <accel>Ctrl+X</accel>
<event itemref="events:Cut"/>
</MenuItem>
<MenuItem itsName="CopyItem">
<blockName>CopyItem</blockName>
<title>Copy</title>
- <accel>C</accel>
+ <accel>Ctrl+C</accel>
<event itemref="events:Copy"/>
</MenuItem>
<MenuItem itsName="PasteItem">
<blockName>PasteItem</blockName>
<title>Paste</title>
- <accel>V</accel>
+ <accel>Ctrl+V</accel>
<event itemref="events:Paste"/>
</MenuItem>
@@ -1280,7 +1280,6 @@
<Table itsName="Sidebar"
itemClass="osaf.views.main.SideBar.Sidebar">
<contents itemref="doc:sidebarItemCollection"/>
- <selection itemref="content:AllView"/>
<elementDelegate>osaf.views.main.SideBar.SideBarDelegate</elementDelegate>
<columnHeadings></columnHeadings>
<columnData>displayName</columnData>
Index: chandler/parcels/osaf/framework/blocks/parcel.xml
diff -u chandler/parcels/osaf/framework/blocks/parcel.xml:1.120 chandler/parcels/osaf/framework/blocks/parcel.xml:1.121
--- chandler/parcels/osaf/framework/blocks/parcel.xml:1.120 Tue Sep 28 14:37:18 2004
+++ chandler/parcels/osaf/framework/blocks/parcel.xml Mon Oct 4 17:33:14 2004
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="iso-8859-1"?>
-<!-- $Revision: 1.120 $ -->
-<!-- $Date: 2004/09/28 21:37:18 $ -->
+<!-- $Revision: 1.121 $ -->
+<!-- $Date: 2004/10/05 00:33:14 $ -->
<!-- Copyright (c) 2003-2004 Open Source Applications Foundation -->
<!-- License: http://osafoundation.org/Chandler_0.1_license_terms.htm -->
@@ -769,9 +769,15 @@
<classes key="python">osaf.framework.blocks.ControlBlocks.Table</classes>
<superKinds itemref="docSchema:RectangularChild"/>
- <Attribute itsName="selectedColumn">
- <type itemref="String"/>
- <initialValue type="String"></initialValue>
+ <Attribute itsName="selection">
+ <cardinality>list</cardinality>
+ <type itemref="List"/>
+ <initialValue />
+ </Attribute>
+
+ <Attribute itsName="selectedItemToView">
+ <type itemref="SingleRef"/>
+ <initialValue itemref="None"/>
</Attribute>
<Attribute itsName="hideColumnHeadings">
@@ -786,7 +792,9 @@
<attributes itemref="docSchema:columnWidths"/>
<attributes itemref="docSchema:elementDelegate"/>
- <attributes itemref="docSchema:selection"/>
+ <attributes itemref="docSchema:Table/selection"/>
+ <attributes itemref="docSchema:Table/selectedItemToView"/>
+ <attributes itemref="docSchema:Table/hideColumnHeadings"/>
</Kind>
<!--
Index: chandler/parcels/osaf/framework/blocks/DynamicContainerBlocks.py
diff -u chandler/parcels/osaf/framework/blocks/DynamicContainerBlocks.py:1.21 chandler/parcels/osaf/framework/blocks/DynamicContainerBlocks.py:1.22
--- chandler/parcels/osaf/framework/blocks/DynamicContainerBlocks.py:1.21 Tue Sep 14 15:57:53 2004
+++ chandler/parcels/osaf/framework/blocks/DynamicContainerBlocks.py Mon Oct 4 17:33:14 2004
@@ -1,5 +1,5 @@
-__version__ = "$Revision: 1.21 $"
-__date__ = "$Date: 2004/09/14 22:57:53 $"
+__version__ = "$Revision: 1.22 $"
+__date__ = "$Date: 2004/10/05 00:33:14 $"
__copyright__ = "Copyright (c) 2004 Open Source Applications Foundation"
__license__ = "http://osafoundation.org/Chandler_0.1_license_terms.htm"
@@ -412,8 +412,8 @@
else:
assert (False)
title = block.title
- if len(block.accel) > 0:
- title = title + "\tCtrl+" + block.accel
+ if len (block.accel) > 0:
+ title = title + '\t' + block.accel
"""
When inserting ourself into a MenuItem, we must actually
Index: chandler/parcels/osaf/views/main/Main.py
diff -u chandler/parcels/osaf/views/main/Main.py:1.70 chandler/parcels/osaf/views/main/Main.py:1.71
--- chandler/parcels/osaf/views/main/Main.py:1.70 Mon Oct 4 16:27:20 2004
+++ chandler/parcels/osaf/views/main/Main.py Mon Oct 4 17:33:13 2004
@@ -1,5 +1,5 @@
-__version__ = "$Revision: 1.70 $"
-__date__ = "$Date: 2004/10/04 23:27:20 $"
+__version__ = "$Revision: 1.71 $"
+__date__ = "$Date: 2004/10/05 00:33:13 $"
__copyright__ = "Copyright (c) 2004 Open Source Applications Foundation"
__license__ = "http://osafoundation.org/Chandler_0.1_license_terms.htm"
@@ -95,24 +95,20 @@
# lookup our Request Select Events
rootPath = '//parcels/osaf/framework/blocks/Events/'
- requestSelectSidebarItem = Globals.repository.findPath \
- (rootPath + 'RequestSelectSidebarItem')
- requestSelectItem = Globals.repository.findPath \
- (rootPath + 'RequestSelectItem')
-
- # Tell the sidebar we want to go to the 'All' box
- args = {}
- args['itemName'] = 'AllView'
- contactKind = Contacts.ContactsParcel.getContactKind ()
- if newItem.isItemOf (contactKind):
- # go to Contacts for a new Contact
- args['itemName'] = 'ContactTableView'
- self.Post(requestSelectSidebarItem, args)
+ requestSelectSidebarItem = \
+ Globals.repository.findPath (rootPath + 'RequestSelectSidebarItem')
+ selectionChangedInsideActiveView = \
+ Globals.repository.findPath (rootPath + 'SelectionChangedInsideActiveView')
+
+ # Tell the sidebar we want to go to the All or contacts box
+ if newItem.isItemOf (Contacts.ContactsParcel.getContactKind ()):
+ itemName = 'ContactTableView'
+ else:
+ itemName = 'AllTableView'
+ self.Post(requestSelectSidebarItem, {'itemName':itemName})
# Tell the ActiveView to select our new item
- args = {}
- args['item'] = newItem
- self.Post(requestSelectItem, args)
+ self.Post (selectionChangedInsideActiveView, {'item':newItem})
def onNewEventUpdateUI (self, notification):
notification.data ['Enable'] = True
@@ -209,7 +205,7 @@
"""
sidebarPath = '//parcels/osaf/views/main/Sidebar'
sidebar = Globals.repository.findPath (sidebarPath)
- selectedBlock = sidebar.selection
+ selectedBlock = sidebar.contents [sidebar.widget.GetGridCursorRow ()]
assert selectedBlock, "No selected block in the Sidebar"
try:
selectionContents = selectedBlock.contents
@@ -346,16 +342,15 @@
return
# lookup the Request Select Event
- rootPath = '//parcels/osaf/framework/blocks/Events/'
- requestSelectItem = Globals.repository.findPath \
- (rootPath + 'RequestSelectItem')
+ selectionChangedInsideActiveView = \
+ Globals.repository.findPath ('//parcels/osaf/framework/blocks/Events/SelectionChangedInsideActiveView')
# Tell the ActiveView to select the collection
# It will pass the collection on to the Detail View.
- args = {}
- args['item'] = None
- args['collection'] = True
- self.Post(requestSelectItem, args)
+
+
+
+ self.Post (selectionChangedInsideActiveView, {'item':self.getSidebarSelectedCollection ()})
def onShareOrManageEventUpdateUI (self, notification):
"""
@@ -530,20 +525,15 @@
detail view """
rootPath = '//parcels/osaf/framework/blocks/Events/'
- requestSelectSidebarItem = Globals.repository.findPath \
- (rootPath + 'RequestSelectSidebarItem')
- requestSelectItem = Globals.repository.findPath \
- (rootPath + 'RequestSelectItem')
+ requestSelectSidebarItem = \
+ Globals.repository.findPath (rootPath + 'RequestSelectSidebarItem')
+ selectionChangedInsideActiveView = \
+ Globals.repository.findPath (rootPath + 'SelectionChangedInsideActiveView')
# Tell the sidebar we want to select this view
- args = {}
- args['item'] = view
- self.Post(requestSelectSidebarItem, args)
+ self.Post(requestSelectSidebarItem, {'item':view})
if showDetailView:
# Tell the ActiveView to select the collection
# It will pass the collection on to the Detail View.
- args = {}
- args['item'] = None
- args['collection'] = True
- self.Post(requestSelectItem, args)
+ self.Post (selectionChangedInsideActiveView, {'item':view})
Index: chandler/parcels/osaf/views/main/SideBar.py
diff -u chandler/parcels/osaf/views/main/SideBar.py:1.21 chandler/parcels/osaf/views/main/SideBar.py:1.22
--- chandler/parcels/osaf/views/main/SideBar.py:1.21 Mon Sep 27 11:37:28 2004
+++ chandler/parcels/osaf/views/main/SideBar.py Mon Oct 4 17:33:13 2004
@@ -1,5 +1,5 @@
-__version__ = "$Revision: 1.21 $"
-__date__ = "$Date: 2004/09/27 18:37:28 $"
+__version__ = "$Revision: 1.22 $"
+__date__ = "$Date: 2004/10/05 00:33:13 $"
__copyright__ = "Copyright (c) 2003-2004 Open Source Applications Foundation"
__license__ = "http://osafoundation.org/Chandler_0.1_license_terms.htm"
@@ -60,12 +60,5 @@
else:
return
- # Got the item. First tell ourself about it.
self.onSelectionChangedEvent (notification)
- # Next broadcast inside our boundary to tell dependent
- self.Post (Globals.repository.findPath \
- ('//parcels/osaf/framework/blocks/Events/SelectionChanged'),
- {'item':item})
-
-
Index: chandler/parcels/osaf/framework/blocks/Views.py
diff -u chandler/parcels/osaf/framework/blocks/Views.py:1.44 chandler/parcels/osaf/framework/blocks/Views.py:1.45
--- chandler/parcels/osaf/framework/blocks/Views.py:1.44 Thu Sep 23 12:14:16 2004
+++ chandler/parcels/osaf/framework/blocks/Views.py Mon Oct 4 17:33:14 2004
@@ -1,5 +1,5 @@
-__version__ = "$Revision: 1.44 $"
-__date__ = "$Date: 2004/09/23 19:14:16 $"
+__version__ = "$Revision: 1.45 $"
+__date__ = "$Date: 2004/10/05 00:33:14 $"
__copyright__ = "Copyright (c) 2003-2004 Open Source Applications Foundation"
__license__ = "http://osafoundation.org/Chandler_0.1_license_terms.htm"
@@ -153,12 +153,12 @@
while (block):
for child in block.childrenBlocks:
try:
- method = child.isDynamicChild
+ method = getattr (type (child), 'isDynamicChild')
except AttributeError:
pass
else:
candidate = child
- isChild = method()
+ isChild = method(child)
if isChild:
synchToDynamicBlock (child, True)
return
Index: chandler/parcels/osaf/framework/blocks/ControlBlocks.py
diff -u chandler/parcels/osaf/framework/blocks/ControlBlocks.py:1.129 chandler/parcels/osaf/framework/blocks/ControlBlocks.py:1.130
--- chandler/parcels/osaf/framework/blocks/ControlBlocks.py:1.129 Mon Oct 4 16:31:46 2004
+++ chandler/parcels/osaf/framework/blocks/ControlBlocks.py Mon Oct 4 17:33:14 2004
@@ -1,5 +1,5 @@
-__version__ = "$Revision: 1.129 $"
-__date__ = "$Date: 2004/10/04 23:31:46 $"
+__version__ = "$Revision: 1.130 $"
+__date__ = "$Date: 2004/10/05 00:33:14 $"
__copyright__ = "Copyright (c) 2003-2004 Open Source Applications Foundation"
__license__ = "http://osafoundation.org/Chandler_0.1_license_terms.htm"
@@ -491,8 +491,7 @@
self.Bind(wx.EVT_SIZE, self.OnSize)
self.Bind(wx.grid.EVT_GRID_COL_SIZE, self.OnColumnDrag)
- self.Bind(wx.grid.EVT_GRID_CELL_LEFT_CLICK, self.OnWXSelectionChanged)
- self.Bind(wx.grid.EVT_GRID_SELECT_CELL, self.OnSelectCell)
+ self.Bind(wx.grid.EVT_GRID_RANGE_SELECT, self.OnRangeSelect)
self.Bind(wx.grid.EVT_GRID_CELL_RIGHT_CLICK, self.OnRightClick)
self.Bind(wx.grid.EVT_GRID_CELL_BEGIN_DRAG, self.OnItemDrag)
@@ -517,6 +516,35 @@
self.SetTable (gridTable, True, selmode=wx.grid.Grid.SelectRows)
+ def OnRangeSelect(self, event):
+ if not Globals.wxApplication.ignoreSynchronizeWidget:
+ topRow = event.GetTopRow()
+ bottomRow = event.GetBottomRow()
+ selecting = event.Selecting()
+ if topRow == 0 and bottomRow == (self.GetElementCount() -1):
+ self.blockItem.selection = []
+ if not selecting:
+ return
+ self.blockItem.selection.append ([topRow, bottomRow, selecting])
+
+ topLeftList = self.GetSelectionBlockTopLeft()
+ topLeftList.sort()
+ try:
+ (row, column) = topLeftList [0]
+ except IndexError:
+ item = None
+ else:
+ item = self.blockItem.contents [row]
+
+ if item != self.blockItem.selectedItemToView:
+ self.blockItem.selectedItemToView = item
+ if item:
+ gridTable = self.GetTable()
+ for columnIndex in xrange (gridTable.GetNumberCols()):
+ self.SetColLabelValue (columnIndex, gridTable.GetColLabelValue (columnIndex))
+ self.blockItem.PostASelectionChangedEvent (item)
+ event.Skip()
+
def OnSize(self, event):
if not Globals.wxApplication.ignoreSynchronizeWidget:
size = event.GetSize()
@@ -537,22 +565,6 @@
columnIndex = event.GetRowOrCol()
self.blockItem.columnWidths [columnIndex] = self.GetColSize (columnIndex)
- def OnSelectCell(self, event):
- # Called by wxWidgets when a new cell is selected
- currentItem = self.blockItem.selection
- if currentItem is not None:
- currentRow = self.blockItem.contents.index (currentItem)
- selectedRow = event.GetRow()
- if selectedRow != currentRow:
- # selection moved up or down
- self.SelectRow (selectedRow)
- # remember the new selection
- selectedItem = self.blockItem.contents [selectedRow]
- self.blockItem.selection = selectedItem
- # post a selection changed event
- self.blockItem.PostASelectionChangedEvent (selectedItem)
- event.Skip()
-
def OnItemDrag(self, event):
self.SetDragData (self.blockItem.contents [event.GetRow()].itsUUID)
@@ -560,26 +572,11 @@
item = Globals.repository.findUUID(itemUUID)
self.blockItem.contents.add (item)
- def OnWXSelectionChanged(self, event):
- if not Globals.wxApplication.ignoreSynchronizeWidget:
- item = self.blockItem.contents [event.GetRow()]
- if self.blockItem.selection != item:
- self.blockItem.selection = item
-
- ## Redraw headers
- gridTable = self.GetTable()
- for columnIndex in xrange (gridTable.GetNumberCols()):
- self.SetColLabelValue (columnIndex, gridTable.GetColLabelValue (columnIndex))
-
- self.blockItem.PostASelectionChangedEvent (item)
- self.blockItem.selectedColumn = self.blockItem.columnData [event.GetCol()]
- event.Skip()
-
def OnRightClick(self, event):
self.blockItem.DisplayContextMenu(event.GetPosition(),
self.blockItem.contents [event.GetRow()])
- def Reset(self):
+ def wxSynchronizeWidget(self):
"""
A Grid can't easily redisplay its contents, so we write the following
helper function to readjust everything after the contents change
@@ -614,6 +611,19 @@
for columnIndex in xrange (newColumns):
self.SetColSize (columnIndex, self.blockItem.columnWidths [columnIndex])
+ self.ClearSelection()
+ for range in self.blockItem.selection:
+ if range [2]:
+ self.SelectBlock (range[0], 0, range[1], newColumns, True)
+ else:
+ for row in xrange (range[0], range[1] + 1):
+ self.DeselectRow (row)
+ try:
+ row = self.blockItem.contents.index (self.blockItem.selectedItemToView)
+ except ValueError:
+ pass
+ else:
+ self.MakeCellVisible (row, 0)
self.EndBatch()
#Update all displayed values
@@ -622,10 +632,6 @@
self.ForceRefresh ()
- def wxSynchronizeWidget(self):
- self.Reset()
- self.GoToItem (self.blockItem.selection)
-
def GoToItem(self, item):
if item:
try:
@@ -633,18 +639,41 @@
except ValueError:
item = None
if item:
- cursorColumn = 0
- selectedColumn = self.blockItem.selectedColumn
- for columnIndex in xrange (self.GetTable().GetNumberCols()):
- if self.blockItem.columnData [columnIndex] == selectedColumn:
- cursorColumn = columnIndex
- break
- self.SelectRow (row)
- self.SetGridCursor (row, cursorColumn)
+ self.blockItem.selection.append ([row, row, True])
+ self.blockItem.selectedItemToView = row
+ self.SelectBlock (row, 0, row, self.GetColumnCount() - 1)
+ self.MakeCellVisible (row, 0)
else:
+ self.blockItem.selection = []
+ self.blockItem.selectedItemToView = None
self.ClearSelection()
self.blockItem.PostASelectionChangedEvent (item)
+ def DeleteSelection (self):
+ self.blockItem.contents.beginUpdate()
+ topLeftList = self.GetSelectionBlockTopLeft()
+ bottomRightList = self.GetSelectionBlockBottomRight()
+ """
+ Clear the selection before removing the elements from the collection
+ otherwise our delegate will get called asking for deleted items
+ """
+ self.ClearSelection()
+ selectionRanges = []
+ for topLeft in topLeftList:
+ bottomRight = bottomRightList.pop (0)
+ selectionRanges.append ([topLeft[0], bottomRight[0]])
+ selectionRanges.sort()
+ selectionRanges.reverse()
+ contents = self.blockItem.contents
+ for range in selectionRanges:
+ for row in xrange (range[1], range [0] - 1, -1):
+ contents.remove (contents [row])
+ self.blockItem.selection = []
+ self.blockItem.selectedItemToView = None
+ Globals.repository.commit()
+ self.blockItem.contents.endUpdate()
+ self.blockItem.PostASelectionChangedEvent (None)
+
class GridCellAttributeRenderer (wx.grid.PyGridCellRenderer):
def __init__(self, type):
@@ -764,44 +793,29 @@
class Table (RectangularChild):
def __init__(self, *arguments, **keywords):
super (Table, self).__init__ (*arguments, **keywords)
- self.selection = None
def instantiateWidget (self):
return wxTable (self.parentBlock.widget, Block.getWidgetID(self))
def onSelectionChangedEvent (self, notification):
- """
- Display the item in the widget.
- """
- self.selection = notification.data['item']
- self.widget.GoToItem (self.selection)
+ item = notification.data ['item']
+ self.selectedItemToView = item
+ if item:
+ try:
+ row = self.contents.index (item)
+ except ValueError:
+ row = -1
+ if row < 0:
+ self.widget.ClearSelection()
+ else:
+ self.widget.SelectBlock (row, 0, row, self.widget.GetColumnCount() - 1)
+ self.PostASelectionChangedEvent (item)
def onDeleteEvent (self, notification):
- self.contents.beginUpdate()
- for row in self.widget.GetSelectedRows():
- self.contents.remove (self.contents [row])
- self.contents.endUpdate()
+ self.widget.DeleteSelection()
def onDeleteEventUpdateUI (self, notification):
- notification.data ['Enable'] = self.widget.IsSelection()
-
- def onRequestSelectItemEvent (self, notification):
- # request the Table part of the Active View to change selection
- newSelection = notification.data['item']
- # A request to select None causes everything to be deselected
- # If the 'collection' flag is set, select the collection in
- # the Detail View.
- if newSelection is None:
- # deselect
- self.onSelectionChangedEvent (notification)
- if notification.data['collection'] == True:
- # tell the Detail View to select the whole collection
- self.PostASelectionChangedEvent (self.contents)
- elif newSelection in self.contents:
- # select the item
- self.onSelectionChangedEvent (notification)
- # tell the Detail View about the new selection
- self.PostASelectionChangedEvent (newSelection)
+ notification.data ['Enable'] = len (self.selection) != 0
class RadioBox(RectangularChild):
def instantiateWidget(self):
Index: chandler/parcels/osaf/framework/blocks/Events/parcel.xml
diff -u chandler/parcels/osaf/framework/blocks/Events/parcel.xml:1.56 chandler/parcels/osaf/framework/blocks/Events/parcel.xml:1.57
--- chandler/parcels/osaf/framework/blocks/Events/parcel.xml:1.56 Mon Oct 4 13:53:05 2004
+++ chandler/parcels/osaf/framework/blocks/Events/parcel.xml Mon Oct 4 17:33:15 2004
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="iso-8859-1"?>
-<!-- $Revision: 1.56 $ -->
-<!-- $Date: 2004/10/04 20:53:05 $ -->
+<!-- $Revision: 1.57 $ -->
+<!-- $Date: 2004/10/05 00:33:15 $ -->
<!-- Copyright (c) 2003 Open Source Applications Foundation -->
<!-- License: http://osafoundation.org/Chandler_0.1_license_terms.htm -->
@@ -36,8 +36,8 @@
<subscribeAlwaysEvents itemref="events:ShowColumn"/>
<subscribeAlwaysEvents itemref="events:GetNewMail"/>
<subscribeAlwaysEvents itemref="events:SelectionChanged"/>
+ <subscribeAlwaysEvents itemref="events:SelectionChangedInsideActiveView"/>
<subscribeAlwaysEvents itemref="events:RequestSelectSidebarItem"/>
- <subscribeAlwaysEvents itemref="events:RequestSelectItem"/>
<subscribeAlwaysEvents itemref="events:EnterPressed"/>
<subscribeAlwaysEvents itemref="events:GenerateContentItems"/>
<subscribeAlwaysEvents itemref="events:GenerateContacts"/>
@@ -132,15 +132,16 @@
<dispatchEnum>BroadcastInsideMyEventBoundary</dispatchEnum>
</BlockEvent>
+ <BlockEvent itsName="SelectionChangedInsideActiveView">
+ <methodName>onSelectionChangedEvent</methodName>
+ <dispatchEnum>BroadcastInsideActiveViewEventBoundary</dispatchEnum>
+ </BlockEvent>
+
<BlockEvent itsName="RequestSelectSidebarItem">
<dispatchEnum>SendToBlock</dispatchEnum>
<dispatchToBlock itemref="doc:Sidebar"/>
</BlockEvent>
- <BlockEvent itsName="RequestSelectItem">
- <dispatchEnum>BroadcastInsideActiveViewEventBoundary</dispatchEnum>
- </BlockEvent>
-
<BlockEvent itsName="EnterPressed">
<dispatchEnum>BroadcastInsideMyEventBoundary</dispatchEnum>
</BlockEvent>
More information about the Commits
mailing list