Example #1
0
        public PartPreviewMainWindow(PrintItemWrapper printItem, View3DWidget.AutoRotate autoRotate3DView, View3DWidget.OpenMode openMode = View3DWidget.OpenMode.Viewing)
            : base(750, 550)
        {
            UseOpenGL = true;
            string partPreviewTitle = LocalizedString.Get("MatterControl");

            Title = string.Format("{0}: ", partPreviewTitle) + Path.GetFileName(printItem.Name);

            this.Name = "Part Preview Window";

            partPreviewWidget         = new PartPreviewContent(printItem, View3DWidget.WindowMode.StandAlone, autoRotate3DView, openMode);
            partPreviewWidget.Closed += (sender, e) =>
            {
                Close();
            };

#if __ANDROID__
            TerminalWidget terminalWidget = new TerminalWidget(true);
            this.AddChild(new SoftKeyboardContentOffset(partPreviewWidget));
            //mainContainer.Closed += (sender, e) => { Close(); };
#else
            this.AddChild(partPreviewWidget);
#endif

            AddHandlers();

            Width  = 750;
            Height = 550;

            MinimumSize = new Vector2(400, 300);
            ShowAsSystemWindow();
        }
		public PartPreviewMainWindow(PrintItemWrapper printItem, View3DWidget.AutoRotate autoRotate3DView, View3DWidget.OpenMode openMode = View3DWidget.OpenMode.Viewing)
			: base(690, 340)
		{
			UseOpenGL = true;
			string partPreviewTitle = LocalizedString.Get("MatterControl");
			Title = string.Format("{0}: ", partPreviewTitle) + Path.GetFileName(printItem.Name);

			partPreviewWidget = new PartPreviewContent(printItem, View3DWidget.WindowMode.StandAlone, autoRotate3DView, openMode);
			partPreviewWidget.Closed += (sender, e) =>
			{
				Close();
			};

#if __ANDROID__
			TerminalWidget terminalWidget = new TerminalWidget(true);
			this.AddChild(new SoftKeyboardContentOffset(partPreviewWidget, SoftKeyboardContentOffset.AndroidKeyboardOffset));
			//mainContainer.Closed += (sender, e) => { Close(); };
#else
			this.AddChild(partPreviewWidget);
#endif

			AddHandlers();

			Width = 640;
			Height = 480;

			MinimumSize = new Vector2(400, 300);
			ShowAsSystemWindow();
		}
        public EePromRepetierWindow()
            : base(540, 480)
        {
            AlwaysOnTopOfMain = true;
            BackgroundColor   = ActiveTheme.Instance.SecondaryBackgroundColor;

            currentEePromSettings = new EePromRepetierStorage();

            FlowLayoutWidget topToBottom = new FlowLayoutWidget(FlowDirection.TopToBottom);

            topToBottom.VAnchor         = Agg.UI.VAnchor.Max_FitToChildren_ParentHeight;
            topToBottom.HAnchor         = Agg.UI.HAnchor.ParentLeftRight;
            topToBottom.BackgroundColor = ActiveTheme.Instance.PrimaryBackgroundColor;
            topToBottom.Padding         = new BorderDouble(3, 0);

            FlowLayoutWidget row = new FlowLayoutWidget();

            row.HAnchor         = Agg.UI.HAnchor.ParentLeftRight;
            row.BackgroundColor = ActiveTheme.Instance.PrimaryBackgroundColor;
            GuiWidget descriptionWidget = AddDescription(LocalizedString.Get("Description"));

            descriptionWidget.Margin = new BorderDouble(left: 3);
            row.AddChild(descriptionWidget);

            CreateSpacer(row);

            GuiWidget valueText = new TextWidget(LocalizedString.Get("Value"), textColor: ActiveTheme.Instance.PrimaryTextColor);

            valueText.VAnchor = Agg.UI.VAnchor.ParentCenter;
            valueText.Margin  = new BorderDouble(left: 5, right: 60);
            row.AddChild(valueText);
            topToBottom.AddChild(row);

            {
                ScrollableWidget settingsAreaScrollBox = new ScrollableWidget(true);
                settingsAreaScrollBox.ScrollArea.HAnchor |= HAnchor.ParentLeftRight;
                settingsAreaScrollBox.AnchorAll();
                settingsAreaScrollBox.BackgroundColor = ActiveTheme.Instance.SecondaryBackgroundColor;
                topToBottom.AddChild(settingsAreaScrollBox);

                settingsColmun         = new FlowLayoutWidget(FlowDirection.TopToBottom);
                settingsColmun.HAnchor = HAnchor.Max_FitToChildren_ParentWidth;

                settingsAreaScrollBox.AddChild(settingsColmun);
            }

            FlowLayoutWidget buttonBar = new FlowLayoutWidget();

            buttonBar.HAnchor         = Agg.UI.HAnchor.Max_FitToChildren_ParentWidth;
            buttonBar.BackgroundColor = ActiveTheme.Instance.PrimaryBackgroundColor;
            buttonSave        = textImageButtonFactory.Generate(LocalizedString.Get("Save To EEPROM"));
            buttonSave.Margin = new BorderDouble(0, 3);
            buttonBar.AddChild(buttonSave);

            CreateSpacer(buttonBar);

            buttonCancel        = textImageButtonFactory.Generate(LocalizedString.Get("Cancel"));
            buttonCancel.Margin = new BorderDouble(3);
            buttonBar.AddChild(buttonCancel);

            topToBottom.AddChild(buttonBar);

#if __ANDROID__
            TerminalWidget terminalWidget = new TerminalWidget(true);
            this.AddChild(new SoftKeyboardContentOffset(topToBottom));
            //topToBottom.Closed += (sender, e) => { Close(); };
#else
            this.AddChild(topToBottom);
#endif

            translate();

            ShowAsSystemWindow();

            currentEePromSettings.Clear();
            PrinterConnectionAndCommunication.Instance.CommunicationUnconditionalFromPrinter.RegisterEvent(currentEePromSettings.Add, ref unregisterEvents);
            currentEePromSettings.eventAdded += NewSettingReadFromPrinter;
            currentEePromSettings.AskPrinterForSettings();

#if SIMULATE_CONNECTION
            UiThread.RunOnIdle(AddSimulatedItems);
#endif
        }
        public EePromMarlinWindow()
            : base(700, 480)
        {
            AlwaysOnTopOfMain = true;
            Title             = "Marlin Firmware EEPROM Settings".Localize();

            currentEePromSettings             = new EePromMarlinSettings();
            currentEePromSettings.eventAdded += SetUiToPrinterSettings;

            FlowLayoutWidget mainContainer = new FlowLayoutWidget(FlowDirection.TopToBottom);

            mainContainer.VAnchor         = Agg.UI.VAnchor.Max_FitToChildren_ParentHeight;
            mainContainer.HAnchor         = Agg.UI.HAnchor.ParentLeftRight;
            mainContainer.BackgroundColor = ActiveTheme.Instance.PrimaryBackgroundColor;
            mainContainer.Padding         = new BorderDouble(3, 0);

            FlowLayoutWidget topToBottom = new FlowLayoutWidget(FlowDirection.TopToBottom);

            topToBottom.VAnchor         = Agg.UI.VAnchor.Max_FitToChildren_ParentHeight;
            topToBottom.HAnchor         = Agg.UI.HAnchor.ParentLeftRight;
            topToBottom.BackgroundColor = ActiveTheme.Instance.SecondaryBackgroundColor;
            topToBottom.Padding         = new BorderDouble(top: 3);

            // the top button bar
            {
                FlowLayoutWidget topButtonBar = new FlowLayoutWidget();
                topButtonBar.HAnchor         = Agg.UI.HAnchor.ParentLeftRight;
                topButtonBar.BackgroundColor = ActiveTheme.Instance.PrimaryBackgroundColor;

                topButtonBar.Margin = new BorderDouble(0, 3);

                Button buttonSetToFactorySettings = textImageButtonFactory.Generate("Reset to Factory Defaults".Localize());
                topButtonBar.AddChild(buttonSetToFactorySettings);

                buttonSetToFactorySettings.Click += (sender, e) =>
                {
                    currentEePromSettings.SetPrinterToFactorySettings();
                    currentEePromSettings.Update();
                };

                mainContainer.AddChild(topButtonBar);
            }

            topToBottom.AddChild(Create4FieldSet("Steps per mm:".Localize(),
                                                 "X:", ref stepsPerMmX,
                                                 "Y:", ref stepsPerMmY,
                                                 "Z:", ref stepsPerMmZ,
                                                 "E:", ref stepsPerMmE));

            topToBottom.AddChild(Create4FieldSet("Maximum feedrates [mm/s]:".Localize(),
                                                 "X:", ref maxFeedrateMmPerSX,
                                                 "Y:", ref maxFeedrateMmPerSY,
                                                 "Z:", ref maxFeedrateMmPerSZ,
                                                 "E:", ref maxFeedrateMmPerSE));

            topToBottom.AddChild(Create4FieldSet("Maximum Acceleration [mm/s²]:".Localize(),
                                                 "X:", ref maxAccelerationMmPerSSqrdX,
                                                 "Y:", ref maxAccelerationMmPerSSqrdY,
                                                 "Z:", ref maxAccelerationMmPerSSqrdZ,
                                                 "E:", ref maxAccelerationMmPerSSqrdE));

            topToBottom.AddChild(CreateField("Acceleration:".Localize(), ref acceleration));
            topToBottom.AddChild(CreateField("Retract Acceleration:".Localize(), ref retractAcceleration));

            topToBottom.AddChild(Create3FieldSet("PID settings:".Localize(),
                                                 "P:", ref pidP,
                                                 "I:", ref pidI,
                                                 "D:", ref pidD));

            topToBottom.AddChild(Create3FieldSet("Homing Offset:".Localize(),
                                                 "X:", ref homingOffsetX,
                                                 "Y:", ref homingOffsetY,
                                                 "Z:", ref homingOffsetZ));

            topToBottom.AddChild(CreateField("Min feedrate [mm/s]:".Localize(), ref minFeedrate));
            topToBottom.AddChild(CreateField("Min travel feedrate [mm/s]:".Localize(), ref minTravelFeedrate));
            topToBottom.AddChild(CreateField("Minimum segment time [ms]:".Localize(), ref minSegmentTime));
            topToBottom.AddChild(CreateField("Maximum X-Y jerk [mm/s]:".Localize(), ref maxXYJerk));
            topToBottom.AddChild(CreateField("Maximum Z jerk [mm/s]:".Localize(), ref maxZJerk));

            GuiWidget topBottomSpacer = new GuiWidget(1, 1);

            topBottomSpacer.VAnchor = VAnchor.ParentBottomTop;
            topToBottom.AddChild(topBottomSpacer);

            mainContainer.AddChild(topToBottom);

            // the bottom button bar
            {
                FlowLayoutWidget bottomButtonBar = new FlowLayoutWidget();
                bottomButtonBar.HAnchor         = Agg.UI.HAnchor.Max_FitToChildren_ParentWidth;
                bottomButtonBar.BackgroundColor = ActiveTheme.Instance.PrimaryBackgroundColor;
                bottomButtonBar.Margin          = new BorderDouble(0, 3);

                Button buttonSave = textImageButtonFactory.Generate("Save to EEProm".Localize());
                bottomButtonBar.AddChild(buttonSave);
                buttonSave.Click += (sender, e) =>
                {
                    UiThread.RunOnIdle(() =>
                    {
                        SaveSettingsToActive();
                        currentEePromSettings.SaveToEeProm();
                        Close();
                    });
                };

                CreateSpacer(bottomButtonBar);

                // put in the import button
#if true
                {
                    Button buttonImport = textImageButtonFactory.Generate("Import".Localize() + "...");
                    buttonImport.Margin = new BorderDouble(0, 3);
                    buttonImport.Click += (sender, e) =>
                    {
                        UiThread.RunOnIdle(() =>
                        {
                            FileDialog.OpenFileDialog(
                                new OpenFileDialogParams("EEPROM Settings" + "|*.ini")
                            {
                                ActionButtonLabel = "Import EEPROM Settings".Localize(),
                                Title             = "Import EEPROM".Localize(),
                            },
                                (openParams) =>
                            {
                                if (!string.IsNullOrEmpty(openParams.FileName))
                                {
                                    currentEePromSettings.Import(openParams.FileName);
                                    SetUiToPrinterSettings(null, null);
                                }
                            });
                        });
                    };
                    bottomButtonBar.AddChild(buttonImport);
                }

                // put in the export button
                {
                    Button buttonExport = textImageButtonFactory.Generate("Export".Localize() + "...");
                    buttonExport.Margin = new BorderDouble(0, 3);
                    buttonExport.Click += (sender, e) =>
                    {
                        UiThread.RunOnIdle(() =>
                        {
                            string defaultFileNameNoPath = "eeprom_settings.ini";
                            FileDialog.SaveFileDialog(
                                new SaveFileDialogParams("EEPROM Settings" + "|*.ini")
                            {
                                ActionButtonLabel = "Export EEPROM Settings".Localize(),
                                Title             = "Export EEPROM".Localize(),
                                FileName          = defaultFileNameNoPath
                            },
                                (saveParams) =>
                            {
                                if (!string.IsNullOrEmpty(saveParams.FileName) &&
                                    saveParams.FileName != defaultFileNameNoPath)
                                {
                                    currentEePromSettings.Export(saveParams.FileName);
                                }
                            });
                        });
                    };
                    bottomButtonBar.AddChild(buttonExport);
                }
#endif

                Button buttonAbort = textImageButtonFactory.Generate("Close".Localize());
                bottomButtonBar.AddChild(buttonAbort);
                buttonAbort.Click += buttonAbort_Click;

                mainContainer.AddChild(bottomButtonBar);
            }

            PrinterConnectionAndCommunication.Instance.CommunicationUnconditionalFromPrinter.RegisterEvent(currentEePromSettings.Add, ref unregisterEvents);

#if __ANDROID__
            TerminalWidget terminalWidget = new TerminalWidget(true);
            this.AddChild(new SoftKeyboardContentOffset(mainContainer));
            //mainContainer.Closed += (sender, e) => { Close(); };
#else
            AddChild(mainContainer);
#endif

            ShowAsSystemWindow();

            // and ask the printer to send the settings
            currentEePromSettings.Update();

            foreach (GuiWidget widget in leftStuffToSize)
            {
                widget.Width = maxWidthOfLeftStuff;
            }
        }
        public EePromMarlinWindow()
            : base(700, 480)
        {
            AlwaysOnTopOfMain = true;
            Title             = LocalizedString.Get("Marlin Firmware EEPROM Settings");

            currentEePromSettings             = new EePromMarlinSettings();
            currentEePromSettings.eventAdded += SetUiToPrinterSettings;

            FlowLayoutWidget mainContainer = new FlowLayoutWidget(FlowDirection.TopToBottom);

            mainContainer.VAnchor         = Agg.UI.VAnchor.Max_FitToChildren_ParentHeight;
            mainContainer.HAnchor         = Agg.UI.HAnchor.ParentLeftRight;
            mainContainer.BackgroundColor = ActiveTheme.Instance.PrimaryBackgroundColor;
            mainContainer.Padding         = new BorderDouble(3, 0);

            FlowLayoutWidget topToBottom = new FlowLayoutWidget(FlowDirection.TopToBottom);

            topToBottom.VAnchor         = Agg.UI.VAnchor.Max_FitToChildren_ParentHeight;
            topToBottom.HAnchor         = Agg.UI.HAnchor.ParentLeftRight;
            topToBottom.BackgroundColor = ActiveTheme.Instance.SecondaryBackgroundColor;
            topToBottom.Padding         = new BorderDouble(top: 3);

            // the top button bar
            {
                FlowLayoutWidget topButtonBar = new FlowLayoutWidget();
                topButtonBar.HAnchor         = Agg.UI.HAnchor.ParentLeftRight;
                topButtonBar.BackgroundColor = ActiveTheme.Instance.PrimaryBackgroundColor;

                topButtonBar.Margin = new BorderDouble(0, 3);

                CreateMainButton(ref buttonSetToFactorySettings, topButtonBar, "Reset to Factory Defaults");
                buttonSetToFactorySettings.Click += SetToFactorySettings;

                mainContainer.AddChild(topButtonBar);
            }

            topToBottom.AddChild(Create4FieldSet("Steps per mm:",
                                                 "X:", ref stepsPerMmX,
                                                 "Y:", ref stepsPerMmY,
                                                 "Z:", ref stepsPerMmZ,
                                                 "E:", ref stepsPerMmE));

            topToBottom.AddChild(Create4FieldSet("Maximum feedrates [mm/s]:",
                                                 "X:", ref maxFeedrateMmPerSX,
                                                 "Y:", ref maxFeedrateMmPerSY,
                                                 "Z:", ref maxFeedrateMmPerSZ,
                                                 "E:", ref maxFeedrateMmPerSE));

            topToBottom.AddChild(Create4FieldSet("Maximum Acceleration [mm/s²]:",
                                                 "X:", ref maxAccelerationMmPerSSqrdX,
                                                 "Y:", ref maxAccelerationMmPerSSqrdY,
                                                 "Z:", ref maxAccelerationMmPerSSqrdZ,
                                                 "E:", ref maxAccelerationMmPerSSqrdE));

            topToBottom.AddChild(CreateField("Acceleration:", ref acceleration));
            topToBottom.AddChild(CreateField("Retract Acceleration:", ref retractAcceleration));

            topToBottom.AddChild(Create3FieldSet("PID settings:",
                                                 "P:", ref pidP,
                                                 "I:", ref pidI,
                                                 "D:", ref pidD));

            topToBottom.AddChild(Create3FieldSet("Homing Offset:",
                                                 "X:", ref homingOffsetX,
                                                 "Y:", ref homingOffsetY,
                                                 "Z:", ref homingOffsetZ));

            topToBottom.AddChild(CreateField("Min feedrate [mm/s]:", ref minFeedrate));
            topToBottom.AddChild(CreateField("Min travel feedrate [mm/s]:", ref minTravelFeedrate));
            topToBottom.AddChild(CreateField("Minimum segment time [ms]:", ref minSegmentTime));
            topToBottom.AddChild(CreateField("Maximum X-Y jerk [mm/s]:", ref maxXYJerk));
            topToBottom.AddChild(CreateField("Maximum Z jerk [mm/s]:", ref maxZJerk));

            GuiWidget topBottomSpacer = new GuiWidget(1, 1);

            topBottomSpacer.VAnchor = VAnchor.ParentBottomTop;
            topToBottom.AddChild(topBottomSpacer);

            mainContainer.AddChild(topToBottom);

            // the bottom button bar
            {
                FlowLayoutWidget bottomButtonBar = new FlowLayoutWidget();
                bottomButtonBar.HAnchor         = Agg.UI.HAnchor.Max_FitToChildren_ParentWidth;
                bottomButtonBar.BackgroundColor = ActiveTheme.Instance.PrimaryBackgroundColor;
                bottomButtonBar.Margin          = new BorderDouble(0, 3);

                CreateMainButton(ref buttonSave, bottomButtonBar, "Save to EEProm");
                buttonSave.Click += buttonSave_Click;

                CreateSpacer(bottomButtonBar);

                CreateMainButton(ref buttonAbort, bottomButtonBar, "Close");
                buttonAbort.Click += buttonAbort_Click;

                mainContainer.AddChild(bottomButtonBar);
            }

            PrinterConnectionAndCommunication.Instance.CommunicationUnconditionalFromPrinter.RegisterEvent(currentEePromSettings.Add, ref unregisterEvents);

#if __ANDROID__
            TerminalWidget terminalWidget = new TerminalWidget(true);
            this.AddChild(new SoftKeyboardContentOffset(mainContainer, SoftKeyboardContentOffset.AndroidKeyboardOffset));
            //mainContainer.Closed += (sender, e) => { Close(); };
#else
            AddChild(mainContainer);
#endif

            ShowAsSystemWindow();

            // and ask the printer to send the settings
            currentEePromSettings.Update();

            foreach (GuiWidget widget in leftStuffToSize)
            {
                widget.Width = maxWidthOfLeftStuff;
            }
        }
		public EePromMarlinWindow()
			: base(700, 480)
		{
			AlwaysOnTopOfMain = true;
			Title = LocalizedString.Get("Marlin Firmware EEPROM Settings");

			currentEePromSettings = new EePromMarlinSettings();
			currentEePromSettings.eventAdded += SetUiToPrinterSettings;

			FlowLayoutWidget mainContainer = new FlowLayoutWidget(FlowDirection.TopToBottom);
			mainContainer.VAnchor = Agg.UI.VAnchor.Max_FitToChildren_ParentHeight;
			mainContainer.HAnchor = Agg.UI.HAnchor.ParentLeftRight;
			mainContainer.BackgroundColor = ActiveTheme.Instance.PrimaryBackgroundColor;
			mainContainer.Padding = new BorderDouble(3, 0);

			FlowLayoutWidget topToBottom = new FlowLayoutWidget(FlowDirection.TopToBottom);
			topToBottom.VAnchor = Agg.UI.VAnchor.Max_FitToChildren_ParentHeight;
			topToBottom.HAnchor = Agg.UI.HAnchor.ParentLeftRight;
			topToBottom.BackgroundColor = ActiveTheme.Instance.SecondaryBackgroundColor;
			topToBottom.Padding = new BorderDouble(top: 3);

			// the top button bar
			{
				FlowLayoutWidget topButtonBar = new FlowLayoutWidget();
				topButtonBar.HAnchor = Agg.UI.HAnchor.ParentLeftRight;
				topButtonBar.BackgroundColor = ActiveTheme.Instance.PrimaryBackgroundColor;

				topButtonBar.Margin = new BorderDouble(0, 3);

				CreateMainButton(ref buttonSetToFactorySettings, topButtonBar, "Reset to Factory Defaults");
				buttonSetToFactorySettings.Click += SetToFactorySettings;

				mainContainer.AddChild(topButtonBar);
			}

			topToBottom.AddChild(Create4FieldSet("Steps per mm:",
				"X:", ref stepsPerMmX,
				"Y:", ref stepsPerMmY,
				"Z:", ref stepsPerMmZ,
				"E:", ref stepsPerMmE));

			topToBottom.AddChild(Create4FieldSet("Maximum feedrates [mm/s]:",
				"X:", ref maxFeedrateMmPerSX,
				"Y:", ref maxFeedrateMmPerSY,
				"Z:", ref maxFeedrateMmPerSZ,
				"E:", ref maxFeedrateMmPerSE));

			topToBottom.AddChild(Create4FieldSet("Maximum Acceleration [mm/s²]:",
				"X:", ref maxAccelerationMmPerSSqrdX,
				"Y:", ref maxAccelerationMmPerSSqrdY,
				"Z:", ref maxAccelerationMmPerSSqrdZ,
				"E:", ref maxAccelerationMmPerSSqrdE));

			topToBottom.AddChild(CreateField("Acceleration:", ref acceleration));
			topToBottom.AddChild(CreateField("Retract Acceleration:", ref retractAcceleration));

			topToBottom.AddChild(Create3FieldSet("PID settings:",
				"P:", ref pidP,
				"I:", ref pidI,
				"D:", ref pidD));

			topToBottom.AddChild(Create3FieldSet("Homing Offset:",
				"X:", ref homingOffsetX,
				"Y:", ref homingOffsetY,
				"Z:", ref homingOffsetZ));

			topToBottom.AddChild(CreateField("Min feedrate [mm/s]:", ref minFeedrate));
			topToBottom.AddChild(CreateField("Min travel feedrate [mm/s]:", ref minTravelFeedrate));
			topToBottom.AddChild(CreateField("Minimum segment time [ms]:", ref minSegmentTime));
			topToBottom.AddChild(CreateField("Maximum X-Y jerk [mm/s]:", ref maxXYJerk));
			topToBottom.AddChild(CreateField("Maximum Z jerk [mm/s]:", ref maxZJerk));

			GuiWidget topBottomSpacer = new GuiWidget(1, 1);
			topBottomSpacer.VAnchor = VAnchor.ParentBottomTop;
			topToBottom.AddChild(topBottomSpacer);

			mainContainer.AddChild(topToBottom);

			// the bottom button bar
			{
				FlowLayoutWidget bottomButtonBar = new FlowLayoutWidget();
				bottomButtonBar.HAnchor = Agg.UI.HAnchor.Max_FitToChildren_ParentWidth;
				bottomButtonBar.BackgroundColor = ActiveTheme.Instance.PrimaryBackgroundColor;
				bottomButtonBar.Margin = new BorderDouble(0, 3);

				CreateMainButton(ref buttonSave, bottomButtonBar, "Save to EEProm");
				buttonSave.Click += buttonSave_Click;

				CreateSpacer(bottomButtonBar);

				CreateMainButton(ref buttonAbort, bottomButtonBar, "Close");
				buttonAbort.Click += buttonAbort_Click;

				mainContainer.AddChild(bottomButtonBar);
			}

			PrinterConnectionAndCommunication.Instance.CommunicationUnconditionalFromPrinter.RegisterEvent(currentEePromSettings.Add, ref unregisterEvents);

#if __ANDROID__
			TerminalWidget terminalWidget = new TerminalWidget(true);
			this.AddChild(new SoftKeyboardContentOffset(mainContainer));
			//mainContainer.Closed += (sender, e) => { Close(); };
#else
			AddChild(mainContainer);
#endif

			ShowAsSystemWindow();

			// and ask the printer to send the settings
			currentEePromSettings.Update();

			foreach (GuiWidget widget in leftStuffToSize)
			{
				widget.Width = maxWidthOfLeftStuff;
			}
		}
		public EePromRepetierWindow()
			: base(540, 480)
		{
			AlwaysOnTopOfMain = true;
			BackgroundColor = ActiveTheme.Instance.SecondaryBackgroundColor;

			currentEePromSettings = new EePromRepetierStorage();

			FlowLayoutWidget topToBottom = new FlowLayoutWidget(FlowDirection.TopToBottom);
			topToBottom.VAnchor = Agg.UI.VAnchor.Max_FitToChildren_ParentHeight;
			topToBottom.HAnchor = Agg.UI.HAnchor.ParentLeftRight;
			topToBottom.BackgroundColor = ActiveTheme.Instance.PrimaryBackgroundColor;
			topToBottom.Padding = new BorderDouble(3, 0);

			FlowLayoutWidget row = new FlowLayoutWidget();
			row.HAnchor = Agg.UI.HAnchor.ParentLeftRight;
			row.BackgroundColor = ActiveTheme.Instance.PrimaryBackgroundColor;
			GuiWidget descriptionWidget = AddDescription(LocalizedString.Get("Description"));
			descriptionWidget.Margin = new BorderDouble(left: 3);
			row.AddChild(descriptionWidget);

			CreateSpacer(row);

			GuiWidget valueText = new TextWidget(LocalizedString.Get("Value"), textColor: ActiveTheme.Instance.PrimaryTextColor);
			valueText.VAnchor = Agg.UI.VAnchor.ParentCenter;
			valueText.Margin = new BorderDouble(left: 5, right: 60);
			row.AddChild(valueText);
			topToBottom.AddChild(row);

			{
				ScrollableWidget settingsAreaScrollBox = new ScrollableWidget(true);
				settingsAreaScrollBox.ScrollArea.HAnchor |= HAnchor.ParentLeftRight;
				settingsAreaScrollBox.AnchorAll();
				settingsAreaScrollBox.BackgroundColor = ActiveTheme.Instance.SecondaryBackgroundColor;
				topToBottom.AddChild(settingsAreaScrollBox);

				settingsColmun = new FlowLayoutWidget(FlowDirection.TopToBottom);
				settingsColmun.HAnchor = HAnchor.Max_FitToChildren_ParentWidth;

				settingsAreaScrollBox.AddChild(settingsColmun);
			}

			FlowLayoutWidget buttonBar = new FlowLayoutWidget();
			buttonBar.HAnchor = Agg.UI.HAnchor.Max_FitToChildren_ParentWidth;
			buttonBar.BackgroundColor = ActiveTheme.Instance.PrimaryBackgroundColor;
			buttonSave = textImageButtonFactory.Generate(LocalizedString.Get("Save To EEPROM"));
			buttonSave.Margin = new BorderDouble(0, 3);
			buttonBar.AddChild(buttonSave);

			CreateSpacer(buttonBar);

			buttonCancel = textImageButtonFactory.Generate(LocalizedString.Get("Cancel"));
			buttonCancel.Margin = new BorderDouble(3);
			buttonBar.AddChild(buttonCancel);

			topToBottom.AddChild(buttonBar);

#if __ANDROID__
			TerminalWidget terminalWidget = new TerminalWidget(true);
			this.AddChild(new SoftKeyboardContentOffset(topToBottom));
			//topToBottom.Closed += (sender, e) => { Close(); };
#else
			this.AddChild(topToBottom);
#endif

			translate();

			ShowAsSystemWindow();

			currentEePromSettings.Clear();
			PrinterConnectionAndCommunication.Instance.CommunicationUnconditionalFromPrinter.RegisterEvent(currentEePromSettings.Add, ref unregisterEvents);
			currentEePromSettings.eventAdded += NewSettingReadFromPrinter;
			currentEePromSettings.AskPrinterForSettings();

#if SIMULATE_CONNECTION
            UiThread.RunOnIdle(AddSimulatedItems);
#endif
		}
Example #8
0
        public EePromRepetierWindow()
            : base(540, 480)
        {
            AlwaysOnTopOfMain = true;
            BackgroundColor   = ActiveTheme.Instance.SecondaryBackgroundColor;

            currentEePromSettings = new EePromRepetierStorage();

            FlowLayoutWidget topToBottom = new FlowLayoutWidget(FlowDirection.TopToBottom);

            topToBottom.VAnchor         = Agg.UI.VAnchor.Max_FitToChildren_ParentHeight;
            topToBottom.HAnchor         = Agg.UI.HAnchor.ParentLeftRight;
            topToBottom.BackgroundColor = ActiveTheme.Instance.PrimaryBackgroundColor;
            topToBottom.Padding         = new BorderDouble(3, 0) * TextWidget.GlobalPointSizeScaleRatio;

            FlowLayoutWidget row = new FlowLayoutWidget();

            row.HAnchor         = Agg.UI.HAnchor.ParentLeftRight;
            row.BackgroundColor = ActiveTheme.Instance.PrimaryBackgroundColor;
            GuiWidget descriptionWidget = AddDescription(LocalizedString.Get("Description"));

            descriptionWidget.Margin = new BorderDouble(left: 3) * TextWidget.GlobalPointSizeScaleRatio;
            row.AddChild(descriptionWidget);

            CreateSpacer(row);

            GuiWidget valueText = new TextWidget(LocalizedString.Get("Value"), textColor: ActiveTheme.Instance.PrimaryTextColor);

            valueText.VAnchor = Agg.UI.VAnchor.ParentCenter;
            valueText.Margin  = new BorderDouble(left: 5, right: 60) * TextWidget.GlobalPointSizeScaleRatio;
            row.AddChild(valueText);
            topToBottom.AddChild(row);

            {
                ScrollableWidget settingsAreaScrollBox = new ScrollableWidget(true);
                settingsAreaScrollBox.ScrollArea.HAnchor |= HAnchor.ParentLeftRight;
                settingsAreaScrollBox.AnchorAll();
                settingsAreaScrollBox.BackgroundColor = ActiveTheme.Instance.SecondaryBackgroundColor;
                topToBottom.AddChild(settingsAreaScrollBox);

                settingsColmun         = new FlowLayoutWidget(FlowDirection.TopToBottom);
                settingsColmun.HAnchor = HAnchor.Max_FitToChildren_ParentWidth;

                settingsAreaScrollBox.AddChild(settingsColmun);
            }

            FlowLayoutWidget buttonBar = new FlowLayoutWidget();

            buttonBar.HAnchor         = Agg.UI.HAnchor.Max_FitToChildren_ParentWidth;
            buttonBar.BackgroundColor = ActiveTheme.Instance.PrimaryBackgroundColor;

            // put in the save button
            {
                Button buttonSave = textImageButtonFactory.Generate("Save To EEPROM".Localize());
                buttonSave.Margin = new BorderDouble(0, 3) * TextWidget.GlobalPointSizeScaleRatio;
                buttonSave.Click += (sender, e) =>
                {
                    UiThread.RunOnIdle(() =>
                    {
                        currentEePromSettings.Save();
                        currentEePromSettings.Clear();
                        currentEePromSettings.eventAdded -= NewSettingReadFromPrinter;
                        Close();
                    });
                };

                buttonBar.AddChild(buttonSave);
            }

            CreateSpacer(buttonBar);

            // put in the import button
            {
                Button buttonImport = textImageButtonFactory.Generate("Import".Localize() + "...");
                buttonImport.Margin = new BorderDouble(0, 3) * TextWidget.GlobalPointSizeScaleRatio;
                buttonImport.Click += (sender, e) =>
                {
                    UiThread.RunOnIdle(() =>
                    {
                        FileDialog.OpenFileDialog(
                            new OpenFileDialogParams("EEPROM Settings" + "|*.ini")
                        {
                            ActionButtonLabel = "Import EEPROM Settings".Localize(),
                            Title             = "Import EEPROM".Localize(),
                        },
                            (openParams) =>
                        {
                            if (!string.IsNullOrEmpty(openParams.FileName))
                            {
                                currentEePromSettings.Import(openParams.FileName);
                                RebuildUi();
                            }
                        });
                    });
                };
                buttonBar.AddChild(buttonImport);
            }

            // put in the export button
            {
                Button buttonExport = textImageButtonFactory.Generate("Export".Localize() + "...");
                buttonExport.Margin = new BorderDouble(0, 3) * TextWidget.GlobalPointSizeScaleRatio;
                buttonExport.Click += (sender, e) =>
                {
                    UiThread.RunOnIdle(() =>
                    {
                        FileDialog.SaveFileDialog(
                            new SaveFileDialogParams("EEPROM Settings" + "|*.ini")
                        {
                            ActionButtonLabel = "Export EEPROM Settings".Localize(),
                            Title             = "Export EEPROM".Localize(),
                            FileName          = "eeprom_settings.ini"
                        },
                            (saveParams) =>
                        {
                            if (!string.IsNullOrEmpty(saveParams.FileName))
                            {
                                currentEePromSettings.Export(saveParams.FileName);
                            }
                        });
                    });
                };
                buttonBar.AddChild(buttonExport);
            }

            // put in the cancel button
            {
                Button buttonCancel = textImageButtonFactory.Generate("Close".Localize());
                buttonCancel.Margin = new BorderDouble(10, 3, 0, 3) * TextWidget.GlobalPointSizeScaleRatio;
                buttonCancel.Click += (sender, e) =>
                {
                    UiThread.RunOnIdle(() =>
                    {
                        currentEePromSettings.Clear();
                        currentEePromSettings.eventAdded -= NewSettingReadFromPrinter;
                        Close();
                    });
                };
                buttonBar.AddChild(buttonCancel);
            }

            topToBottom.AddChild(buttonBar);

#if __ANDROID__
            TerminalWidget terminalWidget = new TerminalWidget(true);
            this.AddChild(new SoftKeyboardContentOffset(topToBottom));
            //topToBottom.Closed += (sender, e) => { Close(); };
#else
            this.AddChild(topToBottom);
#endif

            Title = LocalizedString.Get("Firmware EEPROM Settings");

            ShowAsSystemWindow();

            currentEePromSettings.Clear();
            PrinterConnectionAndCommunication.Instance.CommunicationUnconditionalFromPrinter.RegisterEvent(currentEePromSettings.Add, ref unregisterEvents);
            currentEePromSettings.eventAdded += NewSettingReadFromPrinter;
            currentEePromSettings.AskPrinterForSettings();

#if SIMULATE_CONNECTION
            UiThread.RunOnIdle(AddSimulatedItems);
#endif
        }
		public EePromMarlinWindow()
			: base(700, 480)
		{
			AlwaysOnTopOfMain = true;
			Title = "Marlin Firmware EEPROM Settings".Localize();

			currentEePromSettings = new EePromMarlinSettings();
			currentEePromSettings.eventAdded += SetUiToPrinterSettings;

			FlowLayoutWidget mainContainer = new FlowLayoutWidget(FlowDirection.TopToBottom);
			mainContainer.VAnchor = Agg.UI.VAnchor.Max_FitToChildren_ParentHeight;
			mainContainer.HAnchor = Agg.UI.HAnchor.ParentLeftRight;
			mainContainer.BackgroundColor = ActiveTheme.Instance.PrimaryBackgroundColor;
			mainContainer.Padding = new BorderDouble(3, 0);

			FlowLayoutWidget topToBottom = new FlowLayoutWidget(FlowDirection.TopToBottom);
			topToBottom.VAnchor = Agg.UI.VAnchor.Max_FitToChildren_ParentHeight;
			topToBottom.HAnchor = Agg.UI.HAnchor.ParentLeftRight;
			topToBottom.BackgroundColor = ActiveTheme.Instance.SecondaryBackgroundColor;
			topToBottom.Padding = new BorderDouble(top: 3);

			// the top button bar
			{
				FlowLayoutWidget topButtonBar = new FlowLayoutWidget();
				topButtonBar.HAnchor = Agg.UI.HAnchor.ParentLeftRight;
				topButtonBar.BackgroundColor = ActiveTheme.Instance.PrimaryBackgroundColor;

				topButtonBar.Margin = new BorderDouble(0, 3);

				Button buttonSetToFactorySettings = textImageButtonFactory.Generate("Reset to Factory Defaults".Localize());
				topButtonBar.AddChild(buttonSetToFactorySettings);

				buttonSetToFactorySettings.Click += (sender, e) =>
				{
					currentEePromSettings.SetPrinterToFactorySettings();
					currentEePromSettings.Update();
				};

				mainContainer.AddChild(topButtonBar);
			}

			topToBottom.AddChild(Create4FieldSet("Steps per mm:".Localize(),
				"X:", ref stepsPerMmX,
				"Y:", ref stepsPerMmY,
				"Z:", ref stepsPerMmZ,
				"E:", ref stepsPerMmE));

			topToBottom.AddChild(Create4FieldSet("Maximum feedrates [mm/s]:".Localize(),
				"X:", ref maxFeedrateMmPerSX,
				"Y:", ref maxFeedrateMmPerSY,
				"Z:", ref maxFeedrateMmPerSZ,
				"E:", ref maxFeedrateMmPerSE));

			topToBottom.AddChild(Create4FieldSet("Maximum Acceleration [mm/s²]:".Localize(),
				"X:", ref maxAccelerationMmPerSSqrdX,
				"Y:", ref maxAccelerationMmPerSSqrdY,
				"Z:", ref maxAccelerationMmPerSSqrdZ,
				"E:", ref maxAccelerationMmPerSSqrdE));

			topToBottom.AddChild(CreateField("Acceleration:".Localize(), ref acceleration));
			topToBottom.AddChild(CreateField("Retract Acceleration:".Localize(), ref retractAcceleration));

			topToBottom.AddChild(Create3FieldSet("PID settings:".Localize(),
				"P:", ref pidP,
				"I:", ref pidI,
				"D:", ref pidD));

			topToBottom.AddChild(Create3FieldSet("Homing Offset:".Localize(),
				"X:", ref homingOffsetX,
				"Y:", ref homingOffsetY,
				"Z:", ref homingOffsetZ));

			topToBottom.AddChild(CreateField("Min feedrate [mm/s]:".Localize(), ref minFeedrate));
			topToBottom.AddChild(CreateField("Min travel feedrate [mm/s]:".Localize(), ref minTravelFeedrate));
			topToBottom.AddChild(CreateField("Minimum segment time [ms]:".Localize(), ref minSegmentTime));
			topToBottom.AddChild(CreateField("Maximum X-Y jerk [mm/s]:".Localize(), ref maxXYJerk));
			topToBottom.AddChild(CreateField("Maximum Z jerk [mm/s]:".Localize(), ref maxZJerk));

			GuiWidget topBottomSpacer = new GuiWidget(1, 1);
			topBottomSpacer.VAnchor = VAnchor.ParentBottomTop;
			topToBottom.AddChild(topBottomSpacer);

			mainContainer.AddChild(topToBottom);

			// the bottom button bar
			{
				FlowLayoutWidget bottomButtonBar = new FlowLayoutWidget();
				bottomButtonBar.HAnchor = Agg.UI.HAnchor.Max_FitToChildren_ParentWidth;
				bottomButtonBar.BackgroundColor = ActiveTheme.Instance.PrimaryBackgroundColor;
				bottomButtonBar.Margin = new BorderDouble(0, 3);

				Button buttonSave = textImageButtonFactory.Generate("Save to EEProm".Localize());
				bottomButtonBar.AddChild(buttonSave);
				buttonSave.Click += (sender, e) =>
				{
					UiThread.RunOnIdle(() =>
					{
						SaveSettingsToActive();
						currentEePromSettings.SaveToEeProm();
						Close();
					});
				};

				CreateSpacer(bottomButtonBar);

				// put in the import button
#if true
				{
					Button buttonImport = textImageButtonFactory.Generate("Import".Localize() + "...");
					buttonImport.Margin = new BorderDouble(0, 3) * TextWidget.GlobalPointSizeScaleRatio;
					buttonImport.Click += (sender, e) =>
					{
						UiThread.RunOnIdle(() =>
						{
							FileDialog.OpenFileDialog(
								new OpenFileDialogParams("EEPROM Settings" + "|*.ini")
								{
									ActionButtonLabel = "Import EEPROM Settings".Localize(),
									Title = "Import EEPROM".Localize(),
								},
									(openParams) =>
									{
										if (!string.IsNullOrEmpty(openParams.FileName))
										{
											currentEePromSettings.Import(openParams.FileName);
											SetUiToPrinterSettings(null, null);
                                        }
									});
						});
					};
					bottomButtonBar.AddChild(buttonImport);
				}

				// put in the export button
				{
					Button buttonExport = textImageButtonFactory.Generate("Export".Localize() + "...");
					buttonExport.Margin = new BorderDouble(0, 3) * TextWidget.GlobalPointSizeScaleRatio;
					buttonExport.Click += (sender, e) =>
					{
						UiThread.RunOnIdle(() =>
						{
							string defaultFileNameNoPath = "eeprom_settings.ini";
                            FileDialog.SaveFileDialog(
								new SaveFileDialogParams("EEPROM Settings" + "|*.ini")
								{
									ActionButtonLabel = "Export EEPROM Settings".Localize(),
									Title = "Export EEPROM".Localize(),
									FileName = defaultFileNameNoPath
								},
									(saveParams) =>
									{
										if (!string.IsNullOrEmpty(saveParams.FileName)
										&& saveParams.FileName != defaultFileNameNoPath)
										{
											currentEePromSettings.Export(saveParams.FileName);
										}
									});
						});
					};
					bottomButtonBar.AddChild(buttonExport);
				}
#endif

				Button buttonAbort = textImageButtonFactory.Generate("Close".Localize());
				bottomButtonBar.AddChild(buttonAbort);
				buttonAbort.Click += buttonAbort_Click;

				mainContainer.AddChild(bottomButtonBar);
			}

			PrinterConnectionAndCommunication.Instance.CommunicationUnconditionalFromPrinter.RegisterEvent(currentEePromSettings.Add, ref unregisterEvents);

#if __ANDROID__
			TerminalWidget terminalWidget = new TerminalWidget(true);
			this.AddChild(new SoftKeyboardContentOffset(mainContainer));
			//mainContainer.Closed += (sender, e) => { Close(); };
#else
			AddChild(mainContainer);
#endif

			ShowAsSystemWindow();

			// and ask the printer to send the settings
			currentEePromSettings.Update();

			foreach (GuiWidget widget in leftStuffToSize)
			{
				widget.Width = maxWidthOfLeftStuff;
			}
		}
		public EePromRepetierWindow()
			: base(540, 480)
		{
			AlwaysOnTopOfMain = true;
			BackgroundColor = ActiveTheme.Instance.SecondaryBackgroundColor;

			currentEePromSettings = new EePromRepetierStorage();

			FlowLayoutWidget topToBottom = new FlowLayoutWidget(FlowDirection.TopToBottom);
			topToBottom.VAnchor = Agg.UI.VAnchor.Max_FitToChildren_ParentHeight;
			topToBottom.HAnchor = Agg.UI.HAnchor.ParentLeftRight;
			topToBottom.BackgroundColor = ActiveTheme.Instance.PrimaryBackgroundColor;
			topToBottom.Padding = new BorderDouble(3, 0) * TextWidget.GlobalPointSizeScaleRatio;

			FlowLayoutWidget row = new FlowLayoutWidget();
			row.HAnchor = Agg.UI.HAnchor.ParentLeftRight;
			row.BackgroundColor = ActiveTheme.Instance.PrimaryBackgroundColor;
			GuiWidget descriptionWidget = AddDescription(LocalizedString.Get("Description"));
			descriptionWidget.Margin = new BorderDouble(left: 3) * TextWidget.GlobalPointSizeScaleRatio;
			row.AddChild(descriptionWidget);

			CreateSpacer(row);

			GuiWidget valueText = new TextWidget(LocalizedString.Get("Value"), textColor: ActiveTheme.Instance.PrimaryTextColor);
			valueText.VAnchor = Agg.UI.VAnchor.ParentCenter;
			valueText.Margin = new BorderDouble(left: 5, right: 60) * TextWidget.GlobalPointSizeScaleRatio;
			row.AddChild(valueText);
			topToBottom.AddChild(row);

			{
				ScrollableWidget settingsAreaScrollBox = new ScrollableWidget(true);
				settingsAreaScrollBox.ScrollArea.HAnchor |= HAnchor.ParentLeftRight;
				settingsAreaScrollBox.AnchorAll();
				settingsAreaScrollBox.BackgroundColor = ActiveTheme.Instance.SecondaryBackgroundColor;
				topToBottom.AddChild(settingsAreaScrollBox);

				settingsColmun = new FlowLayoutWidget(FlowDirection.TopToBottom);
				settingsColmun.HAnchor = HAnchor.Max_FitToChildren_ParentWidth;

				settingsAreaScrollBox.AddChild(settingsColmun);
			}

			FlowLayoutWidget buttonBar = new FlowLayoutWidget();
			buttonBar.HAnchor = Agg.UI.HAnchor.Max_FitToChildren_ParentWidth;
			buttonBar.BackgroundColor = ActiveTheme.Instance.PrimaryBackgroundColor;

			// put in the save button
			{
				Button buttonSave = textImageButtonFactory.Generate("Save To EEPROM".Localize());
				buttonSave.Margin = new BorderDouble(0, 3) * TextWidget.GlobalPointSizeScaleRatio;
				buttonSave.Click += (sender, e) =>
				{
					UiThread.RunOnIdle(() =>
					{
						currentEePromSettings.Save();
						currentEePromSettings.Clear();
						currentEePromSettings.eventAdded -= NewSettingReadFromPrinter;
						Close();
					});
				};

				buttonBar.AddChild(buttonSave);
			}

			CreateSpacer(buttonBar);

			// put in the import button
			{
				Button buttonImport = textImageButtonFactory.Generate("Import".Localize() + "...");
				buttonImport.Margin = new BorderDouble(0, 3) * TextWidget.GlobalPointSizeScaleRatio;
				buttonImport.Click += (sender, e) =>
				{
					UiThread.RunOnIdle(() =>
					{
						FileDialog.OpenFileDialog(
							new OpenFileDialogParams("EEPROM Settings" + "|*.ini")
							{
								ActionButtonLabel = "Import EEPROM Settings".Localize(),
								Title = "Import EEPROM".Localize(),
							},
								(openParams) =>
								{
									if (!string.IsNullOrEmpty(openParams.FileName))
									{
										currentEePromSettings.Import(openParams.FileName);
										RebuildUi();
                                    }
								});
					});
				};
				buttonBar.AddChild(buttonImport);
			}

			// put in the export button
			{
				Button buttonExport = textImageButtonFactory.Generate("Export".Localize() + "...");
				buttonExport.Margin = new BorderDouble(0, 3) * TextWidget.GlobalPointSizeScaleRatio;
				buttonExport.Click += (sender, e) =>
				{
					UiThread.RunOnIdle(() =>
					{
						FileDialog.SaveFileDialog(
							new SaveFileDialogParams("EEPROM Settings" + "|*.ini")
							{
								ActionButtonLabel = "Export EEPROM Settings".Localize(),
								Title = "Export EEPROM".Localize(),
                                FileName = "eeprom_settings.ini"
							},
								(saveParams) =>
								{
									if (!string.IsNullOrEmpty(saveParams.FileName))
									{
										currentEePromSettings.Export(saveParams.FileName);
									}
								});
					});
				};
				buttonBar.AddChild(buttonExport);
			}

			// put in the cancel button
			{
				Button buttonCancel = textImageButtonFactory.Generate("Close".Localize());
				buttonCancel.Margin = new BorderDouble(10, 3, 0, 3) * TextWidget.GlobalPointSizeScaleRatio;
				buttonCancel.Click += (sender, e) =>
				{
					UiThread.RunOnIdle(() =>
					{
						currentEePromSettings.Clear();
						currentEePromSettings.eventAdded -= NewSettingReadFromPrinter;
						Close();
					});
				};
				buttonBar.AddChild(buttonCancel);
			}

			topToBottom.AddChild(buttonBar);

#if __ANDROID__
			TerminalWidget terminalWidget = new TerminalWidget(true);
			this.AddChild(new SoftKeyboardContentOffset(topToBottom));
			//topToBottom.Closed += (sender, e) => { Close(); };
#else
			this.AddChild(topToBottom);
#endif

			Title = LocalizedString.Get("Firmware EEPROM Settings");

			ShowAsSystemWindow();

			currentEePromSettings.Clear();
			PrinterConnectionAndCommunication.Instance.CommunicationUnconditionalFromPrinter.RegisterEvent(currentEePromSettings.Add, ref unregisterEvents);
			currentEePromSettings.eventAdded += NewSettingReadFromPrinter;
			currentEePromSettings.AskPrinterForSettings();

#if SIMULATE_CONNECTION
            UiThread.RunOnIdle(AddSimulatedItems);
#endif
		}