/// <summary> /// Factory method to create the singleton instance /// </summary> /// <returns></returns> public static async Task Create() { if (Instance != null) { return; } var browserWindow = await Electron.WindowManager.CreateWindowAsync(new BrowserWindowOptions { Title = "ZX Spectrum IDE", Width = 1152, Height = 864, Show = true, Frame = false }); Instance = new AppWindow(browserWindow); browserWindow.OnReadyToShow += () => { Console.WriteLine("OnReadyToShow invoked"); browserWindow.Show(); }; browserWindow.OnFocus += () => StateStore.Dispatch(new AppGotFocusAction()); browserWindow.OnBlur += () => StateStore.Dispatch(new AppLostFocusAction()); browserWindow.OnRestore += () => StateStore.Dispatch(new RestoreWindowAction()); browserWindow.OnMaximize += () => StateStore.Dispatch(new MaximizeWindowAction()); browserWindow.OnMinimize += () => StateStore.Dispatch(new MinimizeWindowAction()); browserWindow.OnUnmaximize += () => StateStore.Dispatch(new RestoreWindowAction()); }
public void AllIsWell() { var store = new StateStore(); store.AddController("CurrentHealth", new CurrentHealthController()); store.Dispatch(new StoreAction { Type = "UpdateCurrentHealth", Payload = 20f }); Assert.AreEqual(store.GetState <float>("CurrentHealth"), 20f); }
public void SetupMenu() { // --- Create the command structure that represents the main menu var aboutGroup = new UiMenuItem() .Append(new AboutCommand()); var preferencesGroup = new UiMenuItem() .Append(new OptionsCommand()); var servicesGroup = new UiMenuItem() .Append(new ElectronShellMenuItem(MenuRole.services)); var appWindowGroup = new UiMenuItem() .Append(new ElectronShellMenuItem(MenuRole.hide)) .Append(new ElectronShellMenuItem(MenuRole.hideothers)) .Append(new ElectronShellMenuItem(MenuRole.unhide)); var quitGroup = new UiMenuItem() .Append(new ElectronShellMenuItem(MenuRole.quit, "E&xit")); var darwinMenu = new UiMenuItem("darwin", "ZX Spectrum IDE") .Append(aboutGroup) .Append(preferencesGroup) .Append(servicesGroup) .Append(appWindowGroup) .Append(quitGroup); var createGroup = new UiMenuItem() .Append(new NewProjectCommand()) .Append(new OpenProjectCommand()); var closeGroup = new UiMenuItem() .Append(new CloseProjectCommand()); var fileGroup = new UiMenuItem("file", PlatformHelper.IsDarwin ? "File" : "&File") .Append(createGroup) .Append(closeGroup); if (!PlatformHelper.IsDarwin) { fileGroup.Append(preferencesGroup); } fileGroup.Append(quitGroup); var explorerGroup = new UiMenuItem() .Append(new ShowExplorerCommand()) .Append(new ShowSpectrumEmulatorCommand()); var spectrumWindowsGroup = new UiMenuItem() .Append(new ShowRegistersCommand()) .Append(new ShowDisassemblyCommand()) .Append(new ShowMemoryCommand()); var devToolsGroup = new UiMenuItem() .Append(new ShowDevToolsCommand()); var viewGroup = new UiMenuItem("view", PlatformHelper.IsDarwin ? "View" : "&View") .Append(explorerGroup) .Append(spectrumWindowsGroup) .Append(devToolsGroup); var help1Group = new UiMenuItem() .Append(new UiMenuItem("help-topic-1", "Help topic #1")) .Append(new UiMenuItem("help-topic-2", "Help topic #2").Enable(false)); var help3SubGroup = new UiMenuItem("help-topic-3", "Help topic #&3") .Append(new UiMenuItem("help-topic-31", "Help topic #31")) .Append(new UiMenuItem("help-topic-32", "Help topic #32")) .Append(new UiMenuItem("help-topic-33", "Help topic #33")); var help4SubGroup = new UiMenuItem("help-topic-4", "Help topic #4").Enable(false) .Append(new UiMenuItem("help-topic-41", "Help topic #41")) .Append(new UiMenuItem("help-topic-42", "Help topic #42")) .Append(new UiMenuItem("help-topic-43", "Help topic #43")); var help2Group = new UiMenuItem() .Append(help3SubGroup) .Append(help4SubGroup); var helpMenu = new UiMenuItem("help", "H&elp") .Append(help1Group) .Append(help2Group); AppMenu = new UiMenuItem(); if (PlatformHelper.IsDarwin) { AppMenu.Append(darwinMenu); } AppMenu .Append(fileGroup) .Append(viewGroup) .Append(helpMenu); // --- Convert the command structure into Electron menu BuildDefaultMenuFromCommands(); // --- Now, set the menu try { Electron.Menu.SetApplicationMenu(_appMenu); Console.WriteLine("Electron menu set"); } catch (Exception ex) { Console.WriteLine($"App Menu Error: {ex}"); } // --- Set the menu state Console.WriteLine("Setting app menu"); StateStore.Dispatch(new SetAppMenuAction(AppMenu)); }