private GuiWidget CreateAxisScalingControl(string axis, int axisIndex) { FlowLayoutWidget leftToRight = new FlowLayoutWidget(); leftToRight.Padding = new BorderDouble(5, 3); TextWidget sizeDescription = new TextWidget("{0}:".FormatWith(axis), textColor: ActiveTheme.Instance.PrimaryTextColor); sizeDescription.VAnchor = Agg.UI.VAnchor.ParentCenter; leftToRight.AddChild(sizeDescription); sizeDisplay[axisIndex] = new EditableNumberDisplay(view3DWidget.textImageButtonFactory, "100", "1000.00"); sizeDisplay[axisIndex].EditComplete += (sender, e) => { if (view3DWidget.HaveSelection) { Matrix4X4 startingTransform = view3DWidget.SelectedMeshGroupTransform; SetNewModelSize(sizeDisplay[axisIndex].GetValue(), axisIndex); sizeDisplay[axisIndex].SetDisplayString("{0:0.00}".FormatWith(view3DWidget.SelectedMeshGroup.GetAxisAlignedBoundingBox().Size[axisIndex])); OnSelectedTransformChanged(null, null); view3DWidget.AddUndoForSelectedMeshGroupTransform(startingTransform); } else { sizeDisplay[axisIndex].SetDisplayString("---"); } }; leftToRight.AddChild(sizeDisplay[axisIndex]); return(leftToRight); }
protected override void AddChildElements() { AltGroupBox fanControlsGroupBox = new AltGroupBox(new TextWidget("Fan".Localize(), pointSize: 18, textColor: ActiveTheme.Instance.SecondaryAccentColor)); fanControlsGroupBox.Margin = new BorderDouble(0); fanControlsGroupBox.BorderColor = ActiveTheme.Instance.PrimaryTextColor; fanControlsGroupBox.HAnchor |= Agg.UI.HAnchor.ParentLeftRight; fanControlsGroupBox.VAnchor = Agg.UI.VAnchor.FitToChildren; this.HAnchor = Agg.UI.HAnchor.ParentLeftRight; this.AddChild(fanControlsGroupBox); FlowLayoutWidget leftToRight = new FlowLayoutWidget(); FlowLayoutWidget fanControlsLayout = new FlowLayoutWidget(FlowDirection.TopToBottom); fanControlsLayout.Padding = new BorderDouble(3, 5, 3, 0); { fanControlsLayout.AddChild(CreateFanControls()); } leftToRight.AddChild(fanControlsLayout); SetDisplayAttributes(); fanSpeedDisplay = new EditableNumberDisplay(textImageButtonFactory, "{0}%".FormatWith(PrinterConnectionAndCommunication.Instance.FanSpeed0To255.ToString()), "100%"); fanSpeedDisplay.EditComplete += (sender, e) => { PrinterConnectionAndCommunication.Instance.FanSpeed0To255 = (int)(fanSpeedDisplay.GetValue() * 255.5 / 100); }; leftToRight.AddChild(fanSpeedDisplay); fanControlsGroupBox.AddChild(leftToRight); }
private GuiWidget createAxisScalingControl(string axis, int axisIndex) { FlowLayoutWidget leftToRight = new FlowLayoutWidget(); leftToRight.Padding = new BorderDouble(5, 3); TextWidget sizeDescription = new TextWidget("{0}:".FormatWith(axis), textColor: ActiveTheme.Instance.PrimaryTextColor); sizeDescription.VAnchor = Agg.UI.VAnchor.ParentCenter; leftToRight.AddChild(sizeDescription); sizeDisplay[axisIndex] = new EditableNumberDisplay(textImageButtonFactory, "100", "1000.00"); sizeDisplay[axisIndex].EditComplete += (sender, e) => { if (HaveSelection) { SetNewModelSize(sizeDisplay[axisIndex].GetValue(), axisIndex); sizeDisplay[axisIndex].SetDisplayString("{0:0.00}".FormatWith(SelectedMeshGroup.GetAxisAlignedBoundingBox().Size[axisIndex])); UpdateSizeInfo(); } else { sizeDisplay[axisIndex].SetDisplayString("---"); } }; leftToRight.AddChild(sizeDisplay[axisIndex]); return leftToRight; }
private FanControls(PrinterConnection printerConnection, ThemeConfig theme) : base(FlowDirection.TopToBottom) { this.HAnchor = HAnchor.Stretch; this.HAnchor = HAnchor.Stretch; //Matt's test editing to add a on/off toggle switch bool fanActive = printerConnection.FanSpeed0To255 != 0; Stopwatch timeSinceLastManualSend = new Stopwatch(); var settingsRow = new SettingsRow( "Part Cooling Fan".Localize(), null, theme, fullRowSelect: true); this.AddChild(settingsRow); var container = new FlowLayoutWidget(); settingsRow.AddChild(container); settingsRow.BorderColor = Color.Transparent; fanSpeedDisplay = new EditableNumberDisplay(0, "100") { DisplayFormat = "{0:0}", Value = printerConnection.FanSpeed0To255 * 100 / 255 }; fanSpeedDisplay.ValueChanged += (sender, e) => { // limit the rate we can send this message to 2 per second so we don't get in a crazy toggle state. if (!timeSinceLastManualSend.IsRunning || timeSinceLastManualSend.ElapsedMilliseconds > 500) { timeSinceLastManualSend.Restart(); printerConnection.FanSpeed0To255 = (int)(fanSpeedDisplay.Value * 255 / 100 + .5); } }; container.AddChild(fanSpeedDisplay); container.Selectable = true; // put in % container.AddChild(new TextWidget("%", pointSize: 10, textColor: ActiveTheme.Instance.PrimaryTextColor) { VAnchor = VAnchor.Center }); var toggleSwitch = new RoundedToggleSwitch(theme) { Margin = new BorderDouble(5, 0), VAnchor = VAnchor.Center }; toggleSwitch.CheckedStateChanged += (s, e) => { if (!timeSinceLastManualSend.IsRunning || timeSinceLastManualSend.ElapsedMilliseconds > 500) { timeSinceLastManualSend.Restart(); if (toggleSwitch.Checked) { printerConnection.FanSpeed0To255 = 255; } else { printerConnection.FanSpeed0To255 = 0; } } }; container.AddChild(toggleSwitch); settingsRow.ActionWidget = toggleSwitch; // CreateFanControls printerConnection.FanSpeedSet.RegisterEvent((s, e) => { if ((int)printerConnection.FanSpeed0To255 > 0) { toggleSwitch.Checked = true; } else { toggleSwitch.Checked = false; } fanSpeedDisplay.Value = printerConnection.FanSpeed0To255 * 100 / 255; } , ref unregisterEvents); }