diff --git a/Source/GrasscutterTools/App.config b/Source/GrasscutterTools/App.config index 420ed9f..3f00074 100644 --- a/Source/GrasscutterTools/App.config +++ b/Source/GrasscutterTools/App.config @@ -82,6 +82,9 @@ False + + 100 + \ No newline at end of file diff --git a/Source/GrasscutterTools/Forms/FormMain.cs b/Source/GrasscutterTools/Forms/FormMain.cs index a905114..ffae358 100644 --- a/Source/GrasscutterTools/Forms/FormMain.cs +++ b/Source/GrasscutterTools/Forms/FormMain.cs @@ -18,6 +18,8 @@ **/ using System; +using System.Collections.Generic; +using System.Collections.Specialized; using System.Drawing; using System.Linq; using System.Threading.Tasks; @@ -90,6 +92,13 @@ namespace GrasscutterTools.Forms Logger.I(TAG, "Restore NavContainer SplitterDistance: " + NavContainer.SplitterDistance); } + // 还原窗口的不透明度 + if (Settings.Default.WindowOpacity < 100) + { + Opacity = Settings.Default.WindowOpacity / 100.0; + Logger.I(TAG, "Restore window opacity: " + Opacity); + } + // 恢复自动复制选项状态 ChkAutoCopy.Checked = Settings.Default.AutoCopy; @@ -104,15 +113,102 @@ namespace GrasscutterTools.Forms Logger.I(TAG, "FormMain ctor completed"); } + + /// + /// 重载界面 + /// + public void Reload() + { + FormMain_Load(this, null); + } + + /// + /// 窗体载入时触发(切换语言时会重新载入) + /// + private void FormMain_Load(object sender, EventArgs e) + { + Logger.I(TAG, "FormMain_Load enter"); + Text += " - by jie65535 - v" + Common.AppVersion.ToString(3); +#if DEBUG + Text += "-debug"; +#endif + if (DesignMode) return; + + // 加载页面导航 + UpdatePagesNav(); + + // 加载游戏ID资源 + GameData.LoadResources(); + + // 遍历每一个页面重新加载 + foreach (var page in Pages.Values) + { + Logger.I(TAG, $"{page.Name} OnLoad enter"); + page.OnLoad(); + Logger.I(TAG, $"{page.Name} OnLoad completed"); + } + + Logger.I(TAG, "FormMain_Load completed"); + } + + /// + /// 窗口关闭后触发 + /// + private void FormMain_FormClosed(object sender, FormClosedEventArgs e) + { + Logger.I(TAG, "FormMain FormClosed enter"); + // 遍历每一个页面,通知关闭 + foreach (var page in Pages.Values) + { + page.OnClosed(); + } + + // 保存当前设置 + SaveSettings(); + Logger.I(TAG, "FormMain FormClosed completed"); + } + + /// + /// 保存设置 + /// + private void SaveSettings() + { + try + { + // 记录界面状态 + Settings.Default.AutoCopy = ChkAutoCopy.Checked; + // 记录窗口位置 + if (WindowState == FormWindowState.Normal) + Settings.Default.MainFormLocation = Location; + // 如果命令窗口已经弹出了,则不要保存多余的高度 + Settings.Default.MainFormSize = TxtCommandRunLog != null ? new Size(Width, Height - TxtCommandRunLogMinHeight) : Size; + // 记录导航容器分隔位置 + Settings.Default.NavContainerSplitterDistance = NavContainer.SplitterDistance; + // 保存设置 + Settings.Default.Save(); + } + catch (Exception ex) + { + Logger.E(TAG, "Save settings failed.", ex); + MessageBox.Show(Resources.SettingSaveError + ex.Message, Resources.Error, MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + #endregion - 初始化 Init - + + #region - 页面导航 Nav - + + public Dictionary Pages { get; private set; } + /// /// 初始化并创建所有页面 /// private void InitPages() { Logger.I(TAG, "InitPages enter"); + Pages = new Dictionary(32); TCMain.SuspendLayout(); - var ph = CreatePage(); - ph.OnLanguageChanged = () => FormMain_Load(this, EventArgs.Empty); + CreatePage(); var poc = CreatePage(); poc.ShowTipInRunButton = msg => ShowTip(msg, BtnInvokeOpenCommand); CreatePage(); @@ -131,6 +227,7 @@ namespace GrasscutterTools.Forms CreatePage(); CreatePage(); CreatePage(); + CreatePage(); CreatePage(); #if DEBUG CreatePage(); @@ -139,37 +236,144 @@ namespace GrasscutterTools.Forms Logger.I(TAG, "InitPages completed"); } + /// + /// 当前的页面选项卡顺序 + /// string Item1 = Page Name(Key) + /// bool Item2 = IsVisible + /// + public List> PageTabOrders { get; set; } + + /// + /// 加载页面选项卡顺序 + /// + private List> LoadPageTabOrders() + { + if (PageTabOrders != null) return PageTabOrders; + List> tabOrders; + if (!(Settings.Default.PageOrders?.Count > 0)) + { + tabOrders = new List>(Pages.Count); + // 默认状态 + foreach (var tab in Pages) + tabOrders.Add(new Tuple(tab.Key, true)); + } + else + { + tabOrders = new List>(Settings.Default.PageOrders.Count); + // 从设置中读取 + foreach (var item in Settings.Default.PageOrders) + { + // 冒号分隔的项 "PageHome:1" 0=隐藏 1=显示 + var sp = item.IndexOf(':'); + if (sp == -1 || !int.TryParse(item.Substring(sp + 1), out var isVisible)) continue; + tabOrders.Add(new Tuple(item.Substring(0, sp), isVisible != 0)); + } + } + + return tabOrders; + } + + /// + /// 重置页面选项卡顺序 + /// + public void ResetPageTabOrders() + { + PageTabOrders = new List>(Pages.Count); + // 默认状态 + foreach (var tab in Pages) + PageTabOrders.Add(new Tuple(tab.Key, true)); + } + + /// + /// 保存页面选项卡顺序 + /// + public void SavePageTabOrders() + { + if (PageTabOrders == null || PageTabOrders.Count == 0) + { + Settings.Default.PageOrders = null; + return; + } + + var setting = new StringCollection(); + // 冒号分隔的项 "PageHome:1" 0=隐藏 1=显示 + foreach (var pageOrder in PageTabOrders) + setting.Add($"{pageOrder.Item1}:{(pageOrder.Item2?'1':'0')}"); + Settings.Default.PageOrders = setting; + } + /// /// 初始化页面导航 /// - private void InitPagesNav() + public void UpdatePagesNav() { + ListPages.BeginUpdate(); ListPages.Items.Clear(); - ListPages.Items.AddRange(new object[] + + // 以下代码主要是为了加载用户自定义顺序的选项卡 + var tabOrders = LoadPageTabOrders(); + // 程序更新后增加或减少了界面的情况 + if (tabOrders.Count != Pages.Count) { - Resources.PageHomeTitle, - Resources.PageOpenCommandTitle, - Resources.PageProxyTitle, - Resources.PageCustomCommandsTitle, - Resources.PageHotKey, - Resources.PageGetArtifactTitle, - Resources.PageSetPropTitle, - Resources.PageSpawnTitle, - Resources.PageGiveItemTitle, - Resources.PageAvatarTitle, - Resources.PageGiveWeaponTitle, - Resources.PageSceneTitle, - Resources.PageSceneTagTitle, - Resources.PageTasksTitle, - Resources.PageManagementTitle, - Resources.PageMailTitle, - Resources.PageQuestTitle, - Resources.PageAchievementTitle, - Resources.PageAboutTitle, -#if DEBUG - "Tools", -#endif - }); + PageTabOrders = new List>(Pages.Count); + var i = 0; + var pageKeys = Pages.Keys.ToList(); + foreach (var pageOrder in tabOrders) + { + // 新增页面优先显示 + if (tabOrders.All(it => it.Item1 != pageKeys[i])) + { + PageTabOrders.Add(new Tuple(pageKeys[i], true)); + ListPages.Items.Add(Pages[pageKeys[i]].Text); + } + // 尝试获取页面标题 + if (Pages.TryGetValue(pageOrder.Item1, out var page)) + { + // 仅设置为可见时添加 + if (pageOrder.Item2) + ListPages.Items.Add(page.Text); + PageTabOrders.Add(new Tuple(pageOrder.Item1, pageOrder.Item2)); + } + // 如果获取不到页面标题,说明在本次更新中这个页面被删掉了,因此设置项也随之更新 + i++; + } + // 加上新增在最后的页面 + while (i < Pages.Count) + { + PageTabOrders.Add(new Tuple(pageKeys[i], true)); + ListPages.Items.Add(Pages[pageKeys[i]].Text); + i++; + } + // 保存页面顺序 + SavePageTabOrders(); + } + else + { + // 按照设定顺序显示 + foreach (var pageOrder in tabOrders) + { + if (pageOrder.Item2) + ListPages.Items.Add(Pages[pageOrder.Item1].Text); + } + + PageTabOrders = tabOrders; + } + + ListPages.EndUpdate(); + } + + /// + /// 导航列表选中项改变时触发 + /// + private void ListPages_SelectedIndexChanged(object sender, EventArgs e) + { + if (ListPages.SelectedIndex == -1) return; + // 根据选中索引反查选中页面Key + var key = PageTabOrders.Where(it => it.Item2) + .ElementAt(ListPages.SelectedIndex) + .Item1; + // 通过Key找到页面的父节点也就是TabPage,设置为选中项 + TCMain.SelectedTab = Pages[key].Parent as TabPage; } /// @@ -213,93 +417,14 @@ namespace GrasscutterTools.Forms Dock = DockStyle.Fill, Name = typeof(T).Name, }; + Pages.Add(page.Name, page); var tp = new TabPage(); TCMain.TabPages.Add(tp); tp.Controls.Add(page); return page; } - private void ListPages_SelectedIndexChanged(object sender, EventArgs e) - { - TCMain.SelectedIndex = ListPages.SelectedIndex; - } - - /// - /// 窗体载入时触发(切换语言时会重新载入) - /// - private void FormMain_Load(object sender, EventArgs e) - { - Logger.I(TAG, "FormMain_Load enter"); - Text += " - by jie65535 - v" + Common.AppVersion.ToString(3); -#if DEBUG - Text += "-debug"; -#endif - if (DesignMode) return; - - // 加载页面导航 - InitPagesNav(); - - // 加载游戏ID资源 - GameData.LoadResources(); - - // 遍历每一个页面重新加载 - foreach (TabPage tp in TCMain.Controls) - { - if (tp.Controls.Count > 0 && tp.Controls[0] is BasePage page) - { - Logger.I(TAG, $"{page.Name} OnLoad enter"); - page.OnLoad(); - Logger.I(TAG, $"{page.Name} OnLoad completed"); - } - } - Logger.I(TAG, "FormMain_Load completed"); - } - - /// - /// 窗口关闭后触发 - /// - private void FormMain_FormClosed(object sender, FormClosedEventArgs e) - { - Logger.I(TAG, "FormMain FormClosed enter"); - // 遍历每一个页面,通知关闭 - foreach (TabPage tp in TCMain.Controls) - { - if (tp.Controls.Count > 0 && tp.Controls[0] is BasePage page) - page.OnClosed(); - } - - // 保存当前设置 - SaveSettings(); - Logger.I(TAG, "FormMain FormClosed completed"); - } - - /// - /// 保存设置 - /// - private void SaveSettings() - { - try - { - // 记录界面状态 - Settings.Default.AutoCopy = ChkAutoCopy.Checked; - // 记录窗口位置 - if (WindowState == FormWindowState.Normal) - Settings.Default.MainFormLocation = Location; - // 如果命令窗口已经弹出了,则不要保存多余的高度 - Settings.Default.MainFormSize = TxtCommandRunLog != null ? new Size(Width, Height - TxtCommandRunLogMinHeight) : Size; - // 记录导航容器分隔位置 - Settings.Default.NavContainerSplitterDistance = NavContainer.SplitterDistance; - // 保存设置 - Settings.Default.Save(); - } - catch (Exception ex) - { - Logger.E(TAG, "Save settings failed.", ex); - MessageBox.Show(Resources.SettingSaveError + ex.Message, Resources.Error, MessageBoxButtons.OK, MessageBoxIcon.Error); - } - } - - #endregion - 初始化 Init - + #endregion #region - 快捷键执行 HotKey - @@ -629,9 +754,9 @@ namespace GrasscutterTools.Forms /// 如果导航到了则返回页面实例,否则返回空 public TPage NavigateTo() where TPage : BasePage { - for (var i = 0; i < TCMain.Controls.Count; i++) + for (var i = 0; i < TCMain.TabPages.Count; i++) { - if (TCMain.Controls[i].Controls[0] is TPage page) + if (TCMain.TabPages[i].Controls[0] is TPage page) { ListPages.SelectedIndex = i; return page; diff --git a/Source/GrasscutterTools/GrasscutterTools.csproj b/Source/GrasscutterTools/GrasscutterTools.csproj index 978d396..ad199a3 100644 --- a/Source/GrasscutterTools/GrasscutterTools.csproj +++ b/Source/GrasscutterTools/GrasscutterTools.csproj @@ -310,6 +310,12 @@ PageSetProp.cs + + UserControl + + + PageSettings.cs + UserControl @@ -647,6 +653,18 @@ PageSetProp.cs + + PageSettings.cs + + + PageSettings.cs + + + PageSettings.cs + + + PageSettings.cs + PageSpawn.cs diff --git a/Source/GrasscutterTools/Pages/PageAbout.cs b/Source/GrasscutterTools/Pages/PageAbout.cs index 42053fa..6f63eae 100644 --- a/Source/GrasscutterTools/Pages/PageAbout.cs +++ b/Source/GrasscutterTools/Pages/PageAbout.cs @@ -18,13 +18,15 @@ **/ using System.Windows.Forms; - +using GrasscutterTools.Properties; using GrasscutterTools.Utils; namespace GrasscutterTools.Pages { internal partial class PageAbout : BasePage { + public override string Text => Resources.PageAboutTitle; + public PageAbout() { InitializeComponent(); diff --git a/Source/GrasscutterTools/Pages/PageAchievement.cs b/Source/GrasscutterTools/Pages/PageAchievement.cs index d6549ee..247d2b2 100644 --- a/Source/GrasscutterTools/Pages/PageAchievement.cs +++ b/Source/GrasscutterTools/Pages/PageAchievement.cs @@ -10,6 +10,8 @@ namespace GrasscutterTools.Pages { internal partial class PageAchievement : BasePage { + public override string Text => Resources.PageAchievementTitle; + public PageAchievement() { InitializeComponent(); diff --git a/Source/GrasscutterTools/Pages/PageAvatar.cs b/Source/GrasscutterTools/Pages/PageAvatar.cs index e69497f..4c15406 100644 --- a/Source/GrasscutterTools/Pages/PageAvatar.cs +++ b/Source/GrasscutterTools/Pages/PageAvatar.cs @@ -22,12 +22,15 @@ using System.Linq; using System.Windows.Forms; using GrasscutterTools.Game; +using GrasscutterTools.Properties; using GrasscutterTools.Utils; namespace GrasscutterTools.Pages { internal partial class PageAvatar : BasePage { + public override string Text => Resources.PageAvatarTitle; + public PageAvatar() { InitializeComponent(); diff --git a/Source/GrasscutterTools/Pages/PageCustomCommands.cs b/Source/GrasscutterTools/Pages/PageCustomCommands.cs index f6fd0d7..49e7330 100644 --- a/Source/GrasscutterTools/Pages/PageCustomCommands.cs +++ b/Source/GrasscutterTools/Pages/PageCustomCommands.cs @@ -30,6 +30,8 @@ namespace GrasscutterTools.Pages { internal partial class PageCustomCommands : BasePage { + public override string Text => Resources.PageCustomCommandsTitle; + public PageCustomCommands() { InitializeComponent(); diff --git a/Source/GrasscutterTools/Pages/PageGiveArtifact.cs b/Source/GrasscutterTools/Pages/PageGiveArtifact.cs index e17a148..28a0f5a 100644 --- a/Source/GrasscutterTools/Pages/PageGiveArtifact.cs +++ b/Source/GrasscutterTools/Pages/PageGiveArtifact.cs @@ -30,6 +30,8 @@ namespace GrasscutterTools.Pages { internal partial class PageGiveArtifact : BasePage { + public override string Text => Resources.PageGetArtifactTitle; + public PageGiveArtifact() { InitializeComponent(); diff --git a/Source/GrasscutterTools/Pages/PageGiveItem.cs b/Source/GrasscutterTools/Pages/PageGiveItem.cs index 66387e1..921b7b5 100644 --- a/Source/GrasscutterTools/Pages/PageGiveItem.cs +++ b/Source/GrasscutterTools/Pages/PageGiveItem.cs @@ -33,6 +33,8 @@ namespace GrasscutterTools.Pages { internal partial class PageGiveItem : BasePage { + public override string Text => Resources.PageGiveItemTitle; + public PageGiveItem() { InitializeComponent(); diff --git a/Source/GrasscutterTools/Pages/PageGiveWeapon.cs b/Source/GrasscutterTools/Pages/PageGiveWeapon.cs index 3365a5d..9bf7e76 100644 --- a/Source/GrasscutterTools/Pages/PageGiveWeapon.cs +++ b/Source/GrasscutterTools/Pages/PageGiveWeapon.cs @@ -20,12 +20,15 @@ using System; using GrasscutterTools.Game; +using GrasscutterTools.Properties; using GrasscutterTools.Utils; namespace GrasscutterTools.Pages { internal partial class PageGiveWeapon : BasePage { + public override string Text => Resources.PageGiveWeaponTitle; + public PageGiveWeapon() { InitializeComponent(); diff --git a/Source/GrasscutterTools/Pages/PageHome.Designer.cs b/Source/GrasscutterTools/Pages/PageHome.Designer.cs index ae57717..2c21ba8 100644 --- a/Source/GrasscutterTools/Pages/PageHome.Designer.cs +++ b/Source/GrasscutterTools/Pages/PageHome.Designer.cs @@ -36,19 +36,15 @@ this.BtnOpenTextMap = new System.Windows.Forms.Button(); this.BtnOpenGachaBannerEditor = new System.Windows.Forms.Button(); this.GrasscutterToolsIcon = new System.Windows.Forms.PictureBox(); - this.GrpSettings = new System.Windows.Forms.GroupBox(); - this.LblGCVersion = new System.Windows.Forms.Label(); - this.CmbGcVersions = new System.Windows.Forms.ComboBox(); - this.ChkTopMost = new System.Windows.Forms.CheckBox(); + this.BtnActivityEditor = new System.Windows.Forms.Button(); + this.LblTip1 = new System.Windows.Forms.Label(); + this.LblTip2 = new System.Windows.Forms.Label(); + this.LblTip3 = new System.Windows.Forms.Label(); + this.LblTip4 = new System.Windows.Forms.Label(); + this.LblTip5 = new System.Windows.Forms.Label(); this.CmbLanguage = new System.Windows.Forms.ComboBox(); this.LblLanguage = new System.Windows.Forms.Label(); - this.NUDUid = new System.Windows.Forms.NumericUpDown(); - this.ChkIncludeUID = new System.Windows.Forms.CheckBox(); - this.LblDefaultUid = new System.Windows.Forms.Label(); - this.BtnActivityEditor = new System.Windows.Forms.Button(); ((System.ComponentModel.ISupportInitialize)(this.GrasscutterToolsIcon)).BeginInit(); - this.GrpSettings.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)(this.NUDUid)).BeginInit(); this.SuspendLayout(); // // BtnOpenShopEditor @@ -98,37 +94,42 @@ this.GrasscutterToolsIcon.Name = "GrasscutterToolsIcon"; this.GrasscutterToolsIcon.TabStop = false; // - // GrpSettings + // BtnActivityEditor // - resources.ApplyResources(this.GrpSettings, "GrpSettings"); - this.GrpSettings.Controls.Add(this.LblGCVersion); - this.GrpSettings.Controls.Add(this.CmbGcVersions); - this.GrpSettings.Controls.Add(this.ChkTopMost); - this.GrpSettings.Controls.Add(this.CmbLanguage); - this.GrpSettings.Controls.Add(this.LblLanguage); - this.GrpSettings.Controls.Add(this.NUDUid); - this.GrpSettings.Controls.Add(this.ChkIncludeUID); - this.GrpSettings.Controls.Add(this.LblDefaultUid); - this.GrpSettings.Name = "GrpSettings"; - this.GrpSettings.TabStop = false; + resources.ApplyResources(this.BtnActivityEditor, "BtnActivityEditor"); + this.BtnActivityEditor.Name = "BtnActivityEditor"; + this.BtnActivityEditor.UseVisualStyleBackColor = true; + this.BtnActivityEditor.Click += new System.EventHandler(this.BtnActivityEditor_Click); // - // LblGCVersion + // LblTip1 // - resources.ApplyResources(this.LblGCVersion, "LblGCVersion"); - this.LblGCVersion.Name = "LblGCVersion"; + resources.ApplyResources(this.LblTip1, "LblTip1"); + this.LblTip1.ForeColor = System.Drawing.SystemColors.GrayText; + this.LblTip1.Name = "LblTip1"; // - // CmbGcVersions + // LblTip2 // - resources.ApplyResources(this.CmbGcVersions, "CmbGcVersions"); - this.CmbGcVersions.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; - this.CmbGcVersions.FormattingEnabled = true; - this.CmbGcVersions.Name = "CmbGcVersions"; + resources.ApplyResources(this.LblTip2, "LblTip2"); + this.LblTip2.ForeColor = System.Drawing.SystemColors.GrayText; + this.LblTip2.Name = "LblTip2"; // - // ChkTopMost + // LblTip3 // - resources.ApplyResources(this.ChkTopMost, "ChkTopMost"); - this.ChkTopMost.Name = "ChkTopMost"; - this.ChkTopMost.UseVisualStyleBackColor = true; + resources.ApplyResources(this.LblTip3, "LblTip3"); + this.LblTip3.ForeColor = System.Drawing.SystemColors.GrayText; + this.LblTip3.Name = "LblTip3"; + // + // LblTip4 + // + resources.ApplyResources(this.LblTip4, "LblTip4"); + this.LblTip4.ForeColor = System.Drawing.SystemColors.GrayText; + this.LblTip4.Name = "LblTip4"; + // + // LblTip5 + // + resources.ApplyResources(this.LblTip5, "LblTip5"); + this.LblTip5.ForeColor = System.Drawing.SystemColors.GrayText; + this.LblTip5.Name = "LblTip5"; // // CmbLanguage // @@ -140,59 +141,30 @@ // LblLanguage // resources.ApplyResources(this.LblLanguage, "LblLanguage"); + this.LblLanguage.ForeColor = System.Drawing.SystemColors.GrayText; this.LblLanguage.Name = "LblLanguage"; // - // NUDUid - // - resources.ApplyResources(this.NUDUid, "NUDUid"); - this.NUDUid.Maximum = new decimal(new int[] { - 2147483647, - 0, - 0, - 0}); - this.NUDUid.Name = "NUDUid"; - this.NUDUid.Value = new decimal(new int[] { - 10001, - 0, - 0, - 0}); - // - // ChkIncludeUID - // - resources.ApplyResources(this.ChkIncludeUID, "ChkIncludeUID"); - this.ChkIncludeUID.Name = "ChkIncludeUID"; - this.ChkIncludeUID.UseVisualStyleBackColor = true; - // - // LblDefaultUid - // - resources.ApplyResources(this.LblDefaultUid, "LblDefaultUid"); - this.LblDefaultUid.Name = "LblDefaultUid"; - // - // BtnActivityEditor - // - resources.ApplyResources(this.BtnActivityEditor, "BtnActivityEditor"); - this.BtnActivityEditor.Name = "BtnActivityEditor"; - this.BtnActivityEditor.UseVisualStyleBackColor = true; - this.BtnActivityEditor.Click += new System.EventHandler(this.BtnActivityEditor_Click); - // // PageHome // resources.ApplyResources(this, "$this"); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.Controls.Add(this.CmbLanguage); + this.Controls.Add(this.LblLanguage); + this.Controls.Add(this.LblTip5); + this.Controls.Add(this.LblTip4); + this.Controls.Add(this.LblTip3); + this.Controls.Add(this.LblTip2); + this.Controls.Add(this.LblTip1); + this.Controls.Add(this.LnkNewVersion); this.Controls.Add(this.BtnActivityEditor); - this.Controls.Add(this.LblAbout); this.Controls.Add(this.BtnOpenTextMap); this.Controls.Add(this.BtnOpenGachaBannerEditor); this.Controls.Add(this.BtnOpenDropEditor); this.Controls.Add(this.BtnOpenShopEditor); this.Controls.Add(this.GrasscutterToolsIcon); - this.Controls.Add(this.GrpSettings); - this.Controls.Add(this.LnkNewVersion); + this.Controls.Add(this.LblAbout); this.Name = "PageHome"; ((System.ComponentModel.ISupportInitialize)(this.GrasscutterToolsIcon)).EndInit(); - this.GrpSettings.ResumeLayout(false); - this.GrpSettings.PerformLayout(); - ((System.ComponentModel.ISupportInitialize)(this.NUDUid)).EndInit(); this.ResumeLayout(false); this.PerformLayout(); @@ -207,15 +179,13 @@ private System.Windows.Forms.Button BtnOpenTextMap; private System.Windows.Forms.Button BtnOpenGachaBannerEditor; private System.Windows.Forms.PictureBox GrasscutterToolsIcon; - private System.Windows.Forms.GroupBox GrpSettings; - private System.Windows.Forms.Label LblGCVersion; - private System.Windows.Forms.ComboBox CmbGcVersions; - private System.Windows.Forms.CheckBox ChkTopMost; + private System.Windows.Forms.Button BtnActivityEditor; + private System.Windows.Forms.Label LblTip1; + private System.Windows.Forms.Label LblTip2; + private System.Windows.Forms.Label LblTip3; + private System.Windows.Forms.Label LblTip4; + private System.Windows.Forms.Label LblTip5; private System.Windows.Forms.ComboBox CmbLanguage; private System.Windows.Forms.Label LblLanguage; - private System.Windows.Forms.NumericUpDown NUDUid; - private System.Windows.Forms.CheckBox ChkIncludeUID; - private System.Windows.Forms.Label LblDefaultUid; - private System.Windows.Forms.Button BtnActivityEditor; } } diff --git a/Source/GrasscutterTools/Pages/PageHome.cs b/Source/GrasscutterTools/Pages/PageHome.cs index 0dd4e39..e6ca798 100644 --- a/Source/GrasscutterTools/Pages/PageHome.cs +++ b/Source/GrasscutterTools/Pages/PageHome.cs @@ -19,14 +19,11 @@ using System; using System.Collections.Generic; -using System.Linq; using System.Threading; using System.Threading.Tasks; using System.Windows.Forms; using GrasscutterTools.Forms; -using GrasscutterTools.Game; - using GrasscutterTools.Properties; using GrasscutterTools.Utils; @@ -34,6 +31,8 @@ namespace GrasscutterTools.Pages { internal partial class PageHome : BasePage { + public override string Text => Resources.PageHomeTitle; + /// /// 初始化首页设置 /// @@ -42,26 +41,6 @@ namespace GrasscutterTools.Pages InitializeComponent(); if (DesignMode) return; - // 玩家UID - NUDUid.Value = Settings.Default.Uid; - NUDUid.ValueChanged += (o, e) => Settings.Default.Uid = NUDUid.Value; - - // 是否包含UID - ChkIncludeUID.Checked = Settings.Default.IsIncludeUID; - ChkIncludeUID.CheckedChanged += (o, e) => Settings.Default.IsIncludeUID = ChkIncludeUID.Checked; - - // 置顶 - ChkTopMost.Checked = Settings.Default.IsTopMost; - ChkTopMost.CheckedChanged += (o, e) => Settings.Default.IsTopMost = ParentForm.TopMost = ChkTopMost.Checked; - - // 命令版本初始化 - if (Version.TryParse(Settings.Default.CommandVersion, out Version current)) - CommandVersion.Current = current; - CmbGcVersions.DataSource = CommandVersion.List.Select(it => it.ToString(3)).ToList(); - CmbGcVersions.SelectedIndex = Array.IndexOf(CommandVersion.List, CommandVersion.Current); - CmbGcVersions.SelectedIndexChanged += (o, e) => CommandVersion.Current = CommandVersion.List[CmbGcVersions.SelectedIndex]; - CommandVersion.VersionChanged += (o, e) => Settings.Default.CommandVersion = CommandVersion.Current.ToString(3); - // 初始化多语言 CmbLanguage.DataSource = MultiLanguage.LanguageNames; if (string.IsNullOrEmpty(Settings.Default.DefaultLanguage)) @@ -76,7 +55,6 @@ namespace GrasscutterTools.Pages CmbLanguage.SelectedIndex = Array.IndexOf(MultiLanguage.Languages, Settings.Default.DefaultLanguage); } CmbLanguage.SelectedIndexChanged += CmbLanguage_SelectedIndexChanged; - #if !DEBUG // 仅正式版 // 检查更新,但不要弹窗 Task.Run(async () => { try { await LoadUpdate(); } catch { /* 启动时检查更新,忽略异常 */ }}); @@ -115,7 +93,7 @@ namespace GrasscutterTools.Pages form.TopMost = false; } - private readonly Dictionary MyForms = new Dictionary(); + private readonly Dictionary MyForms = new(); private void ShowForm(string tag) where T : Form, new() { @@ -157,12 +135,7 @@ namespace GrasscutterTools.Pages /// private void BtnActivityEditor_Click(object sender, EventArgs e) => ShowForm("ActivityEditor"); - - /// - /// 当选中语言改变时触发 - /// - public Action OnLanguageChanged { get; set; } - + /// /// 语言选中项改变时触发 /// @@ -173,8 +146,8 @@ namespace GrasscutterTools.Pages MultiLanguage.SetDefaultLanguage(MultiLanguage.Languages[CmbLanguage.SelectedIndex]); // 动态更改语言 MultiLanguage.LoadLanguage(ParentForm, ParentForm.GetType()); - // 通知语言改变 - OnLanguageChanged?.Invoke(); + // 重载界面 + FormMain.Instance.Reload(); } /// diff --git a/Source/GrasscutterTools/Pages/PageHome.en-US.resx b/Source/GrasscutterTools/Pages/PageHome.en-US.resx index 8cdd852..15c2bee 100644 --- a/Source/GrasscutterTools/Pages/PageHome.en-US.resx +++ b/Source/GrasscutterTools/Pages/PageHome.en-US.resx @@ -127,33 +127,12 @@ Have a nice time! - - 120, 23 - TextMapBrowser Gacha Editor - - 109, 21 - - - Always on top - - - 95, 21 - - - Include UID - - - Settings - - - 542, 213 - Activity Editor diff --git a/Source/GrasscutterTools/Pages/PageHome.resx b/Source/GrasscutterTools/Pages/PageHome.resx index 6b142ef..049d1b0 100644 --- a/Source/GrasscutterTools/Pages/PageHome.resx +++ b/Source/GrasscutterTools/Pages/PageHome.resx @@ -117,508 +117,475 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Bottom, Left + + + NoControl + - - 3, 3 + + 3, 118 - - ChkTopMost - - - GrasscutterToolsIcon + + 150, 25 - - True - - - 100, 23 - - - $this - - - 5 - - - GrpSettings - - - GrpSettings - - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - UID - - - GC - - - 语言/Language/язык - - - True - - - 310, 213 - - - System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - + 4 - - LblLanguage - - - 333, 175 - - - GrpSettings - - - 6 - - - 6 - - - 祝你玩得愉快! - - - 7 - - - 7 - - - - NoControl - - - 320, 102 - - - 301, 111 - - - True - - - System.Windows.Forms.PictureBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - NoControl - - - Bottom, Left - - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - GrpSettings - - - 310, 3 - - - 生成的命令包含UID - - - NoControl - - - PageHome - - - 147, 23 - - - Bottom, Left - - - Bottom, Left - - - 0 - - - ChkIncludeUID - - - CenterImage + + 商店编辑器 BtnOpenShopEditor - - 3 - - - 416, 213 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - LblAbout - - - 3 - - - 0 - - - GrpSettings - - - System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - GrpSettings - - - 100, 23 - - - $this - - - BtnOpenDropEditor - - - Bottom, Left - - - True - - - NoControl - - - 4 - - - 3 - - - Microsoft YaHei UI, 13pt - - - 4 - - - 窗口置顶 - - - 3, 125 + + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 $this - - NoControl + + 12 - - 7, 17 - - - 100, 23 - - - 设置 - - - NoControl - - - $this - - - 133, 21 - - - 文本浏览器 - - + Bottom, Left - - 7 - - - 1 - - - 30, 17 - - - LblDefaultUid - - - BtnOpenTextMap - - - MiddleCenter - - - GrasscutterTools.Pages.BasePage, GrasscutterTools, Version=1.9.0.0, Culture=neutral, PublicKeyToken=de2b1c089621e923 - - - False - - - True - - + NoControl - - 活动编辑器 + + 3, 149 - - LblGCVersion + + 150, 25 - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + 6 掉落物编辑器 - - GrpSettings + + BtnOpenDropEditor - + + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + $this - - System.Windows.Forms.LinkLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + 11 - - 0 + + Bottom, Left - + True - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 3 - - - 25, 17 - - + NoControl - - 41, 80 + + 4, 3 - - 100, 25 + + 104, 17 - - $this - - - 41, 51 - - - GrpSettings - - - 41, 22 - - - CmbLanguage - - - 75, 21 - - - CmbGcVersions - - - 2 + + 1 New Version Tip + + False + + + LnkNewVersion + + + System.Windows.Forms.LinkLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 7 + + + Top, Bottom, Left + + + Microsoft YaHei UI, 13pt + + + NoControl + + + 3, 3 + + + 320, 102 + + + 0 + + + 祝你玩得愉快! + + + MiddleCenter + + + LblAbout + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 14 + + + Bottom, Left + + + NoControl + + + 3, 211 + + + 150, 25 + + + 10 + + + 文本浏览器 + + + BtnOpenTextMap + + + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 9 + + + Bottom, Left + + + NoControl + + + 3, 90 + + + 150, 25 + + + 2 + + + 奖池编辑器 + BtnOpenGachaBannerEditor - - 2 - - - 147, 54 - - - 100, 23 - - - 14 - - - 6 - - - 8 - - - NoControl - - - 100, 23 + + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 $this - - 4 + + 10 - + + Top, Bottom, Left, Right + + + NoControl + + + 310, 3 + + + 333, 202 + + + CenterImage + + + 14 + + + GrasscutterToolsIcon + + + System.Windows.Forms.PictureBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 13 + + + Bottom, Left + + + 3, 180 + + + 150, 25 + + + 8 + + + 活动编辑器 + + + BtnActivityEditor + + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 $this - - 5 + + 8 - - 2 + + Bottom, Left - - 522, 213 + + True - - 100, 23 + + 159, 94 - - 416, 184 + + 118, 17 - - 7 + + 3 - - 5 + + /data/Banners.json - - 2 + + LblTip1 - - NUDUid + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - 104, 17 - - - 128, 17 - - + $this - - NoControl - - - Bottom, Left - - - GrpSettings - - - 奖池编辑器 - - - Top, Bottom, Left - - + 6 - - 1 - - - 1 - - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - + Bottom, Left - - NoControl + + True - - LnkNewVersion + + 159, 122 + + + 101, 17 + + + 5 + + + /data/Shop.json + + + LblTip2 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 5 + + + Bottom, Left + + + True + + + 159, 153 + + + 101, 17 + + + 7 + + + /data/Drop.json + + + LblTip3 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 4 + + + Bottom, Left + + + True + + + 159, 184 + + + 149, 17 + + + 9 + + + /data/ActivityConfig.json + + + LblTip4 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 3 + + + Bottom, Left + + + True + + + 159, 215 + + + 96, 17 + + + 11 + + + /Res/TextMaps + + + LblTip5 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 2 + + + Bottom, Right + + + 543, 211 100, 25 - - 商店编辑器 + + 15 - - 147, 82 + + CmbLanguage - - 5 + + System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + $this - - Top, Bottom, Left, Right - - + 0 - - 310, 184 + + Bottom, Right - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + True - - 1 - - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - BtnActivityEditor - - - 7, 83 - - - 3, 105 - - - 7, 24 - - + NoControl + + 409, 215 + + + 128, 17 + + + 16 + + + 语言/Language/язык + + + LblLanguage + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 1 + True + + 7, 17 + + + PageHome + + + GrasscutterTools.Pages.BasePage, GrasscutterTools, Version=1.13.0.0, Culture=neutral, PublicKeyToken=de2b1c089621e923 + \ No newline at end of file diff --git a/Source/GrasscutterTools/Pages/PageHome.ru-RU.resx b/Source/GrasscutterTools/Pages/PageHome.ru-RU.resx index b7b1d27..f531db3 100644 --- a/Source/GrasscutterTools/Pages/PageHome.ru-RU.resx +++ b/Source/GrasscutterTools/Pages/PageHome.ru-RU.resx @@ -117,84 +117,21 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 140, 23 - - - - 4 - Редактор магазина - - 456, 184 - - - 140, 23 - - - 5 - Редактор дропа Желаем приятно провести время! - - 456, 213 - - - 140, 23 - - - 7 - Браузер карт - - 140, 23 - - - 6 - Редактор баннеров - - 333, 146 - - - - Zoom - - - Настройки - - - 140, 21 - - - Последняя версия - - - 113, 21 - - - Включить UID - - - 310, 155 - - - 150, 23 - - - 3 - Редактор активности diff --git a/Source/GrasscutterTools/Pages/PageHome.zh-TW.resx b/Source/GrasscutterTools/Pages/PageHome.zh-TW.resx index ac43fe3..1200a0c 100644 --- a/Source/GrasscutterTools/Pages/PageHome.zh-TW.resx +++ b/Source/GrasscutterTools/Pages/PageHome.zh-TW.resx @@ -129,12 +129,6 @@ 獎池編輯器 - - 設置 - - - 窗口置頂 - 活動編輯器 diff --git a/Source/GrasscutterTools/Pages/PageHotKey.cs b/Source/GrasscutterTools/Pages/PageHotKey.cs index eb84495..8651c55 100644 --- a/Source/GrasscutterTools/Pages/PageHotKey.cs +++ b/Source/GrasscutterTools/Pages/PageHotKey.cs @@ -32,6 +32,8 @@ namespace GrasscutterTools.Pages { internal partial class PageHotKey : BasePage { + public override string Text => Resources.PageHotKey; + private const string TAG = nameof(PageHotKey); public PageHotKey() diff --git a/Source/GrasscutterTools/Pages/PageMail.cs b/Source/GrasscutterTools/Pages/PageMail.cs index 2c7d5fd..6301c0e 100644 --- a/Source/GrasscutterTools/Pages/PageMail.cs +++ b/Source/GrasscutterTools/Pages/PageMail.cs @@ -34,6 +34,8 @@ namespace GrasscutterTools.Pages { internal partial class PageMail : BasePage { + public override string Text => Resources.PageMailTitle; + public PageMail() { InitializeComponent(); diff --git a/Source/GrasscutterTools/Pages/PageManagement.cs b/Source/GrasscutterTools/Pages/PageManagement.cs index c19806a..4f830aa 100644 --- a/Source/GrasscutterTools/Pages/PageManagement.cs +++ b/Source/GrasscutterTools/Pages/PageManagement.cs @@ -28,6 +28,8 @@ namespace GrasscutterTools.Pages { internal partial class PageManagement : BasePage { + public override string Text => Resources.PageManagementTitle; + public PageManagement() { InitializeComponent(); diff --git a/Source/GrasscutterTools/Pages/PageOpenCommand.cs b/Source/GrasscutterTools/Pages/PageOpenCommand.cs index 94ac272..9b39cfc 100644 --- a/Source/GrasscutterTools/Pages/PageOpenCommand.cs +++ b/Source/GrasscutterTools/Pages/PageOpenCommand.cs @@ -38,6 +38,8 @@ namespace GrasscutterTools.Pages { internal partial class PageOpenCommand : BasePage { + public override string Text => Resources.PageOpenCommandTitle; + private const string TAG = nameof(PageOpenCommand); public PageOpenCommand() diff --git a/Source/GrasscutterTools/Pages/PageProxy.cs b/Source/GrasscutterTools/Pages/PageProxy.cs index 37258c0..10131c9 100644 --- a/Source/GrasscutterTools/Pages/PageProxy.cs +++ b/Source/GrasscutterTools/Pages/PageProxy.cs @@ -27,7 +27,8 @@ namespace GrasscutterTools.Pages { internal partial class PageProxy : BasePage { - private const string TAG = nameof(PageProxy); + public override string Text => Resources.PageProxyTitle; + public PageProxy() { InitializeComponent(); @@ -41,7 +42,7 @@ namespace GrasscutterTools.Pages if (Settings.Default.AutoStartProxy && !ProxyHelper.IsRunning) { - Logger.I(TAG, "Auto start proxy!"); + Logger.I(Name, "Auto start proxy!"); BtnStartProxy_Click(BtnStartProxy, EventArgs.Empty); } } @@ -50,7 +51,7 @@ namespace GrasscutterTools.Pages { try { - Logger.I(TAG, "Stop Proxy"); + Logger.I(Name, "Stop Proxy"); ProxyHelper.StopProxy(); } catch (Exception ex) @@ -58,7 +59,7 @@ namespace GrasscutterTools.Pages #if DEBUG MessageBox.Show(ex.ToString(), Resources.Error, MessageBoxButtons.OK, MessageBoxIcon.Error); #endif - Logger.E(TAG, "Stop Proxy Failed.", ex); + Logger.E(Name, "Stop Proxy Failed.", ex); } } @@ -101,7 +102,7 @@ namespace GrasscutterTools.Pages } catch (Exception ex) { - Logger.E(TAG, "Start Proxy failed.", ex); + Logger.E(Name, "Start Proxy failed.", ex); MessageBox.Show(ex.Message, Resources.Error, MessageBoxButtons.OK, MessageBoxIcon.Error); } } @@ -127,7 +128,7 @@ namespace GrasscutterTools.Pages /// private void BtnDestroyCert_Click(object sender, EventArgs e) { - Logger.I(TAG, "DestroyCertificate"); + Logger.I(Name, "DestroyCertificate"); ProxyHelper.DestroyCertificate(); MessageBox.Show("OK", Resources.Tips); } diff --git a/Source/GrasscutterTools/Pages/PageQuest.cs b/Source/GrasscutterTools/Pages/PageQuest.cs index c8aa1aa..9245d5d 100644 --- a/Source/GrasscutterTools/Pages/PageQuest.cs +++ b/Source/GrasscutterTools/Pages/PageQuest.cs @@ -22,11 +22,14 @@ using System.Linq; using System.Windows.Forms; using GrasscutterTools.Game; +using GrasscutterTools.Properties; namespace GrasscutterTools.Pages { internal partial class PageQuest : BasePage { + public override string Text => Resources.PageQuestTitle; + public PageQuest() { InitializeComponent(); diff --git a/Source/GrasscutterTools/Pages/PageScene.cs b/Source/GrasscutterTools/Pages/PageScene.cs index f2cb7ce..84b02a1 100644 --- a/Source/GrasscutterTools/Pages/PageScene.cs +++ b/Source/GrasscutterTools/Pages/PageScene.cs @@ -27,6 +27,8 @@ namespace GrasscutterTools.Pages { internal partial class PageScene : BasePage { + public override string Text => Resources.PageSceneTitle; + public PageScene() { InitializeComponent(); diff --git a/Source/GrasscutterTools/Pages/PageSceneTag.cs b/Source/GrasscutterTools/Pages/PageSceneTag.cs index 32d94fa..13a7340 100644 --- a/Source/GrasscutterTools/Pages/PageSceneTag.cs +++ b/Source/GrasscutterTools/Pages/PageSceneTag.cs @@ -20,11 +20,14 @@ using System; using System.Windows.Forms; using GrasscutterTools.Game; +using GrasscutterTools.Properties; namespace GrasscutterTools.Pages { internal partial class PageSceneTag : BasePage { + public override string Text => Resources.PageSceneTagTitle; + public PageSceneTag() { InitializeComponent(); diff --git a/Source/GrasscutterTools/Pages/PageSetProp.cs b/Source/GrasscutterTools/Pages/PageSetProp.cs index 8532fef..ebce9d5 100644 --- a/Source/GrasscutterTools/Pages/PageSetProp.cs +++ b/Source/GrasscutterTools/Pages/PageSetProp.cs @@ -28,6 +28,8 @@ namespace GrasscutterTools.Pages { internal partial class PageSetProp : BasePage { + public override string Text => Resources.PageSetPropTitle; + private const string SetPropPrefix = "/prop"; public PageSetProp() diff --git a/Source/GrasscutterTools/Pages/PageSettings.Designer.cs b/Source/GrasscutterTools/Pages/PageSettings.Designer.cs new file mode 100644 index 0000000..6686e8e --- /dev/null +++ b/Source/GrasscutterTools/Pages/PageSettings.Designer.cs @@ -0,0 +1,202 @@ +namespace GrasscutterTools.Pages +{ + partial class PageSettings + { + /// + /// 必需的设计器变量。 + /// + private System.ComponentModel.IContainer components = null; + + /// + /// 清理所有正在使用的资源。 + /// + /// 如果应释放托管资源,为 true;否则为 false。 + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region 组件设计器生成的代码 + + /// + /// 设计器支持所需的方法 - 不要修改 + /// 使用代码编辑器修改此方法的内容。 + /// + private void InitializeComponent() + { + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(PageSettings)); + this.LblPageTitle = new System.Windows.Forms.Label(); + this.NUDUid = new System.Windows.Forms.NumericUpDown(); + this.ChkIncludeUID = new System.Windows.Forms.CheckBox(); + this.LblIncludeUidTip = new System.Windows.Forms.Label(); + this.GrpPageList = new System.Windows.Forms.GroupBox(); + this.BtnResetPageList = new System.Windows.Forms.Button(); + this.BtnMoveDown = new System.Windows.Forms.Button(); + this.BtnMoveUp = new System.Windows.Forms.Button(); + this.ChkListPages = new System.Windows.Forms.CheckedListBox(); + this.LblGCVersion = new System.Windows.Forms.Label(); + this.CmbGcVersions = new System.Windows.Forms.ComboBox(); + this.LblGcVersionTip = new System.Windows.Forms.Label(); + this.ChkTopMost = new System.Windows.Forms.CheckBox(); + this.LblWindowOpacity = new System.Windows.Forms.Label(); + this.TbWindowOpacity = new System.Windows.Forms.TrackBar(); + ((System.ComponentModel.ISupportInitialize)(this.NUDUid)).BeginInit(); + this.GrpPageList.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.TbWindowOpacity)).BeginInit(); + this.SuspendLayout(); + // + // LblPageTitle + // + resources.ApplyResources(this.LblPageTitle, "LblPageTitle"); + this.LblPageTitle.Name = "LblPageTitle"; + // + // NUDUid + // + resources.ApplyResources(this.NUDUid, "NUDUid"); + this.NUDUid.Maximum = new decimal(new int[] { + 2147483647, + 0, + 0, + 0}); + this.NUDUid.Name = "NUDUid"; + this.NUDUid.Value = new decimal(new int[] { + 10001, + 0, + 0, + 0}); + // + // ChkIncludeUID + // + resources.ApplyResources(this.ChkIncludeUID, "ChkIncludeUID"); + this.ChkIncludeUID.Name = "ChkIncludeUID"; + this.ChkIncludeUID.UseVisualStyleBackColor = true; + // + // LblIncludeUidTip + // + resources.ApplyResources(this.LblIncludeUidTip, "LblIncludeUidTip"); + this.LblIncludeUidTip.ForeColor = System.Drawing.SystemColors.GrayText; + this.LblIncludeUidTip.Name = "LblIncludeUidTip"; + // + // GrpPageList + // + resources.ApplyResources(this.GrpPageList, "GrpPageList"); + this.GrpPageList.Controls.Add(this.BtnResetPageList); + this.GrpPageList.Controls.Add(this.BtnMoveDown); + this.GrpPageList.Controls.Add(this.BtnMoveUp); + this.GrpPageList.Controls.Add(this.ChkListPages); + this.GrpPageList.Name = "GrpPageList"; + this.GrpPageList.TabStop = false; + // + // BtnResetPageList + // + resources.ApplyResources(this.BtnResetPageList, "BtnResetPageList"); + this.BtnResetPageList.Name = "BtnResetPageList"; + this.BtnResetPageList.UseVisualStyleBackColor = true; + this.BtnResetPageList.Click += new System.EventHandler(this.BtnResetPageList_Click); + // + // BtnMoveDown + // + resources.ApplyResources(this.BtnMoveDown, "BtnMoveDown"); + this.BtnMoveDown.Name = "BtnMoveDown"; + this.BtnMoveDown.UseVisualStyleBackColor = true; + this.BtnMoveDown.Click += new System.EventHandler(this.BtnMoveDown_Click); + // + // BtnMoveUp + // + resources.ApplyResources(this.BtnMoveUp, "BtnMoveUp"); + this.BtnMoveUp.Name = "BtnMoveUp"; + this.BtnMoveUp.UseVisualStyleBackColor = true; + this.BtnMoveUp.Click += new System.EventHandler(this.BtnMoveUp_Click); + // + // ChkListPages + // + resources.ApplyResources(this.ChkListPages, "ChkListPages"); + this.ChkListPages.FormattingEnabled = true; + this.ChkListPages.Name = "ChkListPages"; + this.ChkListPages.ItemCheck += new System.Windows.Forms.ItemCheckEventHandler(this.ChkListPages_ItemCheck); + // + // LblGCVersion + // + resources.ApplyResources(this.LblGCVersion, "LblGCVersion"); + this.LblGCVersion.Name = "LblGCVersion"; + // + // CmbGcVersions + // + this.CmbGcVersions.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.CmbGcVersions.FormattingEnabled = true; + resources.ApplyResources(this.CmbGcVersions, "CmbGcVersions"); + this.CmbGcVersions.Name = "CmbGcVersions"; + // + // LblGcVersionTip + // + resources.ApplyResources(this.LblGcVersionTip, "LblGcVersionTip"); + this.LblGcVersionTip.ForeColor = System.Drawing.SystemColors.GrayText; + this.LblGcVersionTip.Name = "LblGcVersionTip"; + // + // ChkTopMost + // + resources.ApplyResources(this.ChkTopMost, "ChkTopMost"); + this.ChkTopMost.Name = "ChkTopMost"; + this.ChkTopMost.UseVisualStyleBackColor = true; + // + // LblWindowOpacity + // + resources.ApplyResources(this.LblWindowOpacity, "LblWindowOpacity"); + this.LblWindowOpacity.Name = "LblWindowOpacity"; + // + // TbWindowOpacity + // + resources.ApplyResources(this.TbWindowOpacity, "TbWindowOpacity"); + this.TbWindowOpacity.Maximum = 100; + this.TbWindowOpacity.Minimum = 5; + this.TbWindowOpacity.Name = "TbWindowOpacity"; + this.TbWindowOpacity.TickFrequency = 20; + this.TbWindowOpacity.Value = 100; + // + // PageSettings + // + resources.ApplyResources(this, "$this"); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.Controls.Add(this.TbWindowOpacity); + this.Controls.Add(this.LblWindowOpacity); + this.Controls.Add(this.ChkTopMost); + this.Controls.Add(this.LblGcVersionTip); + this.Controls.Add(this.LblGCVersion); + this.Controls.Add(this.CmbGcVersions); + this.Controls.Add(this.GrpPageList); + this.Controls.Add(this.LblIncludeUidTip); + this.Controls.Add(this.NUDUid); + this.Controls.Add(this.ChkIncludeUID); + this.Controls.Add(this.LblPageTitle); + this.Name = "PageSettings"; + ((System.ComponentModel.ISupportInitialize)(this.NUDUid)).EndInit(); + this.GrpPageList.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.TbWindowOpacity)).EndInit(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.Label LblPageTitle; + private System.Windows.Forms.NumericUpDown NUDUid; + private System.Windows.Forms.CheckBox ChkIncludeUID; + private System.Windows.Forms.Label LblIncludeUidTip; + private System.Windows.Forms.GroupBox GrpPageList; + private System.Windows.Forms.Button BtnMoveDown; + private System.Windows.Forms.Button BtnMoveUp; + private System.Windows.Forms.CheckedListBox ChkListPages; + private System.Windows.Forms.Label LblGCVersion; + private System.Windows.Forms.ComboBox CmbGcVersions; + private System.Windows.Forms.Label LblGcVersionTip; + private System.Windows.Forms.CheckBox ChkTopMost; + private System.Windows.Forms.Label LblWindowOpacity; + private System.Windows.Forms.TrackBar TbWindowOpacity; + private System.Windows.Forms.Button BtnResetPageList; + } +} diff --git a/Source/GrasscutterTools/Pages/PageSettings.cs b/Source/GrasscutterTools/Pages/PageSettings.cs new file mode 100644 index 0000000..3ff5778 --- /dev/null +++ b/Source/GrasscutterTools/Pages/PageSettings.cs @@ -0,0 +1,186 @@ +/** + * Grasscutter Tools + * Copyright (C) 2023 jie65535 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published + * by the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + * + **/ + +using System; +using System.Linq; +using System.Windows.Forms; +using GrasscutterTools.Forms; +using GrasscutterTools.Game; +using GrasscutterTools.Properties; + +namespace GrasscutterTools.Pages +{ + internal partial class PageSettings : BasePage + { + public override string Text => Resources.PageSettingsTitle; + + public PageSettings() + { + InitializeComponent(); + if (DesignMode) return; + + // 玩家UID + NUDUid.Value = Settings.Default.Uid; + NUDUid.ValueChanged += (o, e) => Settings.Default.Uid = NUDUid.Value; + + // 是否包含UID + ChkIncludeUID.Checked = Settings.Default.IsIncludeUID; + ChkIncludeUID.CheckedChanged += (o, e) => Settings.Default.IsIncludeUID = ChkIncludeUID.Checked; + + // 窗口透明度 + TbWindowOpacity.Value = Settings.Default.WindowOpacity; + TbWindowOpacity.Scroll += TbWindowOpacity_Scroll; + + // 置顶 + ChkTopMost.Checked = FormMain.Instance.TopMost = Settings.Default.IsTopMost; + ChkTopMost.CheckedChanged += (o, e) => Settings.Default.IsTopMost = FormMain.Instance.TopMost = ChkTopMost.Checked; + + // 命令版本初始化 + if (Version.TryParse(Settings.Default.CommandVersion, out Version current)) + CommandVersion.Current = current; + CmbGcVersions.DataSource = CommandVersion.List.Select(it => it.ToString(3)).ToList(); + CmbGcVersions.SelectedIndex = Array.IndexOf(CommandVersion.List, CommandVersion.Current); + CmbGcVersions.SelectedIndexChanged += (o, e) => CommandVersion.Current = CommandVersion.List[CmbGcVersions.SelectedIndex]; + CommandVersion.VersionChanged += (o, e) => Settings.Default.CommandVersion = CommandVersion.Current.ToString(3); + + } + + /// + /// 页面加载时触发 + /// + public override void OnLoad() + { + InitPageList(); + } + + /// + /// 页面关闭时触发 + /// + public override void OnClosed() + { + // 保存设置 + Settings.Default.WindowOpacity = TbWindowOpacity.Value; + // 如果设置有更改 + if (isChanged) + { + // 保存页面选项卡顺序设置 + FormMain.Instance.SavePageTabOrders(); + } + } + + + #region - 页面列表 Page list - + + private bool isChanged; + + /// + /// 初始化页面列表 + /// + private void InitPageList() + { + ChkListPages.ItemCheck -= ChkListPages_ItemCheck; + ChkListPages.BeginUpdate(); + ChkListPages.Items.Clear(); + foreach (var pageTab in FormMain.Instance.PageTabOrders) + ChkListPages.Items.Add(FormMain.Instance.Pages[pageTab.Item1].Text, pageTab.Item2); + + ChkListPages.EndUpdate(); + ChkListPages.ItemCheck += ChkListPages_ItemCheck; + } + + /// + /// 页面选项更改时触发 + /// + private void ChkListPages_ItemCheck(object sender, ItemCheckEventArgs e) + { + var tab = FormMain.Instance.PageTabOrders[e.Index]; + // 不允许修改首页和设置页的可见性 + if (tab.Item1 is nameof(PageHome) or nameof(PageSettings)) + return; + FormMain.Instance.PageTabOrders[e.Index] = + new Tuple(tab.Item1, e.NewValue == CheckState.Checked); + FormMain.Instance.UpdatePagesNav(); + isChanged = true; + } + + private void MovePageOrder(int from, int to) + { + // 交换记录保存顺序 + var temp = FormMain.Instance.PageTabOrders[from]; + FormMain.Instance.PageTabOrders.RemoveAt(from); + FormMain.Instance.PageTabOrders.Insert(to, temp); + + // 交换控件选项顺序 + var selectedItem = ChkListPages.SelectedItem; + ChkListPages.ItemCheck -= ChkListPages_ItemCheck; + ChkListPages.BeginUpdate(); + ChkListPages.Items.RemoveAt(from); + ChkListPages.Items.Insert(to, selectedItem); + ChkListPages.SetItemChecked(to, temp.Item2); + ChkListPages.SelectedIndex = to; + ChkListPages.EndUpdate(); + ChkListPages.ItemCheck += ChkListPages_ItemCheck; + + + // 更新导航顺序 + FormMain.Instance.UpdatePagesNav(); + isChanged = true; + } + + /// + /// 点击向上移动时触发 + /// + private void BtnMoveUp_Click(object sender, EventArgs e) + { + var i = ChkListPages.SelectedIndex; + if (i <= 1) return; + MovePageOrder(i, i - 1); + } + + /// + /// 点击向下移动时触发 + /// + private void BtnMoveDown_Click(object sender, EventArgs e) + { + var i = ChkListPages.SelectedIndex; + if (i == -1 || i == ChkListPages.Items.Count - 1) return; + MovePageOrder(i, i + 1); + } + + #endregion + + /// + /// 窗口透明度滑块滑动时触发 + /// + private void TbWindowOpacity_Scroll(object sender, EventArgs e) + { + FormMain.Instance.Opacity = TbWindowOpacity.Value / 100.0; + } + + /// + /// 点击重置页面列表时触发 + /// + private void BtnResetPageList_Click(object sender, EventArgs e) + { + FormMain.Instance.ResetPageTabOrders(); + FormMain.Instance.UpdatePagesNav(); + InitPageList(); + } + } +} \ No newline at end of file diff --git a/Source/GrasscutterTools/Pages/PageSettings.en-US.resx b/Source/GrasscutterTools/Pages/PageSettings.en-US.resx new file mode 100644 index 0000000..1b56d89 --- /dev/null +++ b/Source/GrasscutterTools/Pages/PageSettings.en-US.resx @@ -0,0 +1,157 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + 54, 17 + + + Settings + + + 173, 17 + + + Console mode only checked + + + Page list + + + Restore + + + 234, 17 + + + Used to distinguish command versions + + + 109, 21 + + + Always on top + + + 52, 17 + + + Opacity + + \ No newline at end of file diff --git a/Source/GrasscutterTools/Pages/PageSettings.resx b/Source/GrasscutterTools/Pages/PageSettings.resx new file mode 100644 index 0000000..9d1189e --- /dev/null +++ b/Source/GrasscutterTools/Pages/PageSettings.resx @@ -0,0 +1,528 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + True + + + + 3, 3 + + + 56, 17 + + + 0 + + + 程序设置 + + + LblPageTitle + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 10 + + + 87, 39 + + + 100, 23 + + + 2 + + + NUDUid + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 8 + + + True + + + + NoControl + + + 28, 40 + + + 65, 21 + + + 1 + + + UID @ + + + ChkIncludeUID + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 9 + + + True + + + 193, 41 + + + 104, 17 + + + 3 + + + 仅控制台模式勾选 + + + LblIncludeUidTip + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 7 + + + Top, Bottom, Right + + + Bottom, Left + + + 6, 202 + + + 155, 25 + + + 3 + + + 恢复预设值 + + + BtnResetPageList + + + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + GrpPageList + + + 0 + + + Bottom, Left + + + 86, 171 + + + 75, 25 + + + 2 + + + + + + BtnMoveDown + + + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + GrpPageList + + + 1 + + + Bottom, Left + + + 5, 171 + + + 75, 25 + + + 1 + + + + + + BtnMoveUp + + + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + GrpPageList + + + 2 + + + Top, Bottom, Left, Right + + + 6, 22 + + + 155, 148 + + + 0 + + + ChkListPages + + + System.Windows.Forms.CheckedListBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + GrpPageList + + + 3 + + + 476, 3 + + + 167, 233 + + + 100 + + + 页面列表 + + + GrpPageList + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 6 + + + True + + + NoControl + + + 53, 70 + + + 25, 17 + + + 6 + + + GC + + + LblGCVersion + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 4 + + + 87, 67 + + + 100, 25 + + + 7 + + + CmbGcVersions + + + System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 5 + + + True + + + 193, 70 + + + 104, 17 + + + 8 + + + 用于区分命令版本 + + + LblGcVersionTip + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 3 + + + True + + + NoControl + + + 197, 98 + + + 75, 21 + + + 10 + + + 窗口置顶 + + + ChkTopMost + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 2 + + + True + + + 25, 99 + + + 56, 17 + + + 11 + + + 不透明度 + + + LblWindowOpacity + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 1 + + + 87, 98 + + + 104, 45 + + + 12 + + + TbWindowOpacity + + + System.Windows.Forms.TrackBar, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 0 + + + True + + + 7, 17 + + + PageSettings + + + GrasscutterTools.Pages.BasePage, GrasscutterTools, Version=1.13.0.0, Culture=neutral, PublicKeyToken=de2b1c089621e923 + + \ No newline at end of file diff --git a/Source/GrasscutterTools/Pages/PageSettings.ru-RU.resx b/Source/GrasscutterTools/Pages/PageSettings.ru-RU.resx new file mode 100644 index 0000000..1268804 --- /dev/null +++ b/Source/GrasscutterTools/Pages/PageSettings.ru-RU.resx @@ -0,0 +1,158 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + 73, 17 + + + Настройка + + + 217, 17 + + + Требуется только режим консоли + + + Список страниц + + + Восстановление + + + 167, 17 + + + Различие версий команд  + + + 140, 21 + + + Последняя версия + + + 67, 34 + + + Непрозр- +ачность + + \ No newline at end of file diff --git a/Source/GrasscutterTools/Pages/PageSettings.zh-TW.resx b/Source/GrasscutterTools/Pages/PageSettings.zh-TW.resx new file mode 100644 index 0000000..55c7183 --- /dev/null +++ b/Source/GrasscutterTools/Pages/PageSettings.zh-TW.resx @@ -0,0 +1,138 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 程式設定 + + + 僅控制台模式勾選 + + + 頁面清單 + + + 恢復預設值 + + + 用於區分命令版本 + + + 窗口置頂 + + \ No newline at end of file diff --git a/Source/GrasscutterTools/Pages/PageSpawn.cs b/Source/GrasscutterTools/Pages/PageSpawn.cs index 0857c4f..2422e7a 100644 --- a/Source/GrasscutterTools/Pages/PageSpawn.cs +++ b/Source/GrasscutterTools/Pages/PageSpawn.cs @@ -33,10 +33,12 @@ namespace GrasscutterTools.Pages { internal partial class PageSpawn : BasePage { + public override string Text => Resources.PageSpawnTitle; + public PageSpawn() { InitializeComponent(); - + if (DesignMode) return; InitSpawnRecord(); } diff --git a/Source/GrasscutterTools/Pages/PageTasks.cs b/Source/GrasscutterTools/Pages/PageTasks.cs index 252fd33..19489b1 100644 --- a/Source/GrasscutterTools/Pages/PageTasks.cs +++ b/Source/GrasscutterTools/Pages/PageTasks.cs @@ -16,7 +16,7 @@ namespace GrasscutterTools.Pages { internal partial class PageTasks : BasePage { - private const string TAG = nameof(PageTasks); + public override string Text => Resources.PageTasksTitle; public PageTasks() { @@ -83,7 +83,7 @@ namespace GrasscutterTools.Pages catch (Exception ex) { Tasks = new List(); - Logger.W(TAG, "Parsing Tasks json failed", ex); + Logger.W(Name, "Parsing Tasks json failed", ex); } } else @@ -228,7 +228,7 @@ namespace GrasscutterTools.Pages { try { - Logger.I(TAG, $"Task \"{task.Tag}\" started"); + Logger.I(Name, $"Task \"{task.Tag}\" started"); // 循环执行命令 for (int c = 0; !token.IsCancellationRequested @@ -250,14 +250,14 @@ namespace GrasscutterTools.Pages { // 任务结束后取消勾选状态 BeginInvoke(new Action(() => item.Checked = false)); - Logger.I(TAG, $"Task \"{task.Tag}\" stoped"); + Logger.I(Name, $"Task \"{task.Tag}\" stoped"); } }, token); } } catch (Exception ex) { - Logger.E(TAG, "Start or Stop Task failed.", ex); + Logger.E(Name, "Start or Stop Task failed.", ex); MessageBox.Show(ex.ToString(), Resources.Error, MessageBoxButtons.OK, MessageBoxIcon.Error); } } diff --git a/Source/GrasscutterTools/Pages/PageTools.cs b/Source/GrasscutterTools/Pages/PageTools.cs index 98c49b6..50cdbe1 100644 --- a/Source/GrasscutterTools/Pages/PageTools.cs +++ b/Source/GrasscutterTools/Pages/PageTools.cs @@ -36,6 +36,8 @@ namespace GrasscutterTools.Pages { internal partial class PageTools : BasePage { + public override string Text => "Tools"; + public PageTools() { InitializeComponent(); diff --git a/Source/GrasscutterTools/Properties/Resources.Designer.cs b/Source/GrasscutterTools/Properties/Resources.Designer.cs index 4489ef6..efd9276 100644 --- a/Source/GrasscutterTools/Properties/Resources.Designer.cs +++ b/Source/GrasscutterTools/Properties/Resources.Designer.cs @@ -1239,6 +1239,15 @@ namespace GrasscutterTools.Properties { } } + /// + /// 查找类似 设置 的本地化字符串。 + /// + internal static string PageSettingsTitle { + get { + return ResourceManager.GetString("PageSettingsTitle", resourceCulture); + } + } + /// /// 查找类似 生成 的本地化字符串。 /// diff --git a/Source/GrasscutterTools/Properties/Resources.en-us.resx b/Source/GrasscutterTools/Properties/Resources.en-us.resx index 20a5a6e..43c81af 100644 --- a/Source/GrasscutterTools/Properties/Resources.en-us.resx +++ b/Source/GrasscutterTools/Properties/Resources.en-us.resx @@ -381,4 +381,7 @@ Improvement suggestions have been submitted, please use caution to send emails t Proxy + + Settings + \ No newline at end of file diff --git a/Source/GrasscutterTools/Properties/Resources.resx b/Source/GrasscutterTools/Properties/Resources.resx index 155e4e6..4b2bb38 100644 --- a/Source/GrasscutterTools/Properties/Resources.resx +++ b/Source/GrasscutterTools/Properties/Resources.resx @@ -393,4 +393,7 @@ 代理 + + 设置 + \ No newline at end of file diff --git a/Source/GrasscutterTools/Properties/Resources.ru-ru.resx b/Source/GrasscutterTools/Properties/Resources.ru-ru.resx index eae051e..aaf3d47 100644 --- a/Source/GrasscutterTools/Properties/Resources.ru-ru.resx +++ b/Source/GrasscutterTools/Properties/Resources.ru-ru.resx @@ -369,4 +369,7 @@ Прокси + + Настройка + \ No newline at end of file diff --git a/Source/GrasscutterTools/Properties/Resources.zh-TW.resx b/Source/GrasscutterTools/Properties/Resources.zh-TW.resx index eac966a..f323f00 100644 --- a/Source/GrasscutterTools/Properties/Resources.zh-TW.resx +++ b/Source/GrasscutterTools/Properties/Resources.zh-TW.resx @@ -375,4 +375,7 @@ 代理 + + 設定 + \ No newline at end of file diff --git a/Source/GrasscutterTools/Properties/Settings.Designer.cs b/Source/GrasscutterTools/Properties/Settings.Designer.cs index 26ea288..a3e8e46 100644 --- a/Source/GrasscutterTools/Properties/Settings.Designer.cs +++ b/Source/GrasscutterTools/Properties/Settings.Designer.cs @@ -310,5 +310,28 @@ namespace GrasscutterTools.Properties { this["AutoStartProxy"] = value; } } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + public global::System.Collections.Specialized.StringCollection PageOrders { + get { + return ((global::System.Collections.Specialized.StringCollection)(this["PageOrders"])); + } + set { + this["PageOrders"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("100")] + public int WindowOpacity { + get { + return ((int)(this["WindowOpacity"])); + } + set { + this["WindowOpacity"] = value; + } + } } } diff --git a/Source/GrasscutterTools/Properties/Settings.settings b/Source/GrasscutterTools/Properties/Settings.settings index d6d89d4..527a0c0 100644 --- a/Source/GrasscutterTools/Properties/Settings.settings +++ b/Source/GrasscutterTools/Properties/Settings.settings @@ -74,5 +74,11 @@ False + + + + + 100 + \ No newline at end of file