Hi,
I’m using a GridView()
in my EtoForm(Modeless) to display a simple list of entries. My aim is to update the Label at the bottom to function like a status bar, and show data from the selected row. But, my Rhino crashes if I try to select the rows.
Can someone let me know what needs to change, to get this working?
GH_File: 2021.12.08_Eto_GridView_SelectionEvent.gh (3.9 KB)
import Rhino, System
from Grasshopper.Instances import EtoDocumentEditor
from Eto import Forms, Drawing
class SampleForm(Forms.Form):
def __init__(self):
self.load_form()
self.GridView = self.load_GridView()
# Rhino is not happy with this line.
#self.GridView.SelectedRowsChanged += self.OnSelected
self.Label = Forms.Label(Text='Nothing is Selected...', BackgroundColor=Drawing.Color.FromArgb(100, 150, 0, 75))
layout = Forms.DynamicLayout()
layout.AddRow(self.GridView)
layout.AddRow(self.Label)
self.Content = layout
def load_form(self):
self.Title = 'Award Nomination'
self.ClientSize = Drawing.Size(300, 300)
self.Padding = Drawing.Padding(15)
self.Owner = EtoDocumentEditor
self.Topmost = True
def load_GridView(self, multi_select=True, col_reorder=True):
grid_view = Forms.GridView()
grid_view.Size = Drawing.Size(250,250)
grid_view.AllowMultipleSelection = multi_select
grid_view.AllowColumnReordering = col_reorder
colA = Forms.GridColumn()
colA.HeaderText = '+'
colA.Editable = True
colA.DataCell = Forms.CheckBoxCell(0)
grid_view.Columns.Add(colA)
colB = Forms.GridColumn()
colB.HeaderText = 'Name'
colB.Editable = False
colB.DataCell = Forms.TextBoxCell(1)
grid_view.Columns.Add(colB)
colC = Forms.GridColumn()
colC.HeaderText = 'Age'
colC.Editable = False
colC.DataCell = Forms.TextBoxCell(2)
grid_view.Columns.Add(colC)
colD = Forms.GridColumn()
colD.HeaderText = 'Occupation'
colD.Editable = False
colD.DataCell = Forms.TextBoxCell(3)
grid_view.Columns.Add(colD)
self.add_data_to_grid(grid_view )
return grid_view
def add_data_to_grid(self, parent):
DataStore = []
DataStore.append([True, 'Matt', 27, 'Scientist'])
DataStore.append([True, 'John', 22, 'Engineer'])
DataStore.append([True, 'Mike', 49, 'Professor'])
parent.DataStore = DataStore
def OnSelected(self, sender, args):
self.Label.Text = sender.SelectedItem.Values[1]
if x:
dlg = SampleForm()
dlg.Show()
Thanks
~ ~ ~ ~ ~ ~ ~
Kaushik LS
Chennai, IN
1 post - 1 participant