def CreateCheckBoxes(self): # Create checkboxes self.DeleteInput = forms.CheckBox(Text='Delete input', Checked=self.Args.DeleteInput, ThreeState=False) self.PreserveTangents = forms.CheckBox( Text='Preserve tangent end directions', Checked=self.Args.PreserveTangents, ThreeState=False) # Create table layout layout = forms.DynamicLayout() layout.Spacing = drawing.Size(5, 5) layout.AddRow(self.DeleteInput) layout.AddRow(self.PreserveTangents) return layout
def create_global_settings_table(self): #project path and name project_path_label = forms.Label(Text = 'Project folder:') self.m_project_path_picker = EtoUtil.create_file_picker( title = "Select project folder") self.m_project_path_picker.FilePath = 'c:\ladybug' self.m_project_path_picker.FileAction = FileAction.SelectFolder self.m_project_path = "c:\ladybug" layout_a = EtoUtil.create_layout_from_control_matrix([ [project_path_label], [self.m_project_path_picker]], drawing.Padding(5, 30, 5, 0)) project_name_label = forms.Label(Text = 'Project name:') project_name_label.Size = drawing.Size(140, 14) self.m_project_name_text_box = forms.TextBox() self.m_project_name_text_box.Text = "Project1" self.m_save_file_check_box = forms.CheckBox() self.m_save_file_check_box.Text = "Write file only" self.m_run_analysis_button = EtoUtil.create_button( text = 'Run Analysis', size = drawing.Size(140, 24), click_event_method = self.on_click_run_analysis) layout_b = EtoUtil.create_layout_from_control_matrix([ [project_name_label, None], [self.m_project_name_text_box]], drawing.Padding(5, 0, 5, 5)) layout_c = EtoUtil.create_layout_from_control_matrix([ [self.m_run_analysis_button, self.m_save_file_check_box,]], drawing.Padding(5, 10, 5, 5)) return EtoUtil.create_layout_from_control_matrix([[layout_a], [layout_b], [layout_c]], drawing.Padding(0,5))
def from_settings(cls, object_name, settings): tab = cls() tab.Text = object_name layout = forms.StackLayout() layout.Spacing = 2 layout.HorizontalContentAlignment = forms.HorizontalAlignment.Stretch tab.Content = layout # link to original setting and keep a temporary new settings holder tab.settings = settings tab.new_settings = settings.copy() # create sections sections = {} for key in settings: split = key.split('.') prefix = split[0] postfix = '.'.join(split[1:]) if prefix[0] == "_": continue if prefix not in sections: sections[prefix] = {} sections[prefix][postfix] = (key, settings[key]) for prefix in sections: groupbox = forms.GroupBox(Text=prefix) groupbox.Padding = drawing.Padding(5) grouplayout = forms.DynamicLayout() grouplayout.Spacing = drawing.Size(3, 3) postfixies = list(sections[prefix].keys()) postfixies.sort() for postfix in postfixies: key, value = sections[prefix][postfix] if type(value) == bool: control = forms.CheckBox() control.Checked = value control.CheckedChanged += tab.EditEvent(key) elif (type(value) == list or type(value) == tuple) and len(value) == 3: control = forms.ColorPicker() control.Value = drawing.Color.FromArgb(*value) control.ValueChanged += tab.EditEvent(key) elif type(value) == float or type(value) == int: control = forms.NumericUpDown() if type(value) == float: digits = len(str(value).split('.')[-1]) control.DecimalPlaces = (digits + 1) control.Increment = 0.1 ** (digits + 1) control.Value = value control.ValueChanged += tab.EditEvent(key) else: control = forms.TextBox() control.Text = str(value) control.TextChanged += tab.EditEvent(key) label = forms.Label(Text=postfix) if postfix != '': grouplayout.AddRow(label, None, control) else: grouplayout.AddRow(control) groupbox.Content = grouplayout layout.Items.Add(groupbox) return tab
def __init__(self): # Initialize dialog box self.Title = 'Render Settings' self.Padding = drawing.Padding(5) self.Resizable = False settings = self.readSettings() dirname = os.path.dirname script_path = dirname(os.path.realpath(__file__)) + "\\" self.HDRIs = ["Colour"] for r, d, f in os.walk(script_path + "HDRI\\"): for file in f: if '.hdr' in file: self.HDRIs.append(file) self.render_engine = forms.ComboBox() self.render_engine.DataStore = ["CYCLES", "EEVEE"] self.render_engine.SelectedIndex = 0 self.render_scale = forms.NumericUpDown() self.render_samples = forms.NumericStepper() self.camera_exposure = forms.NumericUpDown() self.camera_exposure.DecimalPlaces = 3 self.camera_exposure.Increment = 0.1 self.camera_exposure.MinValue = -10.000 self.camera_exposure.MaxValue = 10.000 self.camera_transparent = forms.CheckBox() self.world_HDRI = forms.ComboBox() self.world_HDRI.DataStore = self.HDRIs self.world_HDRIRotation = forms.NumericStepper() self.world_HDRIRotation.DecimalPlaces = 2 self.world_HDRIBlur = forms.NumericStepper() self.world_HDRIBlur.DecimalPlaces = 2 self.world_HDRIBlur.MinValue = 0.000 self.world_HDRIBlur.MaxValue = 1.000 self.world_HDRIBlur.Width = 50 self.world_HDRIPower = forms.NumericStepper() self.world_HDRIPower.DecimalPlaces = 2 self.world_HDRIPower.MinValue = 0.000 self.world_HDRIPower.Width = 50 self.render_bouncesTotal = forms.NumericStepper() self.render_bouncesDiffuse = forms.NumericStepper() self.render_bouncesGlossy = forms.NumericStepper() self.render_bouncesTransparency = forms.NumericStepper() self.render_bouncesTransmission = forms.NumericStepper() self.render_bouncesVolume = forms.NumericStepper() self.render_clampingDirect = forms.NumericUpDown() self.render_clampingDirect.DecimalPlaces = 2 self.render_clampingDirect.Increment = 0.01 self.render_clampingDirect.MinValue = 0.00 self.render_clampingIndirect = forms.NumericUpDown() self.render_clampingIndirect.DecimalPlaces = 2 self.render_clampingIndirect.MinValue = 0.00 self.render_Denoising = forms.CheckBox() self.open = forms.CheckBox() self.save = forms.CheckBox() self.render = forms.CheckBox() self.showRender = forms.CheckBox() if settings: self.render_engine.SelectedIndex = self.render_engine.DataStore.index( settings["settings"]["render_engine"]) self.render_scale.Value = float( settings["settings"]["render_scale"]) self.render_samples.Value = int( settings["settings"]["render_samples"]) self.camera_exposure.Value = float( settings["camera"]["camera_exposure"]) self.camera_transparent.Checked = bool( settings["camera"]["camera_transparent"]) self.world_HDRI.SelectedIndex = self.world_HDRI.DataStore.index( settings["world"]["world_HDRI"]) self.world_HDRIRotation.Value = float( settings["world"]["world_HDRIRotation"]) self.world_HDRIBlur.Value = float( settings["world"]["world_HDRIBlur"]) self.world_HDRIPower.Value = float( settings["world"]["world_HDRIPower"]) self.render_bouncesTotal.Value = int( settings["settings"]["render_bouncesTotal"]) self.render_bouncesDiffuse.Value = int( settings["settings"]["render_bouncesDiffuse"]) self.render_bouncesGlossy.Value = int( settings["settings"]["render_bouncesGlossy"]) self.render_bouncesTransparency.Value = int( settings["settings"]["render_bouncesTransparency"]) self.render_bouncesTransmission.Value = int( settings["settings"]["render_bouncesTransmission"]) self.render_bouncesVolume.Value = int( settings["settings"]["render_bouncesVolume"]) self.render_clampingDirect.Value = float( settings["settings"]["render_clampingDirect"]) self.render_clampingIndirect.Value = float( settings["settings"]["render_clampingIndirect"]) self.render_Denoising.Checked = bool( settings["settings"]["render_Denoising"]) self.open.Checked = bool(settings["settings"]["open"]) self.save.Checked = bool(settings["settings"]["save"]) self.render.Checked = bool(settings["settings"]["render"]) self.showRender.Checked = bool(settings["settings"]["showRender"]) loc = settings["settings"]["render_settingWindowPosition"] loc = loc.split(",") self.Location = drawing.Point(int(loc[0]), int(loc[1])) self.DefaultButton = forms.Button(Text='OK') self.DefaultButton.Click += self.OnOKButtonClick self.AbortButton = forms.Button(Text='Cancel') self.AbortButton.Click += self.OnCloseButtonClick layout = forms.DynamicLayout() layout.Spacing = drawing.Size(0, 1) """Box 1: Render""" box_1 = forms.GroupBox() box_1.Padding = drawing.Padding(1) box_1_layout = forms.DynamicLayout() box_1_layout.Spacing = drawing.Size(3, 3) box_1.Content = box_1_layout box_1_layout.AddRow("render_engine", self.render_engine) box_1_layout.AddRow("render_scale", self.render_scale) box_1_layout.AddRow("samples", self.render_samples) """Box 2: Camera""" box_2 = forms.GroupBox(Text='Camera') box_2.Padding = drawing.Padding(1) box_2_layout = forms.DynamicLayout() box_2_layout.Spacing = drawing.Size(3, 3) box_2.Content = box_2_layout box_2_layout.AddRow("Exposure", self.camera_exposure) box_2_layout.AddRow("Transparent", self.camera_transparent) """Box 3: World""" box_3 = forms.GroupBox(Text='World') box_3.Padding = drawing.Padding(1) box_3_layout = forms.DynamicLayout() box_3_layout.Spacing = drawing.Size(3, 3) box_3.Content = box_3_layout box_3_layout.BeginVertical() box_3_layout.AddRow("HDRI", self.world_HDRI) box_3_layout.AddRow("HDRI Rotation", self.world_HDRIRotation) box_3_layout.EndVertical() box_3_layout.AddSeparateRow("Blur", self.world_HDRIBlur, None, "Power", self.world_HDRIPower) """Box 4: Samples""" box_4 = forms.GroupBox(Text='Sampling') box_4.Padding = drawing.Padding(1) box_4_layout = forms.DynamicLayout() box_4_layout.Spacing = drawing.Size(3, 3) box_4.Content = box_4_layout self.box_4_hidden = forms.DynamicLayout(Visible=False) self.box_4_hidden.Spacing = drawing.Size(3, 3) self.box_4_hidden.AddRow("bouncesTotal", self.render_bouncesTotal) self.box_4_hidden.AddRow("bouncesDiffuse", self.render_bouncesDiffuse) self.box_4_hidden.AddRow("bouncesGlossy", self.render_bouncesGlossy) self.box_4_hidden.AddRow("bouncesTransparency", self.render_bouncesTransparency) self.box_4_hidden.AddRow("bouncesTransmission", self.render_bouncesTransmission) self.box_4_hidden.AddRow("bouncesVolume", self.render_bouncesVolume) self.box_4_hidden.AddRow("clampingDirect", self.render_clampingDirect) self.box_4_hidden.AddRow("clampingIndirect", self.render_clampingIndirect) self.dropdown_text = forms.Label(Text="Show Sampling Properties") self.dropdown_samples = forms.Button(Size=drawing.Size(16, 16)) self.dropdown_samples.Text = "▼" self.dropdown_samples.Font = drawing.Font("Arial", 5) self.dropdown_samples.Click += self.dropdown_samples_Click box_4_layout.AddSeparateRow(None, self.dropdown_text, None, self.dropdown_samples, None) box_4_layout.AddRow(self.box_4_hidden) """Box 5: Output""" box_5 = forms.GroupBox(Text='Output') box_5.Padding = drawing.Padding(1) box_5_layout = forms.DynamicLayout() box_5_layout.Spacing = drawing.Size(3, 3) box_5.Content = box_5_layout box_5_layout.AddRow(self.save, "Save File", self.open, "Open File") box_5_layout.AddRow(self.render_Denoising, "Denoising") box_5_layout.AddRow(self.render, "Render") box_5_layout.AddRow(self.showRender, "Show Render") #Add the group boxes to the main interface layout.AddRow(box_1) layout.AddRow(box_2) layout.AddRow(box_3) layout.AddRow(box_4) layout.AddRow(box_5) layout.AddSeparateRow(self.DefaultButton, None, self.AbortButton) self.Content = layout
def __init__(self): # Initialize dialog box self.Title = 'LandArchTools: Stair Generator' self.Padding = drawing.Padding(10) self.Resizable = False self.Closing += self.OnFormClosed ################################################################################ # Create controls for the dialog # Stair gen label self.stairGenLabel = forms.Label(Text='STAIR GENERATOR') # Gen Handrail label self.genStairLabel = forms.Label(Text='Generate Stair?:') # Gen Handrail control self.genStairBool = forms.CheckBox() self.genStairBool.Checked = False self.genStairBool.CheckedChanged += self.stairGen # Number of Steps Label self.numStepsLabel = forms.Label(Text='Number of steps:') # Number of Steps control self.numStepsC = forms.NumericStepper() self.numStepsC.DecimalPlaces = 0 self.numStepsC.Increment = 1 self.numStepsC.MaxValue = 100 self.numStepsC.MinValue = 2 self.numStepsC.Value = 3 self.numStepsC.ValueChanged += self.stairGen self.numStepsC.ValueChanged += self.handrailGen # Tread label self.treadLabel = forms.Label(Text='Tread (mm):') # Tread length control self.treadC = forms.NumericStepper() self.treadC.DecimalPlaces = 0 self.treadC.Increment = 1 self.treadC.MaxValue = 1000 self.treadC.MinValue = 1 self.treadC.Value = 300 self.treadC.ValueChanged += self.stairGen self.treadC.ValueChanged += self.handrailGen # Riser Label self.riserLabel = forms.Label(Text='Riser (mm):') # Tread length control self.riserC = forms.NumericStepper() self.riserC.DecimalPlaces = 0 self.riserC.Increment = 1 self.riserC.MaxValue = 1000 self.riserC.MinValue = 1 self.riserC.Value = 150 self.riserC.ValueChanged += self.stairGen self.riserC.ValueChanged += self.handrailGen # Flip label self.flipLabel = forms.Label(Text='Flip direction of stairs:') # Flip control self.flipC = forms.CheckBox() self.flipC.CheckedChanged += self.stairGen self.flipC.CheckedChanged += self.handrailGen ########################################### # Handrail Gen Label self.handrailGenLabel = forms.Label(Text='HANDRAIL GENERATOR') # self.handrailGenLabel.VerticalAlignment.Center # Gen Handrail label self.genHandrailLabel = forms.Label(Text='Generate Handrail?:') # Gen Handrail control self.genHandrailBool = forms.CheckBox() self.genHandrailBool.Checked = False self.genHandrailBool.CheckedChanged += self.handrailGen # Handrail Type Label self.handrailTypeLabel = forms.Label(Text='Handrail type:') # Handrail Type Dropdown self.handrailTypeC = forms.DropDown() self.handrailTypeC.DataStore = [ '180 No Return', '180 Full Return', 'Ground Triangular Return', 'Ground Return', 'Wall Return'] self.handrailTypeC.SelectedIndex = 0 self.handrailTypeC.SelectedIndexChanged += self.handrailGen # Handrail Height Label self.handrailHeightLabel = forms.Label( Text='Handrail height (mm):') # Handrail Height control self.handrailHeightC = forms.NumericStepper() self.handrailHeightC.DecimalPlaces = 0 self.handrailHeightC.Increment = 1 self.handrailHeightC.MaxValue = 5000 self.handrailHeightC.MinValue = 100 self.handrailHeightC.Value = 900 self.handrailHeightC.ValueChanged += self.handrailGen # Handrail offset label self.handrailOffsetLabel = forms.Label( Text='Handrail offset from edges (mm):') # Handrail offset control self.handrailOffsetC = forms.NumericStepper() self.handrailOffsetC.DecimalPlaces = 0 self.handrailOffsetC.Increment = 1 self.handrailOffsetC.MaxValue = 5000 self.handrailOffsetC.MinValue = 50 self.handrailOffsetC.Value = 150 self.handrailOffsetC.ValueChanged += self.handrailGen # Handrail extension Label self.handrailExtensionLabel = forms.Label( Text='Handrail extension (mm):') # Handrail extension Control self.handrailExtensionC = forms.NumericStepper() self.handrailExtensionC.DecimalPlaces = 0 self.handrailExtensionC.Increment = 1 self.handrailExtensionC.MaxValue = 5000 self.handrailExtensionC.MinValue = 300 self.handrailExtensionC.Value = 300 self.handrailExtensionC.ValueChanged += self.handrailGen # Handrail Diameter Label self.handrailDiameterLabel = forms.Label( Text='Handrail diameter (mm):') # Handrail Diameter control self.handrailDiameterC = forms.NumericStepper() self.handrailDiameterC.DecimalPlaces = 0 self.handrailDiameterC.Increment = 1 self.handrailDiameterC.MaxValue = 50 self.handrailDiameterC.MinValue = 30 self.handrailDiameterC.Value = 30 self.handrailDiameterC.ValueChanged += self.handrailGen # Create the default button self.DefaultButton = forms.Button(Text='OK') self.DefaultButton.Click += self.OnOKButtonClick # Create the abort button self.AbortButton = forms.Button(Text='Cancel') self.AbortButton.Click += self.OnCloseButtonClick ################################################################################ # Create a table layout and add all the controls layout = forms.DynamicLayout() layout.Spacing = drawing.Size(5, 5) layout.AddRow(None) layout.AddRow(self.stairGenLabel) layout.AddRow(None) layout.AddRow(None) layout.AddRow(self.genStairLabel, self.genStairBool) layout.AddRow(self.numStepsLabel, self.numStepsC) layout.AddRow(self.treadLabel, self.treadC) layout.AddRow(self.riserLabel, self.riserC) layout.AddRow(self.flipLabel, self.flipC) layout.AddRow(None) layout.AddRow(None) layout.AddRow(None) layout.AddRow(None) layout.AddRow(self.handrailGenLabel) layout.AddRow(None) layout.AddRow(None) layout.AddRow(self.genHandrailLabel, self.genHandrailBool) layout.AddRow(self.handrailTypeLabel, self.handrailTypeC) layout.AddRow(self.handrailHeightLabel, self.handrailHeightC) layout.AddRow(self.handrailOffsetLabel, self.handrailOffsetC) layout.AddRow(self.handrailExtensionLabel, self.handrailExtensionC) layout.AddRow(self.handrailDiameterLabel, self.handrailDiameterC) layout.AddRow(self.DefaultButton, self.AbortButton) # Set the dialog content self.Content = layout
def __init__(self, osStandards): self.toggleButton = forms.ToggleButton self.textField = forms.TextBox self.objfilter = sum([16,8,32,1073741824]) self.obj = rs.GetObject("Select Object to Apply Zone Data to:", filter=self.objfilter, preselect=True) self.osStandards = osStandards['space_types']['90.1-2007']['ClimateZone 1-8'] self.bldg = '' self.zone = '' self.Standards = [] self.Title = "Zone Load Data" self.Padding = drawing.Padding(10) self.Resizeable = False self.fieldsDict = { 'bldgProgram': [forms.TextBox(Text = None), forms.CheckBox(Text = "Lock")], 'zoneProgram': [forms.TextBox(Text = None), forms.CheckBox(Text = "Lock")], 'equipmentLoadPerArea': [forms.TextBox(Text = None), forms.CheckBox(Text = "Lock")], 'infilRatePerArea_Facade': [forms.TextBox(Text = None), forms.CheckBox(Text = "Lock")], 'lightingDensityPerArea':[ forms.TextBox(Text = None), forms.CheckBox(Text = "Lock")], 'numOfPeoplePerArea': [forms.TextBox(Text = None), forms.CheckBox(Text = "Lock")], 'ventilationPerArea': [forms.TextBox(Text = None), forms.CheckBox(Text = "Lock")], 'ventilationPerPerson': [forms.TextBox(Text = None), forms.CheckBox(Text = "Lock")], 'recirculatedAirPerArea': [forms.TextBox(Text = None), forms.CheckBox(Text = "Lock")], 'isConditioned': [forms.ToggleButton(Text = 'Yes'), forms.CheckBox(Text = "Lock")], 'maxRoofAngle': [forms.TextBox(Text = None), forms.CheckBox(Text = "Lock")], } self.GetExistingValues() self.bldg_dropdownlist = forms.DropDown() self.bldg_dropdownlist.DataStore = self.osStandards self.bldg_dropdownlist.DropDownClosed += self.Bldg_DD_Close self.zone_dropdownlist = forms.DropDown() self.zone_dropdownlist.DropDownClosed += self.Zone_DD_Close self.ApplyStandardsButton = forms.Button(Text = "Apply") self.ApplyStandardsButton.Click += self.OnApplyButtonClick self.DefaultButton = forms.Button(Text = "OK") self.DefaultButton.Click += self.OnOKButtonClick self.AbortButton = forms.Button(Text = "Cancel") self.AbortButton.Click += self.OnCloseButtonClick # Add Toggle Events for k,v in self.fieldsDict.items(): if isinstance(v[0], self.toggleButton): v[0].Click += self.ToggleClick #Create Layout layout = forms.DynamicLayout() layout.Spacing = drawing.Size(5,5) # Add Drop Down list layout.AddRow(self.bldg_dropdownlist, self.zone_dropdownlist) # Add Apply Standards layout.AddRow(self.ApplyStandardsButton) self.ApplyStandardsButton.Enabled = False # Add Fields for k,v in self.fieldsDict.items(): self.m_label = forms.Label(Text = str(k)) layout.AddRow(self.m_label, v[0], v[1]) layout.AddRow(None) #Add Ok Close buttons layout.AddRow(self.DefaultButton, self.AbortButton) #Apply Layout to Form self.Content = layout
def create_date_time_group(self): def date_time_controls(is_enabled, picker_date_event_method, slider_date_event_method, picker_time_event_method, slider_time_event_method): current_date_time = System.DateTime.Now #date slider and pickers date = forms.DateTimePicker() date.Mode = forms.DateTimePickerMode.Date date.Value = current_date_time date.Size = drawing.Size(30, 20) date.ValueChanged += picker_date_event_method date.Enabled = is_enabled # date_label = forms.Label(Text='Day of year:') date_label.Size = drawing.Size(140, 15) date_slider = EtoUtil.create_slider( value=current_date_time.Now.DayOfYear, min=1, max=365, snap_to_tick=False, tick_frequency=31, change_event_method=slider_date_event_method, is_enabled=is_enabled) # Time slider and picker time = forms.DateTimePicker() time.Mode = forms.DateTimePickerMode.Time time.Value = System.DateTime(1, 1, 1, current_date_time.Hour, 0, 0) time.Size = drawing.Size(30, 20) time.ValueChanged += picker_time_event_method time.Enabled = is_enabled # time_label = forms.Label(Text='Hour of day:') time_label.Size = drawing.Size(140, 15) time_slider = EtoUtil.create_slider( value=current_date_time.Hour, min=0, max=23, snap_to_tick=True, tick_frequency=1, change_event_method=slider_time_event_method, is_enabled=is_enabled) layout = EtoUtil.create_layout_from_control_matrix( [[date_label], [date_slider, date], [time_label], [time_slider, time]]) return layout, date, date_slider, time, time_slider #create layout a: From date/ time layout_a, self.m_date, self.m_date_slider, self.m_time, self.m_time_slider = \ date_time_controls(True, self.on_date_picker_changed, self.on_date_slider_changed, self.on_time_picker_changed, self.on_time_slider_changed) #layout b: on/off analysis period self.m_period_check_box = forms.CheckBox() self.m_period_check_box.Text = "Set analysis period" self.m_period_check_box.CheckedChanged += self.on_period_check_changed layout_b = EtoUtil.create_layout_from_control_matrix( [[self.m_period_check_box]]) #create layout c: To date/ time layout_c, self.m_to_date, self.m_to_date_slider, self.m_to_time, self.m_to_time_slider =\ date_time_controls(False, self.on_to_date_picker_changed, self.on_to_date_slider_changed, self.on_to_time_picker_changed, self.on_to_time_slider_changed) #layout b: on/off annual self.m_annual_check_box = forms.CheckBox() self.m_annual_check_box.Text = "Annual" self.m_annual_check_box.Checked = True self.m_annual_check_box.CheckedChanged += self.on_annual_check_changed #disable date.time controlls by default (annual is checked) neg_annual = not self.m_annual_check_box.Checked is_period = self.m_period_check_box.Checked self.disable_enable_date_time_controls(neg_annual, is_period) layout_d = EtoUtil.create_layout_from_control_matrix( [[self.m_annual_check_box]]) # return group with created layout group_layout = EtoUtil.create_layout_from_control_matrix([[layout_a], [layout_b], [layout_c], [layout_d]]) return EtoUtil.create_group_from_layout('Date and Time', group_layout)