public static async Task LoadBackup() { try { await JSWrapper.SetTile("Sermone - " + Language.Loading); var Backup = await Paste.GetPaste(CurrentPaste); if (Math.Abs(Backup.Content.Length - DialogueBox.Items.Length) > 1) { Toast.ShowError(Language.BackupIncompatible, Language.Error); } else { for (int i = 0; i < DialogueBox.Items?.Length; i++) { DialogueBox.Items[i].Value = Backup.Content[i]; DialogueBox.Refresh(i); if ((i % 50) == 0) { await DoEvents(); } } } } catch { Toast.ShowError(Language.BackupFailed, Language.Error); } await JSWrapper.SetTile("Sermone"); }
public static async Task OpenFile() { var OriPlugin = CurrentPlugin; var OriLastWork = LastWorkingPlugin; if (!OpenAsSecondary) { DialogueBox.SelectedIndex = 0; DialogueBox.SetItems(new ListBoxItemInfo[0]); DialogueBox.Refresh(); } string[] Strings = null; await JSWrapper.SetTile($"Sermone - {Language.Loading}"); if (LastWorkingPlugin != null) { Strings = TryUsePlugin(LastWorkingPlugin); } if (!IsValidStrings(Strings)) { if (ForceLastPlugin) { Toast.ShowError(Language.PluginDontSupport, Language.NotSupported); return; } var CurrentExt = Path.GetExtension(CurrentName).ToLower(); var SupportedPlugins = (from x in Plugins where x.Filter.ToLower().Contains(CurrentExt) select x); var NotSupportedPlugins = (from x in Plugins where !SupportedPlugins.Contains(x) select x); foreach (var Plugin in SupportedPlugins) { Strings = TryUsePlugin(Plugin); if (IsValidStrings(Strings)) { LastWorkingPlugin = Plugin; break; } } if (Strings == null) { foreach (var Plugin in NotSupportedPlugins) { Strings = TryUsePlugin(Plugin); if (IsValidStrings(Strings)) { LastWorkingPlugin = Plugin; break; } } } } if (Strings == null) { Toast.ShowError(Language.NotSupportedPluginFound, Language.Error); return; } if (OpenAsSecondary) { OpenAsSecondary = false; CurrentPlugin = OriPlugin; LastWorkingPlugin = OriLastWork; if (Strings.Length != DialogueBox.Items.Length) { Toast.ShowError(Language.IncompatibleReferenceScript, Language.Error); } else { for (int i = 0; i < Strings.Length; i++) { DialogueBox.Items[i].SubValue = Strings[i]; } DialogueBox.Refresh(); } } else { DialogueBox.SetItems((from x in Strings select new ListBoxItemInfo(true, true, x, null)).ToArray()); DialogueBox.Refresh(); CanSave = true; MainNavMenu.Refresh(); switch (Settings.SelectionMode) { case 1: await ForceSelection(true); break; default: await AutoSelect(); break; } } await JSWrapper.SetTile($"{CurrentName} - Sermone"); }