[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