[Commits] (donn) Tables now support cursor keys to move the
selection
commits at osafoundation.org
commits at osafoundation.org
Tue Sep 14 00:07:08 PDT 2004
Commit by: donn
Modified files:
chandler/parcels/osaf/framework/blocks/Block.py 1.68 1.69
chandler/parcels/osaf/framework/blocks/ContainerBlocks.py 1.129 1.130
chandler/parcels/osaf/framework/blocks/ControlBlocks.py 1.116 1.117
Log message:
Tables now support cursor keys to move the selection
----------------------------------------------------
* Up and Down Arrow keys move the selection
* Added a bottleneck to Post a SelectionChanged Event
ViewCVS links:
http://cvs.osafoundation.org/index.cgi/chandler/parcels/osaf/framework/blocks/Block.py.diff?r1=text&tr1=1.68&r2=text&tr2=1.69
http://cvs.osafoundation.org/index.cgi/chandler/parcels/osaf/framework/blocks/ContainerBlocks.py.diff?r1=text&tr1=1.129&r2=text&tr2=1.130
http://cvs.osafoundation.org/index.cgi/chandler/parcels/osaf/framework/blocks/ControlBlocks.py.diff?r1=text&tr1=1.116&r2=text&tr2=1.117
Index: chandler/parcels/osaf/framework/blocks/ControlBlocks.py
diff -u chandler/parcels/osaf/framework/blocks/ControlBlocks.py:1.116 chandler/parcels/osaf/framework/blocks/ControlBlocks.py:1.117
--- chandler/parcels/osaf/framework/blocks/ControlBlocks.py:1.116 Mon Sep 13 17:33:56 2004
+++ chandler/parcels/osaf/framework/blocks/ControlBlocks.py Tue Sep 14 00:07:06 2004
@@ -1,5 +1,5 @@
-__version__ = "$Revision: 1.116 $"
-__date__ = "$Date: 2004/09/14 00:33:56 $"
+__version__ = "$Revision: 1.117 $"
+__date__ = "$Date: 2004/09/14 07:07:06 $"
__copyright__ = "Copyright (c) 2003-2004 Open Source Applications Foundation"
__license__ = "http://osafoundation.org/Chandler_0.1_license_terms.htm"
@@ -277,8 +277,7 @@
item = self.blockItem.contents [event.GetIndex()]
if self.blockItem.selection != item:
self.blockItem.selection = item
- self.blockItem.Post (Globals.repository.findPath ('//parcels/osaf/framework/blocks/Events/SelectionChanged'),
- {'item':item})
+ self.blockItem.PostASelectionChangedEvent (item)
event.Skip()
def OnItemDrag(self, event):
@@ -415,6 +414,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)
def OnInit (self):
elementDelegate = self.blockItem.elementDelegate
@@ -457,6 +457,22 @@
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 AddItem(self, itemUUID):
item = Globals.repository.findUUID(itemUUID)
self.blockItem.contents.add (item)
@@ -472,8 +488,7 @@
for columnIndex in xrange (gridTable.GetNumberCols()):
self.SetColLabelValue (columnIndex, gridTable.GetColLabelValue (columnIndex))
- self.blockItem.Post (Globals.repository.findPath ('//parcels/osaf/framework/blocks/Events/SelectionChanged'),
- {'item':item})
+ self.blockItem.PostASelectionChangedEvent (item)
self.blockItem.selectedColumn = self.blockItem.columnAttributeNames [event.GetCol()]
event.Skip()
@@ -547,8 +562,7 @@
self.SetGridCursor (row, cursorColumn)
else:
self.ClearSelection()
- self.blockItem.Post (Globals.repository.findPath ('//parcels/osaf/framework/blocks/Events/SelectionChanged'),
- {'item':item})
+ self.blockItem.PostASelectionChangedEvent (item)
class GridCellAttributeRenderer (wx.grid.PyGridCellRenderer):
@@ -697,16 +711,12 @@
self.onSelectionChangedEvent (notification)
if notification.data['collection'] == True:
# tell the Detail View to select the whole collection
- self.Post (Globals.repository.findPath \
- ('//parcels/osaf/framework/blocks/Events/SelectionChanged'),
- {'item':self.contents})
+ self.PostASelectionChangedEvent (self.contents)
elif newSelection in self.contents:
# select the item
self.onSelectionChangedEvent (notification)
# tell the Detail View about the new selection
- self.Post (Globals.repository.findPath \
- ('//parcels/osaf/framework/blocks/Events/SelectionChanged'),
- {'item':newSelection})
+ self.PostASelectionChangedEvent (newSelection)
class RadioBox(RectangularChild):
def instantiateWidget(self):
@@ -896,8 +906,7 @@
if self.blockItem.selection != selection:
self.blockItem.selection = selection
- self.blockItem.Post (Globals.repository.findPath('//parcels/osaf/framework/blocks/Events/SelectionChanged'),
- {'item':selection})
+ self.blockItem.PostASelectionChangedEvent (selection)
event.Skip()
def OnItemDrag(self, event):
@@ -1028,8 +1037,7 @@
if not item:
webbrowser.open(itemURL)
else:
- self.blockItem.Post (Globals.repository.findPath('//parcels/osaf/framework/blocks/Events/SelectionChanged'),
- {'item':item})
+ self.blockItem.PostASelectionChangedEvent (item)
def wxSynchronizeWidget(self):
if self.blockItem.selection:
Index: chandler/parcels/osaf/framework/blocks/Block.py
diff -u chandler/parcels/osaf/framework/blocks/Block.py:1.68 chandler/parcels/osaf/framework/blocks/Block.py:1.69
--- chandler/parcels/osaf/framework/blocks/Block.py:1.68 Mon Sep 13 14:28:36 2004
+++ chandler/parcels/osaf/framework/blocks/Block.py Tue Sep 14 00:07:06 2004
@@ -1,5 +1,5 @@
-__version__ = "$Revision: 1.68 $"
-__date__ = "$Date: 2004/09/13 21:28:36 $"
+__version__ = "$Revision: 1.69 $"
+__date__ = "$Date: 2004/09/14 07:07:06 $"
__copyright__ = "Copyright (c) 2003-2004 Open Source Applications Foundation"
__license__ = "http://osafoundation.org/Chandler_0.1_license_terms.htm"
@@ -333,8 +333,10 @@
CalculateWXFlag = classmethod(CalculateWXFlag)
class RectangularChild(ContainerChild):
- pass
-
+ def PostASelectionChangedEvent (self, item):
+ self.Post (Globals.repository.findPath (
+ '//parcels/osaf/framework/blocks/Events/SelectionChanged'),
+ {'item':item})
class BlockEvent(Event):
Index: chandler/parcels/osaf/framework/blocks/ContainerBlocks.py
diff -u chandler/parcels/osaf/framework/blocks/ContainerBlocks.py:1.129 chandler/parcels/osaf/framework/blocks/ContainerBlocks.py:1.130
--- chandler/parcels/osaf/framework/blocks/ContainerBlocks.py:1.129 Mon Aug 30 12:59:07 2004
+++ chandler/parcels/osaf/framework/blocks/ContainerBlocks.py Tue Sep 14 00:07:06 2004
@@ -1,6 +1,6 @@
-__version__ = "$Revision: 1.129 $"
-__date__ = "$Date: 2004/08/30 19:59:07 $"
-__copyright__ = "Copyright (c) 2003 Open Source Applications Foundation"
+__version__ = "$Revision: 1.130 $"
+__date__ = "$Date: 2004/09/14 07:07:06 $"
+__copyright__ = "Copyright (c) 2003-2004 Open Source Applications Foundation"
__license__ = "http://osafoundation.org/Chandler_0.1_license_terms.htm"
import application.Globals as Globals
@@ -395,8 +395,7 @@
self.selectedTab = event.GetSelection()
page = self.GetPage(self.selectedTab)
Globals.mainView.onSetActiveView(page.blockItem)
- self.blockItem.Post (Globals.repository.findPath ('//parcels/osaf/framework/blocks/Events/SelectionChanged'),
- {'item':page.blockItem})
+ self.blockItem.PostASelectionChangedEvent(page.blockItem)
event.Skip()
def OnRequestDrop(self, x, y):
More information about the Commits
mailing list