private void OnQuestionCompleted(QuestionDialog dialog) { if (dialog.IsPositiveSelected) { updateDialog.SetFocus (this, OnUpdateCompleted); } }
private void OnCompileDialogExit(QuestionDialog dialog) { if (dialog.IsPositiveSelected) { compileDialog.SetFocus (Parent); } else { programSelectDialog.SetFocus (this, OnSelectDialogExit); } }
private void OnExit (QuestionDialog dialog) { if (dialog.IsPositiveSelected) { Parent.SuspendButtonEvents (); Lcd.Clear(); Lcd.WriteText(Font.MediumFont, new Point(0,0), "Shutting down...", true); Lcd.Update(); Buttons.LedPattern(2); Brick.TurnOff (); } }
static bool Shutdown() { var dialog = new QuestionDialog ("Are you sure?", "Shutdown EV3"); if(dialog.Show ()){ Lcd.Instance.Clear(); Lcd.Instance.WriteText(Font.MediumFont, new Point(0,0), "Shutting down...", true); Lcd.Instance.Update(); Buttons.Instance.LedPattern(2); ProcessHelper.RunAndWaitForProcess("/sbin/shutdown", "-h now"); Thread.Sleep(120000); } return false; }
static bool ShowWiFiMenu() { List<IMenuItem> items = new List<IMenuItem> (); var ssidItem = new MenuItemWithCharacterInput("SSID", "Enter SSID", settings.WiFiSettings.SSID); ssidItem.OnDialogExit += delegate(string text) { new Thread(delegate() { settings.WiFiSettings.SSID = text; settings.Save(); }).Start(); }; var passwordItem = new MenuItemWithCharacterInput("Password", "Password", settings.WiFiSettings.Password, true); passwordItem.OnDialogExit += delegate(string text) { new Thread(delegate() { settings.WiFiSettings.Password = text; settings.Save(); }).Start(); }; var encryptionItem = new MenuItemWithOptions<string>("Encryption", new string[]{"None","WPA/2"}, settings.WiFiSettings.Encryption ? 1 : 0); encryptionItem.OnOptionChanged += delegate(string newOpstion) { new Thread(delegate() { if(newOpstion == "None") settings.WiFiSettings.Encryption = false; else settings.WiFiSettings.Encryption = true; settings.Save(); }).Start(); }; var connectItem = new MenuItemWithCheckBox("Connect", WiFiDevice.IsLinkUp(), delegate(bool WiFiOn) { bool isOn = WiFiOn; var createFileStep = new StepContainer( delegate() { WriteWpaSupplicantConfiguration(settings.WiFiSettings.SSID,settings.WiFiSettings.Password,settings.WiFiSettings.Encryption); return true; }, "Creating file", "Error creating WPA file"); var progressDialog = new ProgressDialog("WiFi", createFileStep); progressDialog.Show(); if(WiFiOn){ var turnOffStep = new StepContainer( delegate() { WiFiDevice.TurnOff(); return true; }, "Turning Off","Error turning off WiFi","WiFi Disabled"); var dialog = new ProgressDialog("WiFi", turnOffStep); dialog.Show(); isOn = false; } else{ var turnOnStep = new StepContainer( delegate() { return WiFiDevice.TurnOn(60000); }, "Connecting", "Failed to connect"); Dialog dialog = new ProgressDialog("WiFi", turnOnStep); if(dialog.Show()){ if(settings.WiFiSettings.ConnectAtStartUp == false){ var question = new QuestionDialog("Do you want to connect at start-up?", "Settings"); if(question.Show()){ new Thread(delegate() { settings.WiFiSettings.ConnectAtStartUp = true; settings.Save(); }).Start(); } } dialog = new InfoDialog("Connected Successfully " + WiFiDevice.GetIpAddress(), true, "WiFi"); dialog.Show(); isOn = true; } else{ isOn = false; } } return isOn; } ); items.Add(ssidItem); items.Add(passwordItem); items.Add(encryptionItem); items.Add(connectItem); //Show the menu Menu m = new Menu ("WiFi Connection", items); m.Show (); return false; }
static bool ShowProgramOptions(string programFolder) { string fileName = ""; try { fileName = Directory.EnumerateFiles (programFolder, "*.exe").First (); } catch { var info = new InfoDialog (programFolder + "is not executable", true, "Program"); info.Show (); Directory.Delete (programFolder, true); updateProgramList = true; return true; } var dialog = new SelectDialog<string> (new string[] { "Run Program", "Debug Program", "Run In AOT", "AOT Compile", "Delete Program", }, "Options", true); dialog.Show (); if (!dialog.EscPressed) { Action programAction = null; switch (dialog.GetSelectionIndex ()) { case 0: Lcd.Instance.Clear (); Lcd.Instance.DrawBitmap (monoLogo, new Point ((int)(Lcd.Width - monoLogo.Width) / 2, 5)); Rectangle textRect = new Rectangle (new Point (0, Lcd.Height - (int)Font.SmallFont.maxHeight - 2), new Point (Lcd.Width, Lcd.Height - 2)); Lcd.Instance.WriteTextBox (Font.SmallFont, textRect, "Running...", true, Lcd.Alignment.Center); Lcd.Instance.Update (); programAction = () => RunAndWaitForProgram (fileName, ExecutionMode.Normal); break; case 1: programAction = () => RunAndWaitForProgram (fileName, ExecutionMode.Debug); break; case 2: if (!AOTHelper.IsFileCompiled (fileName)) { if (AOTCompileAndShowDialog (programFolder)) { programAction = () => RunAndWaitForProgram (fileName, ExecutionMode.AOT); } } else { programAction = () => RunAndWaitForProgram (fileName, ExecutionMode.AOT); } break; case 3: if (AOTHelper.IsFileCompiled (fileName)) { var questionDialog = new QuestionDialog ("Progran already compiled. Recompile?", "AOT recompile"); if (questionDialog.Show ()) { AOTCompileAndShowDialog (programFolder); } } else { AOTCompileAndShowDialog (programFolder); } break; case 4: var question = new QuestionDialog ("Are you sure?", "Delete"); if (question.Show ()) { var step = new StepContainer (() => { Directory.Delete (programFolder, true); return true; }, "Deleting ", "Error deleting program"); var progressDialog = new ProgressDialog ("Program", step); progressDialog.Show (); updateProgramList = true; } break; } if (programAction != null) { Console.WriteLine("Starting application"); programAction(); Console.WriteLine ("Done running application"); } return updateProgramList; } return false; }
public void OnExit (QuestionDialog dialog) { Console.WriteLine ("Do you like MonoBrick is set to " + dialog.IsPositiveSelected); }
static bool ShowProgramOptions (ProgramInformation program) { var dialog = new SelectDialog<string> (new string[] { "Run Program", "Run In AOT", "AOT Compile", "Delete Program", }, "Options", true); dialog.Show (); if (!dialog.EscPressed) { Action programAction = null; switch (dialog.GetSelectionIndex ()) { case 0: Lcd.Instance.Clear (); Lcd.Instance.DrawBitmap (monoLogo, new Point ((int)(Lcd.Width - monoLogo.Width) / 2, 5)); Rectangle textRect = new Rectangle (new Point (0, Lcd.Height - (int)Font.SmallFont.maxHeight - 2), new Point (Lcd.Width, Lcd.Height - 2)); Lcd.Instance.WriteTextBox (Font.SmallFont, textRect, "Running...", true, Lcd.Alignment.Center); Lcd.Instance.Update (); programAction = () => ProgramManager.Instance.StartProgram(program,false); break; case 1: if (!program.IsAOTCompiled) { if (AOTCompileAndShowDialog (program)) { programAction = () => ProgramManager.Instance.StartProgram(program,true); } } else { programAction = () => ProgramManager.Instance.StartProgram(program, true); } break; case 3: if (program.IsAOTCompiled) { var questionDialog = new QuestionDialog ("Progran already compiled. Recompile?", "AOT recompile"); if (questionDialog.Show ()) { AOTCompileAndShowDialog (program); } } else { AOTCompileAndShowDialog (program); } break; case 4: var question = new QuestionDialog ("Are you sure?", "Delete"); if (question.Show ()) { var step = new StepContainer (() => {ProgramManager.Instance.DeleteProgram(program); return true;}, "Deleting ", "Error deleting program"); var progressDialog = new ProgressDialog ("Program", step); progressDialog.Show (); updateProgramList = true; } break; } if (programAction != null) { Console.WriteLine("Starting application"); programAction(); Console.WriteLine ("Done running application"); } return updateProgramList; } return false; }
static bool ShowUpdatesDialogs () { if (WiFiDevice.IsLinkUp ()) { bool newImage = false; bool newFirmwareApp = false; bool newAddin = false; VersionInfo versionInfo = null; var step = new StepContainer ( delegate() { try { versionInfo = VersionHelper.AvailableVersions (); newImage = versionInfo.Image != VersionHelper.CurrentImageVersion (); newFirmwareApp = versionInfo.Fimrware != firmwareVersion; string addInVersion = VersionHelper.CurrentAddInVersion (); if (addInVersion != null) newAddin = versionInfo.AddIn != VersionHelper.CurrentAddInVersion (); } catch { return false; } return true; }, "Checking server", "Failed to check for Updates"); var dialog = new ProgressDialog ("Updates", step); dialog.Show (); if (newImage) { var visitWebsiteDialog = new InfoDialog ("New image available. Download it at monobrick.dk", true); visitWebsiteDialog.Show (); } else { if (newFirmwareApp) { var updateQuestion = new QuestionDialog ("New firmware available. Update?", "New Fiwmware"); if (updateQuestion.Show ()) { var updateHelper = new UpdateHelper (versionInfo.Fimrware); List<IStep> steps = new List<IStep> (); steps.Add (new StepContainer (updateHelper.DownloadFirmware, "Downloading...", "Failed to download files")); steps.Add (new StepContainer (updateHelper.UpdateBootFile, "Updating system", "Failed to update boot file")); var updateDialog = new StepDialog ("Updating", steps); if (updateDialog.Show ()) { for (int seconds = 10; seconds > 0; seconds--) { var rebootDialog = new InfoDialog ("Update completed. Rebooting in " + seconds, false); rebootDialog.Show (); System.Threading.Thread.Sleep (1000); } ProcessHelper.RunAndWaitForProcess ("/sbin/shutdown", "-h now"); Thread.Sleep (120000); var whyAreYouHereDialog = new InfoDialog ("Cut the power", false, "Reboot failed"); whyAreYouHereDialog.Show (); new ManualResetEvent (false).WaitOne (); } } } else { if (newAddin) { var visitWebsiteDialog = new InfoDialog ("New Xamarin Add-in. Download it at monobrick.dk", true); visitWebsiteDialog.Show (); } else { var noUpdateDialog = new InfoDialog ("No updates available", true); noUpdateDialog.Show (); } } } } else { var dialog = new InfoDialog ("WiFi device is not pressent", true); dialog.Show(); } return false; }