void LoadColumnTwo(object state = null) { ColumnTwo.CloseAndRemoveAllChildren(); double buildHeight = ActiveSliceSettings.Instance.BuildHeight; #if NEW_TWO_COLUMN_MODE PartPreviewContent partViewContent = new PartPreviewContent(PrinterConnectionAndCommunication.Instance.ActivePrintItem, true, View3DWidget.AutoRotate.Enabled, false); partViewContent.AnchorAll(); ColumnTwo.AddChild(partViewContent); #else part3DView = new View3DWidget(PrinterConnectionAndCommunication.Instance.ActivePrintItem, new Vector3(ActiveSliceSettings.Instance.BedSize, buildHeight), ActiveSliceSettings.Instance.BedCenter, ActiveSliceSettings.Instance.BedShape, View3DWidget.WindowType.Embeded, View3DWidget.AutoRotate.Enabled); part3DView.Margin = new BorderDouble(bottom: 4); part3DView.AnchorAll(); partGcodeView = new ViewGcodeBasic(PrinterConnectionAndCommunication.Instance.ActivePrintItem, new Vector3(ActiveSliceSettings.Instance.BedSize, buildHeight), ActiveSliceSettings.Instance.BedCenter, ActiveSliceSettings.Instance.BedShape, false); partGcodeView.AnchorAll(); ColumnTwo.AddChild(part3DView); ColumnTwo.AddChild(partGcodeView); #endif ColumnTwo.AnchorAll(); }
public void SetBreadCrumbs(object sender, EventArgs e) { breadCrumbDisplayHolder.CloseAndRemoveAllChildren(); LibraryProvider currentProvider = LibraryDataView.CurrentLibraryProvider; bool first = true; while (currentProvider != null) { if (!first) { GuiWidget separator = new TextWidget(">", textColor: ActiveTheme.Instance.PrimaryTextColor); separator.VAnchor = VAnchor.ParentCenter; separator.Margin = new BorderDouble(3, 0); breadCrumbDisplayHolder.AddChild(separator); } Button installUpdateLink = textImageButtonFactory.Generate(currentProvider.Name); LibraryProvider localCurrentProvider = currentProvider; installUpdateLink.Click += (sender2, e2) => { UiThread.RunOnIdle(() => { LibraryDataView.CurrentLibraryProvider = localCurrentProvider; libraryDataView.RebuildView(); }); }; breadCrumbDisplayHolder.AddChild(installUpdateLink); first = false; currentProvider = currentProvider.ParentLibraryProvider; } libraryDataView.ClearSelectedItems(); }
void LoadColumnThree(object state = null) { ColumnThree.CloseAndRemoveAllChildren(); ThirdPanelTabView thirdPanelTabView = new ThirdPanelTabView(); thirdPanelTabView.Name = "For - WideScreenPanel {0}".FormatWith(ColumnThreeCount++); ColumnThree.AddChild(thirdPanelTabView); ColumnThree.Width = ColumnTheeFixedWidth; //Ordering here matters - must go after children are added }
private void LoadColumnTwo() { ColumnTwo.CloseAndRemoveAllChildren(); PartPreviewContent partViewContent = new PartPreviewContent(PrinterConnectionAndCommunication.Instance.ActivePrintItem, View3DWidget.WindowMode.Embeded, View3DWidget.AutoRotate.Enabled); partViewContent.AnchorAll(); ColumnTwo.AddChild(partViewContent); ColumnTwo.AnchorAll(); }
private void AddDisplayControls(FlowLayoutWidget buttonPanel) { buttonPanel.CloseAndRemoveAllChildren(); double oldWidth = textImageButtonFactory.FixedWidth; textImageButtonFactory.FixedWidth = 44; FlowLayoutWidget layerInfoContainer = new FlowLayoutWidget(FlowDirection.TopToBottom); layerInfoContainer.HAnchor = HAnchor.ParentLeftRight; layerInfoContainer.Padding = new BorderDouble(5); // put in a show grid check box { CheckBox showGrid = new CheckBox(LocalizedString.Get("Grid"), textColor: ActiveTheme.Instance.PrimaryTextColor); showGrid.Checked = gcodeViewWidget.RenderGrid; meshViewerWidget.RenderBed = showGrid.Checked; showGrid.CheckedStateChanged += (sender, e) => { gcodeViewWidget.RenderGrid = showGrid.Checked; meshViewerWidget.RenderBed = showGrid.Checked; }; layerInfoContainer.AddChild(showGrid); } // put in a show moves checkbox { CheckBox showMoves = new CheckBox(LocalizedString.Get("Moves"), textColor: ActiveTheme.Instance.PrimaryTextColor); showMoves.Checked = gcodeViewWidget.RenderMoves; showMoves.CheckedStateChanged += (sender, e) => { gcodeViewWidget.RenderMoves = showMoves.Checked; }; layerInfoContainer.AddChild(showMoves); } // put in a show Retractions checkbox { CheckBox showRetractions = new CheckBox(LocalizedString.Get("Retractions"), textColor: ActiveTheme.Instance.PrimaryTextColor); showRetractions.Checked = gcodeViewWidget.RenderRetractions; showRetractions.CheckedStateChanged += (sender, e) => { gcodeViewWidget.RenderRetractions = showRetractions.Checked; }; layerInfoContainer.AddChild(showRetractions); } // put in a show speed checkbox { CheckBox showSpeeds = new CheckBox(LocalizedString.Get("Speeds"), textColor: ActiveTheme.Instance.PrimaryTextColor); showSpeeds.Checked = gcodeViewWidget.RenderSpeeds; showSpeeds.CheckedStateChanged += (sender, e) => { gcodeViewWidget.RenderSpeeds = showSpeeds.Checked; }; layerInfoContainer.AddChild(showSpeeds); } // put in a simulate extrusion checkbox { CheckBox simulateExtrusion = new CheckBox(LocalizedString.Get("Extrusion"), textColor: ActiveTheme.Instance.PrimaryTextColor); simulateExtrusion.Checked = gcodeViewWidget.SimulateExtrusion; simulateExtrusion.CheckedStateChanged += (sender, e) => { gcodeViewWidget.SimulateExtrusion = simulateExtrusion.Checked; }; layerInfoContainer.AddChild(simulateExtrusion); } // put in a simulate extrusion checkbox if (ActiveSliceSettings.Instance.ExtruderCount > 1) { CheckBox hideExtruderOffsets = new CheckBox("Hide Offsets", textColor: ActiveTheme.Instance.PrimaryTextColor); hideExtruderOffsets.Checked = gcodeViewWidget.HideExtruderOffsets; hideExtruderOffsets.CheckedStateChanged += (sender, e) => { gcodeViewWidget.HideExtruderOffsets = hideExtruderOffsets.Checked; }; layerInfoContainer.AddChild(hideExtruderOffsets); } // put in a show 3D view checkbox { viewControlsToggle.twoDimensionButton.CheckedStateChanged += (sender, e) => { SetLayerViewType(); }; viewControlsToggle.threeDimensionButton.CheckedStateChanged += (sender, e) => { SetLayerViewType(); }; SetLayerViewType(); } // Put in the sync to print checkbox if (!widgetHasCloseButton) { syncToPrint = new CheckBox("Sync To Print".Localize(), textColor: ActiveTheme.Instance.PrimaryTextColor); syncToPrint.Checked = (UserSettings.Instance.get("LayerViewSyncToPrint") == "True"); syncToPrint.CheckedStateChanged += (sender, e) => { UserSettings.Instance.set("LayerViewSyncToPrint", syncToPrint.Checked.ToString()); SetSyncToPrintVisibility(); }; layerInfoContainer.AddChild(syncToPrint); // The idea here is we just got asked to rebuild the window (and it is being created now) // because the gcode finished creating for the print that is printing. // We don't want to be notified if any other updates happen to this gcode while it is printing. if (PrinterConnectionAndCommunication.Instance.PrinterIsPrinting && PrinterConnectionAndCommunication.Instance.ActivePrintItem == printItem) { printItem.SlicingOutputMessage.UnregisterEvent(sliceItem_SlicingOutputMessage, ref unregisterEvents); printItem.SlicingDone.UnregisterEvent(sliceItem_Done, ref unregisterEvents); generateGCodeButton.Visible = false; // However if the print finished or is canceled we are going to want to get updates again. So, hook the status event PrinterConnectionAndCommunication.Instance.CommunicationStateChanged.RegisterEvent(HookUpGCodeMessagesWhenDonePrinting, ref unregisterEvents); UiThread.RunOnIdle((state) => { SetSyncToPrintVisibility(); }); } } //layerInfoContainer.AddChild(new CheckBox("Show Retractions", textColor: ActiveTheme.Instance.PrimaryTextColor)); buttonPanel.AddChild(layerInfoContainer); textImageButtonFactory.FixedWidth = oldWidth; }
private void AddModelInfo(FlowLayoutWidget buttonPanel) { buttonPanel.CloseAndRemoveAllChildren(); double oldWidth = textImageButtonFactory.FixedWidth; textImageButtonFactory.FixedWidth = 44; FlowLayoutWidget modelInfoContainer = new FlowLayoutWidget(FlowDirection.TopToBottom); modelInfoContainer.HAnchor = HAnchor.ParentLeftRight; modelInfoContainer.Padding = new BorderDouble(5); string printTimeLabel = "Print Time".Localize().ToUpper(); string printTimeLabelFull = string.Format("{0}:", printTimeLabel); // put in the print time modelInfoContainer.AddChild(new TextWidget(printTimeLabelFull, textColor: ActiveTheme.Instance.PrimaryTextColor, pointSize: 10)); { string timeRemainingText = "---"; if (gcodeViewWidget != null && gcodeViewWidget.LoadedGCode != null) { int secondsRemaining = (int)gcodeViewWidget.LoadedGCode.Instruction(0).secondsToEndFromHere; int hoursRemaining = (int)(secondsRemaining / (60 * 60)); int minutesRemaining = (int)((secondsRemaining + 30) / 60 - hoursRemaining * 60); // +30 for rounding secondsRemaining = secondsRemaining % 60; if (hoursRemaining > 0) { timeRemainingText = string.Format("{0} h, {1} min", hoursRemaining, minutesRemaining); } else { timeRemainingText = string.Format("{0} min", minutesRemaining); } } GuiWidget estimatedPrintTime = new TextWidget(string.Format("{0}", timeRemainingText), textColor: ActiveTheme.Instance.PrimaryTextColor, pointSize: 14); //estimatedPrintTime.HAnchor = Agg.UI.HAnchor.ParentLeft; estimatedPrintTime.Margin = new BorderDouble(0, 9, 0, 3); modelInfoContainer.AddChild(estimatedPrintTime); } //modelInfoContainer.AddChild(new TextWidget("Size:", textColor: ActiveTheme.Instance.PrimaryTextColor)); string filamentLengthLabel = "Filament Length".Localize().ToUpper(); string filamentLengthLabelFull = string.Format("{0}:", filamentLengthLabel); // show the filament used modelInfoContainer.AddChild(new TextWidget(filamentLengthLabelFull, textColor: ActiveTheme.Instance.PrimaryTextColor, pointSize: 9)); { double filamentUsed = gcodeViewWidget.LoadedGCode.GetFilamentUsedMm(ActiveSliceSettings.Instance.NozzleDiameter); GuiWidget estimatedPrintTime = new TextWidget(string.Format("{0:0.0} mm", filamentUsed), pointSize: 14, textColor: ActiveTheme.Instance.PrimaryTextColor); //estimatedPrintTime.HAnchor = Agg.UI.HAnchor.ParentLeft; estimatedPrintTime.Margin = new BorderDouble(0, 9, 0, 3); modelInfoContainer.AddChild(estimatedPrintTime); } string filamentVolumeLabel = "Filament Volume".Localize().ToUpper(); string filamentVolumeLabelFull = string.Format("{0}:", filamentVolumeLabel); modelInfoContainer.AddChild(new TextWidget(filamentVolumeLabelFull, textColor: ActiveTheme.Instance.PrimaryTextColor, pointSize: 9)); { double filamentMm3 = gcodeViewWidget.LoadedGCode.GetFilamentCubicMm(ActiveSliceSettings.Instance.FilamentDiameter); GuiWidget estimatedPrintTime = new TextWidget(string.Format("{0:0.00} cm3", filamentMm3 / 1000), pointSize: 14, textColor: ActiveTheme.Instance.PrimaryTextColor); //estimatedPrintTime.HAnchor = Agg.UI.HAnchor.ParentLeft; estimatedPrintTime.Margin = new BorderDouble(0, 9, 0, 3); modelInfoContainer.AddChild(estimatedPrintTime); } string weightLabel = "Est. Weight".Localize().ToUpper(); string weightLabelFull = string.Format("{0}:", weightLabel); modelInfoContainer.AddChild(new TextWidget(weightLabelFull, pointSize: 9, textColor: ActiveTheme.Instance.PrimaryTextColor)); { var density = 1.0; string filamentType = "PLA"; if (filamentType == "ABS") { density = 1.04; } else if (filamentType == "PLA") { density = 1.24; } double filamentWeightGrams = gcodeViewWidget.LoadedGCode.GetFilamentWeightGrams(ActiveSliceSettings.Instance.FilamentDiameter, density); GuiWidget estimatedPrintTime = new TextWidget(string.Format("{0:0.00} g", filamentWeightGrams), pointSize: 14, textColor: ActiveTheme.Instance.PrimaryTextColor); //estimatedPrintTime.HAnchor = Agg.UI.HAnchor.ParentLeft; estimatedPrintTime.Margin = new BorderDouble(0, 9, 0, 3); modelInfoContainer.AddChild(estimatedPrintTime); } //modelInfoContainer.AddChild(new TextWidget("Layer Count:", textColor: ActiveTheme.Instance.PrimaryTextColor)); buttonPanel.AddChild(modelInfoContainer); textImageButtonFactory.FixedWidth = oldWidth; }