Fired before applying a selection change to a grid widget associated with a grid data parameter. The callback can prevent the selection change with a return value.
GridData parameters on Custom Properties implemented in a scripting language.
function <property_name>_<parameter_name>_OnBeginSelectionChange()
{
...
}
|
def <property_name>_<parameter_name>_OnBeginSelectionChange():
...
|
Function <property_name>_<parameter_name>_OnBeginSelectionChange()
...
End Function
|
sub <property_name>_<parameter_name>_OnBeginSelectionChange
{
...
}
|
<property_name> is the name specified in the call to PluginRegistrar.RegisterProperty, with any spaces converted to underscores. For example, if you register a property with the name "My Property", the callback function names start with "My_Property".
<parameter_name> is the name specified in the call to CustomProperty.AddGridParameter, with any spaces converted to underscores. For example, if you added a grid parameter with the name "My Grid", the callback function names start with "<property_name>_My_Grid".
| Parameter | Language | Type | Description |
|---|---|---|---|
| extra_param | Scripting | Array | The first item is another Array containing the column and row indices of the selected cells. Indices are arranged as [col1, row1, col2, row2, ...]. |
import win32com.client
from win32com.client import constants
def XSILoadPlugin( in_reg ):
in_reg.Author = "Autodesk"
in_reg.Name = "MyPropertyPlugin"
in_reg.Major = 1
in_reg.Minor = 0
in_reg.RegisterProperty("MyProperty")
#RegistrationInsertionPoint - do not remove this line
return True
def XSIUnloadPlugin( in_reg ):
strPluginName = in_reg.Name
return True
def MyProperty_Define( in_ctxt ):
oCustomProperty = in_ctxt.Source
oCustomProperty.AddGridParameter("MyGrid")
return True
def MyProperty_DefineLayout( in_ctxt ):
oLayout = in_ctxt.Source
oLayout.Clear()
oItem = oLayout.AddItem("MyGrid")
return True
def MyProperty_OnInit( ):
Application.LogMessage("MyProperty_OnInit called",constants.siVerbose)
param = PPG.MyGrid
# Basic population of the grid data
gridData = param.Value
gridData.ColumnCount = 3
gridData.RowCount = 3
for col in range( gridData.ColumnCount ):
gridData.SetColumnLabel( col, "Col %d"%col )
gridData.SetColumnDef( col, constants.siColumnStandard )
for row in range( gridData.RowCount ):
if col == 0:
gridData.SetRowLabel( row, "Row %d"%row )
gridData.SetCell( col, row, "%d,%d"%(col, row) )
def MyProperty_OnClosed( ):
pass
def MyProperty_MyGrid_OnBeginSelectionChange( in_ExtraParams ):
param = PPG.MyGrid
gridData = param.Value
# Retrieve the set of cells that are about to get selected
columnRowPairs = []
columnRowPairs.extend( in_ExtraParams[0] )
returnArray = []
while len( columnRowPairs ) >= 2:
col = columnRowPairs.pop(0)
row = columnRowPairs.pop(0)
# For the sake of the example, we demonstrate returning a single accept flag
# and a per-cell flag
if col == 2:
# As soon as the selection affects the last column, we reject the
# whole selection change
return False
if row == 1:
# Do not allow selection of row 1
returnArray.append( False )
else:
returnArray.append( True )
return returnArray
|