public override void InitPlugin(TabPage pluginScreenSpace, Label pluginStatusText) { _settingsLoaded = false; ParentTabPage = pluginScreenSpace; StatusLabel = pluginStatusText; ParentTabPage.Text = "Fox TTS"; try { Controller = new MainController(); Settings = new SettingsHolder(); Settings.AttachToAct(this); SettingsTab = new FoxTTSTabControl(); SettingsTab.AttachToAct(this); PreProcessor.AttachToAct(this); UpdateChecker.AttachToAct(this); SoundPlayer.AttachToAct(this); TtsInjector.AttachToAct(this); Controller.TTSEngineChanged += ControllerOnTtsEngineChanged; Settings.PostAttachToAct(this); SettingsTab.PostAttachToAct(this); PreProcessor.PostAttachToAct(this); UpdateChecker.PostAttachToAct(this); SoundPlayer.PostAttachToAct(this); TtsInjector.PostAttachToAct(this); Settings.Load(); _settingsLoaded = true; DoLocalization(); Settings.NotifySettingsLoaded(); TtsInjector.StartWorkingThread(this); StatusLabel.Text = "Init Success. >w<"; } catch (SettingsNotLoadException ex) { StatusLabel.Text = "Init Failed: " + ex; } catch (Exception ex) { StatusLabel.Text = "Init Failed: " + ex; if (_settingsLoaded) { MessageBox.Show($"Init failed!\nCaused by:\n{ex}"); } else { MessageBox.Show($"Init failed before settings are loaded. Settings won't be saved until next successfully initialization to prevent settings lost!\nCaused by:\n{ex}"); } } }
public override void DeInitPlugin() { Controller.TTSEngineChanged -= ControllerOnTtsEngineChanged; TtsInjector.Stop(); SoundPlayer.Stop(); UpdateChecker.Stop(); lock (this) { _ttsEngine?.Stop(); _ttsEngine = null; } if (_settingsLoaded) { Settings?.Save(); } StatusLabel.Text = "Exited. Bye~"; }