public SlicePresetsPage(PrinterConfig printer, PresetsContext presetsContext)
            : base("Close".Localize())
        {
            this.presetsContext    = presetsContext;
            this.printer           = printer;
            this.AlwaysOnTopOfMain = true;

            this.WindowTitle = "Slice Presets Editor".Localize();
            this.WindowSize  = new Vector2(640, 480);
            this.AnchorAll();

            this.headerRow.Visible  = false;
            this.contentRow.Padding = 0;

            contentRow.BackgroundColor = Color.Transparent;

            var inlineNameEdit = new InlineStringEdit(presetsContext.PersistenceLayer.Name, theme, presetsContext.LayerType.ToString() + " Name", boldFont: true);

            inlineNameEdit.ValueChanged += (s, e) =>
            {
                printer.Settings.SetValue(SettingsKey.layer_name, inlineNameEdit.Text, presetsContext.PersistenceLayer);
            };
            contentRow.AddChild(inlineNameEdit);

            var sliceSettingsWidget = CreateSliceSettingsWidget(printer, presetsContext.PersistenceLayer);

            contentRow.AddChild(sliceSettingsWidget);

            var duplicateButton = theme.CreateDialogButton("Duplicate".Localize());

            duplicateButton.Click += (s, e) =>
            {
                string sanitizedName  = numberMatch.Replace(inlineNameEdit.Text, "").Trim();
                string newProfileName = agg_basics.GetNonCollidingName(sanitizedName, presetsContext.PresetLayers.Select(preset => preset.ValueOrDefault(SettingsKey.layer_name)));

                var clonedLayer = presetsContext.PersistenceLayer.Clone();
                clonedLayer.Name = newProfileName;
                presetsContext.PresetLayers.Add(clonedLayer);

                presetsContext.SetAsActive(clonedLayer.LayerID);
                presetsContext.PersistenceLayer = clonedLayer;

                sliceSettingsWidget.Close();
                sliceSettingsWidget = CreateSliceSettingsWidget(printer, clonedLayer);
                contentRow.AddChild(sliceSettingsWidget);

                inlineNameEdit.Text = newProfileName;
            };

            this.AddPageAction(duplicateButton);

            var deleteButton = theme.CreateDialogButton("Delete".Localize());

            deleteButton.Click += (s, e) =>
            {
                presetsContext.DeleteLayer();
                this.DialogWindow.Close();
            };
            this.AddPageAction(deleteButton);
        }
        public ConfigurePrinterWidget(SettingsContext settingsContext, PrinterConfig printer, ThemeConfig theme)
            : base(FlowDirection.TopToBottom)
        {
            var inlineNameEdit = new InlineStringEdit(printer.Settings.GetValue(SettingsKey.printer_name), theme, "Printer Name", boldFont: true);

            inlineNameEdit.ValueChanged += (s, e) =>
            {
                printer.Settings.SetValue(SettingsKey.printer_name, inlineNameEdit.Text);
            };
            this.AddChild(inlineNameEdit);

            void Printer_SettingChanged(object s, StringEventArgs stringEvent)
            {
                if (s is PrinterSettings printerSettings &&
                    stringEvent?.Data == SettingsKey.printer_name)
                {
                    // Try to find a printer tab for the given printer
                    inlineNameEdit.Text = printerSettings.GetValue(SettingsKey.printer_name);
                }
            }

            printer.Settings.SettingChanged += Printer_SettingChanged;

            inlineNameEdit.Closed += (s, e) =>
            {
                printer.Settings.SettingChanged -= Printer_SettingChanged;
            };

            var settingsSection = PrinterSettings.Layout.PrinterSections[0];

            switch (UserSettings.Instance.get(UserSettingsKey.SliceSettingsViewDetail))
            {
            case "Simple":
                settingsSection = PrinterSettings.Layout.PrinterSections[0];
                break;

            case "Intermediate":
                settingsSection = PrinterSettings.Layout.PrinterSections[1];
                break;

            case "Advanced":
                settingsSection = PrinterSettings.Layout.PrinterSections[2];
                break;
            }

            this.AddChild(
                new SliceSettingsTabView(
                    settingsContext,
                    "ConfigurePrinter",
                    printer,
                    settingsSection,
                    theme,
                    isPrimarySettingsView: true,
                    justMySettingsTitle: "My Modified Settings (Printer)".Localize(),
                    databaseMRUKey: UserSettingsKey.ConfigurePrinter_CurrentTab));
        }
Beispiel #3
0
        public ConfigurePrinterWidget(SettingsContext settingsContext, PrinterConfig printer, ThemeConfig theme)
            : base(FlowDirection.TopToBottom)
        {
            var inlineNameEdit = new InlineStringEdit(printer.Settings.GetValue(SettingsKey.printer_name), theme, "Printer Name", boldFont: true);

            inlineNameEdit.ValueChanged += (s, e) =>
            {
                printer.Settings.SetValue(SettingsKey.printer_name, inlineNameEdit.Text);
            };
            this.AddChild(inlineNameEdit);

            this.AddChild(
                new SliceSettingsTabView(
                    settingsContext,
                    "ConfigurePrinter",
                    printer,
                    "Printer",
                    theme,
                    isPrimarySettingsView: true,
                    databaseMRUKey: UserSettingsKey.ConfigurePrinter_CurrentTab));
        }