@carlo1 wrote:
Hi i cant see this mentioned anywhere so i must be going about it wrong (except it nearly works).
so im trying to make an eto form dynamic layout that might change the amount of rows it has depeneding on, in this case, the number of layers in a file (but for now its just a list i created at the end of the script).
i can get each of the layers on their own seperate row, but i cant seem to get the controls to follow suit.
i feel like i either need to make the control variables a method in the class (which i tried to and failed at) or im going about this in completely the wrong way, considering this is my first ever Eto form i feel its the latter.
can anyone help?
import Rhino.UI import Eto.Drawing as drawing import Eto.Forms as forms class Material_assigner(forms.Dialog[bool]): def __init__(self, material_names, layer_names):##setting up the eto form self.Title = "Material Assigner" self.Padding = drawing.Padding(10) self.Resizable = False self.checkbox = forms.CheckBox( Text = "Consider?") ##check boxes (always true to assume u want to calculate every layer self.checkbox.Checked = True self.dropdown = forms.ComboBox() ##dropdown menu you can edit self.dropdown.DataStore = material_names self.dropdown.SelectedIndex = 0 self.DefaultButton = forms.Button(Text = 'OK') self.DefaultButton.Click += self.OnOKButtonClick self.AbortButton = forms.Button(Text = 'Cancel') self.AbortButton.Click += self.OnCloseButtonClick self.selectbutton = forms.Button(Text = "Select") ##want to add a "select" button so you dont need to use layers if u dont want to layout = forms.DynamicLayout() layout.Spacing = drawing.Size(5,5) for layer in layer_names: layout.AddRow(None) layout.AddRow(layer, self.checkbox, self.dropdown, self.selectbutton)#u can just chuck strings in layouts and it acts like a lable layout.AddRow(None) layout.AddRow(self.DefaultButton, self.AbortButton) self.Content = layout def OnOKButtonClick(self, sender, e): self.Close(True) def OnCloseButtonClick(self, sender, e): self.Close(False) def test(materials, layers): test = Material_assigner(materials, layers); rhinowindow = test.ShowModal(Rhino.UI.RhinoEtoApp.MainWindow) test(["material 1", "material 2"], ["layer 1", "layer 2", "layer 3"])
Thanks a bunch in advance, im pretty stuck
Posts: 2
Participants: 2