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