コード例 #1
0
        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");
        }
コード例 #2
0
ファイル: Engine.cs プロジェクト: marcussacana/Sermone
 public static async Task Open(bool OpenAs = false, bool AsSecondary = false)
 {
     if (!CanSave && AsSecondary)
     {
         Toast.ShowError(Language.OpenAScriptBefore, Language.Error);
         return;
     }
     ForceLastPlugin = OpenAs;
     OpenAsSecondary = AsSecondary;
     await JSWrapper.OpenFile();
 }
コード例 #3
0
ファイル: Engine.cs プロジェクト: marcussacana/Sermone
        public static async Task OpenAs(bool AsSecondary = false)
        {
            var Result = await Modal.ShowDialogAsync <PluginPicker>(Language.SelectAPlugin);

            await JSWrapper.DestroyTooltips();

            if (!Result.Success)
            {
                return;
            }

            LastWorkingPlugin = (IPluginCreator)Result.ReturnParameters["Plugin"];
            await Open(true, AsSecondary);
        }
コード例 #4
0
        public static async Task UpdateSettings(bool Save = true)
        {
            GetLanguageByID(Engine.Settings.Language, out Engine.Language);
            await JSWrapper.SetCustomCSS(Engine.Settings.CustomCSS);

            if (Save)
            {
                await Engine.LocalStorage.SetItemAsync("Settings", Engine.Settings);
            }

            Engine.Paste = null;
            GetPasteCreatorByID(Engine.Settings.PasteClient, out IPasteCreator PasteCreator);
            if (!string.IsNullOrEmpty(Engine.Settings.PasteUsername) && !string.IsNullOrEmpty(Engine.Settings.PastePassword))
            {
                Engine.Paste = await PasteCreator.Create(Engine.Settings.PasteUsername, Engine.Settings.PastePassword);
            }
        }
コード例 #5
0
        public static async Task <bool> EntryPoint()
        {
            if (BasePath != null)
            {
                return(false);
            }

            if (await Engine.LocalStorage.ContainKeyAsync("Settings"))
            {
                Console.WriteLine("Loading Settings...");
                Engine.Settings = await Engine.LocalStorage.GetItemAsync <Config>("Settings");
            }
            else
            {
                Console.WriteLine("Using Default Settings...");
                Engine.Settings = new Config()
                {
                    AcceptableRanges = "0-9A-Za-zÀ-ÃÇ-ÎÓ-ÕÚ-Ûà-ãç-îó-õú-û。-゚!?~.,[](){}''\"",
                    AllowNumbers     = true,
                    Breakline        = "\\n",
                    DenyList         = "@;§;_;<;>;/;=",
                    FromAsian        = false,
                    IgnoreList       = ";、;。;%;{;}",
                    QuoteList        = "<>;();[];“”;[];《》;«»;「」;『』;【】;();'';\"\"",
                    Sensitivity      = 3,
                    BackupOn         = 15,
                    Language         = 0
                };
            }

            await UpdateSettings(false);

            Strings.Initialize();

            BasePath = await JSWrapper.GetBaseDirectory();

            if (!BasePath.EndsWith("/"))
            {
                BasePath += "/";
            }

            Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
            return(true);
        }
コード例 #6
0
ファイル: Engine.cs プロジェクト: marcussacana/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");
        }