public GCodeDetailsView(GCodeFile gCodeMemoryFile, PrinterConfig printer, ThemeConfig theme) : base(FlowDirection.TopToBottom) { this.theme = theme; this.gCodeMemoryFile = gCodeMemoryFile; this.printer = printer; // put in the print time AddSetting("Print Time".Localize(), gCodeMemoryFile.EstimatedPrintTime()); // show the filament used AddSetting("Filament Length".Localize(), gCodeMemoryFile.FilamentUsed(printer)); AddSetting("Filament Volume".Localize(), gCodeMemoryFile.FilamentVolume(printer)); // Cost info is only displayed when available - conditionalCostPanel is invisible when cost <= 0 costTextWidget = AddSetting("Estimated Cost".Localize(), gCodeMemoryFile.EstimatedCost(printer)); massTextWidget = AddSetting("Estimated Mass".Localize(), gCodeMemoryFile.EstimatedMass(printer)); conditionalCostContainer = costTextWidget.Parent; conditionalCostContainer.Visible = gCodeMemoryFile.TotalCost(printer) > 0; printer.Settings.SettingChanged += Printer_SettingChanged; }
private void Printer_SettingChanged(object s, EventArgs e) { if (e is StringEventArgs stringEvent) { if (stringEvent.Data == SettingsKey.filament_cost || stringEvent.Data == SettingsKey.filament_diameter || stringEvent.Data == SettingsKey.filament_density) { massTextWidget.Text = gCodeMemoryFile.EstimatedMass(printer); conditionalCostContainer.Visible = gCodeMemoryFile.TotalCost(printer) > 0; if (gCodeMemoryFile.TotalCost(printer) > 0) { costTextWidget.Text = gCodeMemoryFile.EstimatedCost(printer); } } } }