Add Settings page

Add Page tab order setting
Add Window opacity setting
This commit is contained in:
2023-10-13 22:45:24 +08:00
parent c2be92c41b
commit eda70a2aae
41 changed files with 2169 additions and 745 deletions

View File

@ -82,6 +82,9 @@
<setting name="AutoStartProxy" serializeAs="String">
<value>False</value>
</setting>
<setting name="WindowOpacity" serializeAs="String">
<value>100</value>
</setting>
</GrasscutterTools.Properties.Settings>
</userSettings>
</configuration>

View File

@ -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");
}
/// <summary>
/// 重载界面
/// </summary>
public void Reload()
{
FormMain_Load(this, null);
}
/// <summary>
/// 窗体载入时触发(切换语言时会重新载入)
/// </summary>
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");
}
/// <summary>
/// 窗口关闭后触发
/// </summary>
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");
}
/// <summary>
/// 保存设置
/// </summary>
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<string, BasePage> Pages { get; private set; }
/// <summary>
/// 初始化并创建所有页面
/// </summary>
private void InitPages()
{
Logger.I(TAG, "InitPages enter");
Pages = new Dictionary<string, BasePage>(32);
TCMain.SuspendLayout();
var ph = CreatePage<PageHome>();
ph.OnLanguageChanged = () => FormMain_Load(this, EventArgs.Empty);
CreatePage<PageHome>();
var poc = CreatePage<PageOpenCommand>();
poc.ShowTipInRunButton = msg => ShowTip(msg, BtnInvokeOpenCommand);
CreatePage<PageProxy>();
@ -131,6 +227,7 @@ namespace GrasscutterTools.Forms
CreatePage<PageMail>();
CreatePage<PageQuest>();
CreatePage<PageAchievement>();
CreatePage<PageSettings>();
CreatePage<PageAbout>();
#if DEBUG
CreatePage<PageTools>();
@ -139,37 +236,144 @@ namespace GrasscutterTools.Forms
Logger.I(TAG, "InitPages completed");
}
/// <summary>
/// 当前的页面选项卡顺序
/// string Item1 = Page Name(Key)
/// bool Item2 = IsVisible
/// </summary>
public List<Tuple<string, bool>> PageTabOrders { get; set; }
/// <summary>
/// 加载页面选项卡顺序
/// </summary>
private List<Tuple<string, bool>> LoadPageTabOrders()
{
if (PageTabOrders != null) return PageTabOrders;
List<Tuple<string, bool>> tabOrders;
if (!(Settings.Default.PageOrders?.Count > 0))
{
tabOrders = new List<Tuple<string, bool>>(Pages.Count);
// 默认状态
foreach (var tab in Pages)
tabOrders.Add(new Tuple<string, bool>(tab.Key, true));
}
else
{
tabOrders = new List<Tuple<string, bool>>(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<string, bool>(item.Substring(0, sp), isVisible != 0));
}
}
return tabOrders;
}
/// <summary>
/// 重置页面选项卡顺序
/// </summary>
public void ResetPageTabOrders()
{
PageTabOrders = new List<Tuple<string, bool>>(Pages.Count);
// 默认状态
foreach (var tab in Pages)
PageTabOrders.Add(new Tuple<string, bool>(tab.Key, true));
}
/// <summary>
/// 保存页面选项卡顺序
/// </summary>
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;
}
/// <summary>
/// 初始化页面导航
/// </summary>
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<Tuple<string, bool>>(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<string, bool>(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<string, bool>(pageOrder.Item1, pageOrder.Item2));
}
// 如果获取不到页面标题,说明在本次更新中这个页面被删掉了,因此设置项也随之更新
i++;
}
// 加上新增在最后的页面
while (i < Pages.Count)
{
PageTabOrders.Add(new Tuple<string, bool>(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();
}
/// <summary>
/// 导航列表选中项改变时触发
/// </summary>
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;
}
/// <summary>
@ -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;
}
/// <summary>
/// 窗体载入时触发(切换语言时会重新载入)
/// </summary>
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");
}
/// <summary>
/// 窗口关闭后触发
/// </summary>
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");
}
/// <summary>
/// 保存设置
/// </summary>
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
/// <returns>如果导航到了则返回页面实例,否则返回空</returns>
public TPage NavigateTo<TPage>() 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;

View File

@ -310,6 +310,12 @@
<Compile Include="Pages\PageSetProp.Designer.cs">
<DependentUpon>PageSetProp.cs</DependentUpon>
</Compile>
<Compile Include="Pages\PageSettings.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="Pages\PageSettings.Designer.cs">
<DependentUpon>PageSettings.cs</DependentUpon>
</Compile>
<Compile Include="Pages\PageSpawn.cs">
<SubType>UserControl</SubType>
</Compile>
@ -647,6 +653,18 @@
<EmbeddedResource Include="Pages\PageSetProp.zh-TW.resx">
<DependentUpon>PageSetProp.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Pages\PageSettings.en-US.resx">
<DependentUpon>PageSettings.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Pages\PageSettings.resx">
<DependentUpon>PageSettings.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Pages\PageSettings.ru-RU.resx">
<DependentUpon>PageSettings.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Pages\PageSettings.zh-TW.resx">
<DependentUpon>PageSettings.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Pages\PageSpawn.en-US.resx">
<DependentUpon>PageSpawn.cs</DependentUpon>
</EmbeddedResource>

View File

@ -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();

View File

@ -10,6 +10,8 @@ namespace GrasscutterTools.Pages
{
internal partial class PageAchievement : BasePage
{
public override string Text => Resources.PageAchievementTitle;
public PageAchievement()
{
InitializeComponent();

View File

@ -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();

View File

@ -30,6 +30,8 @@ namespace GrasscutterTools.Pages
{
internal partial class PageCustomCommands : BasePage
{
public override string Text => Resources.PageCustomCommandsTitle;
public PageCustomCommands()
{
InitializeComponent();

View File

@ -30,6 +30,8 @@ namespace GrasscutterTools.Pages
{
internal partial class PageGiveArtifact : BasePage
{
public override string Text => Resources.PageGetArtifactTitle;
public PageGiveArtifact()
{
InitializeComponent();

View File

@ -33,6 +33,8 @@ namespace GrasscutterTools.Pages
{
internal partial class PageGiveItem : BasePage
{
public override string Text => Resources.PageGiveItemTitle;
public PageGiveItem()
{
InitializeComponent();

View File

@ -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();

View File

@ -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;
}
}

View File

@ -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;
/// <summary>
/// 初始化首页设置
/// </summary>
@ -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<string, Form> MyForms = new Dictionary<string, Form>();
private readonly Dictionary<string, Form> MyForms = new();
private void ShowForm<T>(string tag) where T : Form, new()
{
@ -157,12 +135,7 @@ namespace GrasscutterTools.Pages
/// </summary>
private void BtnActivityEditor_Click(object sender, EventArgs e)
=> ShowForm<FormActivityEditor>("ActivityEditor");
/// <summary>
/// 当选中语言改变时触发
/// </summary>
public Action OnLanguageChanged { get; set; }
/// <summary>
/// 语言选中项改变时触发
/// </summary>
@ -173,8 +146,8 @@ namespace GrasscutterTools.Pages
MultiLanguage.SetDefaultLanguage(MultiLanguage.Languages[CmbLanguage.SelectedIndex]);
// 动态更改语言
MultiLanguage.LoadLanguage(ParentForm, ParentForm.GetType());
// 通知语言改变
OnLanguageChanged?.Invoke();
// 重载界面
FormMain.Instance.Reload();
}
/// <summary>

View File

@ -127,33 +127,12 @@
<value>Have a nice time!</value>
</data>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="BtnOpenTextMap.Size" type="System.Drawing.Size, System.Drawing">
<value>120, 23</value>
</data>
<data name="BtnOpenTextMap.Text" xml:space="preserve">
<value>TextMapBrowser</value>
</data>
<data name="BtnOpenGachaBannerEditor.Text" xml:space="preserve">
<value>Gacha Editor</value>
</data>
<data name="ChkTopMost.Size" type="System.Drawing.Size, System.Drawing">
<value>109, 21</value>
</data>
<data name="ChkTopMost.Text" xml:space="preserve">
<value>Always on top</value>
</data>
<data name="ChkIncludeUID.Size" type="System.Drawing.Size, System.Drawing">
<value>95, 21</value>
</data>
<data name="ChkIncludeUID.Text" xml:space="preserve">
<value>Include UID</value>
</data>
<data name="GrpSettings.Text" xml:space="preserve">
<value>Settings</value>
</data>
<data name="BtnActivityEditor.Location" type="System.Drawing.Point, System.Drawing">
<value>542, 213</value>
</data>
<data name="BtnActivityEditor.Text" xml:space="preserve">
<value>Activity Editor</value>
</data>

View File

@ -117,508 +117,475 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="BtnOpenShopEditor.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Left</value>
</data>
<data name="BtnOpenShopEditor.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="LblAbout.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 3</value>
<data name="BtnOpenShopEditor.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 118</value>
</data>
<data name="&gt;&gt;ChkTopMost.Name" xml:space="preserve">
<value>ChkTopMost</value>
</data>
<data name="&gt;&gt;GrasscutterToolsIcon.Name" xml:space="preserve">
<value>GrasscutterToolsIcon</value>
<data name="BtnOpenShopEditor.Size" type="System.Drawing.Size, System.Drawing">
<value>150, 25</value>
</data>
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="LblLanguage.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="BtnOpenTextMap.Size" type="System.Drawing.Size, System.Drawing">
<value>100, 23</value>
</data>
<data name="&gt;&gt;LnkNewVersion.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="LblGCVersion.TabIndex" type="System.Int32, mscorlib">
<value>5</value>
</data>
<data name="&gt;&gt;LblGCVersion.Parent" xml:space="preserve">
<value>GrpSettings</value>
</data>
<data name="&gt;&gt;NUDUid.Parent" xml:space="preserve">
<value>GrpSettings</value>
</data>
<data name="&gt;&gt;BtnOpenGachaBannerEditor.Type" xml:space="preserve">
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="LblDefaultUid.Text" xml:space="preserve">
<value>UID</value>
</data>
<data name="LblGCVersion.Text" xml:space="preserve">
<value>GC</value>
</data>
<data name="LblLanguage.Text" xml:space="preserve">
<value>语言/Language/язык</value>
</data>
<data name="ChkIncludeUID.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="BtnOpenGachaBannerEditor.Location" type="System.Drawing.Point, System.Drawing">
<value>310, 213</value>
</data>
<data name="&gt;&gt;CmbLanguage.Type" xml:space="preserve">
<value>System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="LblLanguage.TabIndex" type="System.Int32, mscorlib">
<data name="BtnOpenShopEditor.TabIndex" type="System.Int32, mscorlib">
<value>4</value>
</data>
<data name="&gt;&gt;LblLanguage.Name" xml:space="preserve">
<value>LblLanguage</value>
</data>
<data name="GrasscutterToolsIcon.Size" type="System.Drawing.Size, System.Drawing">
<value>333, 175</value>
</data>
<data name="&gt;&gt;ChkIncludeUID.Parent" xml:space="preserve">
<value>GrpSettings</value>
</data>
<data name="BtnOpenTextMap.TabIndex" type="System.Int32, mscorlib">
<value>6</value>
</data>
<data name="CmbGcVersions.TabIndex" type="System.Int32, mscorlib">
<value>6</value>
</data>
<data name="LblAbout.Text" xml:space="preserve">
<value>祝你玩得愉快!</value>
</data>
<data name="&gt;&gt;LblDefaultUid.ZOrder" xml:space="preserve">
<value>7</value>
</data>
<data name="BtnActivityEditor.TabIndex" type="System.Int32, mscorlib">
<value>7</value>
</data>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="BtnOpenDropEditor.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="LblAbout.Size" type="System.Drawing.Size, System.Drawing">
<value>320, 102</value>
</data>
<data name="GrpSettings.Size" type="System.Drawing.Size, System.Drawing">
<value>301, 111</value>
</data>
<data name="LblDefaultUid.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="&gt;&gt;GrasscutterToolsIcon.Type" xml:space="preserve">
<value>System.Windows.Forms.PictureBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="LblAbout.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="GrpSettings.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Left</value>
</data>
<data name="&gt;&gt;BtnOpenShopEditor.Type" xml:space="preserve">
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;LblDefaultUid.Parent" xml:space="preserve">
<value>GrpSettings</value>
</data>
<data name="GrasscutterToolsIcon.Location" type="System.Drawing.Point, System.Drawing">
<value>310, 3</value>
</data>
<data name="ChkIncludeUID.Text" xml:space="preserve">
<value>生成的命令包含UID</value>
</data>
<data name="LnkNewVersion.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="&gt;&gt;$this.Name" xml:space="preserve">
<value>PageHome</value>
</data>
<data name="ChkIncludeUID.Location" type="System.Drawing.Point, System.Drawing">
<value>147, 23</value>
</data>
<data name="BtnOpenDropEditor.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Left</value>
</data>
<data name="BtnOpenGachaBannerEditor.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Left</value>
</data>
<data name="LblDefaultUid.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="&gt;&gt;ChkIncludeUID.Name" xml:space="preserve">
<value>ChkIncludeUID</value>
</data>
<data name="GrasscutterToolsIcon.SizeMode" type="System.Windows.Forms.PictureBoxSizeMode, System.Windows.Forms">
<value>CenterImage</value>
<data name="BtnOpenShopEditor.Text" xml:space="preserve">
<value>商店编辑器</value>
</data>
<data name="&gt;&gt;BtnOpenShopEditor.Name" xml:space="preserve">
<value>BtnOpenShopEditor</value>
</data>
<data name="CmbLanguage.TabIndex" type="System.Int32, mscorlib">
<value>3</value>
</data>
<data name="BtnOpenTextMap.Location" type="System.Drawing.Point, System.Drawing">
<value>416, 213</value>
</data>
<data name="&gt;&gt;LblAbout.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;LblLanguage.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;LblAbout.Name" xml:space="preserve">
<value>LblAbout</value>
</data>
<data name="BtnOpenShopEditor.TabIndex" type="System.Int32, mscorlib">
<value>3</value>
</data>
<data name="&gt;&gt;LblGCVersion.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="&gt;&gt;GrpSettings.Name" xml:space="preserve">
<value>GrpSettings</value>
</data>
<data name="&gt;&gt;CmbGcVersions.Type" xml:space="preserve">
<value>System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;LblLanguage.Parent" xml:space="preserve">
<value>GrpSettings</value>
</data>
<data name="BtnOpenGachaBannerEditor.Size" type="System.Drawing.Size, System.Drawing">
<value>100, 23</value>
</data>
<data name="&gt;&gt;BtnOpenDropEditor.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;BtnOpenDropEditor.Name" xml:space="preserve">
<value>BtnOpenDropEditor</value>
</data>
<data name="BtnOpenShopEditor.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Left</value>
</data>
<data name="ChkTopMost.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="LblDefaultUid.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="BtnOpenDropEditor.TabIndex" type="System.Int32, mscorlib">
<value>4</value>
</data>
<data name="&gt;&gt;BtnOpenGachaBannerEditor.ZOrder" xml:space="preserve">
<value>3</value>
</data>
<data name="LblAbout.Font" type="System.Drawing.Font, System.Drawing">
<value>Microsoft YaHei UI, 13pt</value>
</data>
<data name="&gt;&gt;LblLanguage.ZOrder" xml:space="preserve">
<value>4</value>
</data>
<data name="ChkTopMost.Text" xml:space="preserve">
<value>窗口置顶</value>
</data>
<data name="GrpSettings.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 125</value>
<data name="&gt;&gt;BtnOpenShopEditor.Type" xml:space="preserve">
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;BtnOpenShopEditor.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="BtnOpenGachaBannerEditor.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
<data name="&gt;&gt;BtnOpenShopEditor.ZOrder" xml:space="preserve">
<value>12</value>
</data>
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
<value>7, 17</value>
</data>
<data name="NUDUid.Size" type="System.Drawing.Size, System.Drawing">
<value>100, 23</value>
</data>
<data name="GrpSettings.Text" xml:space="preserve">
<value>设置</value>
</data>
<data name="BtnOpenTextMap.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="&gt;&gt;GrasscutterToolsIcon.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="ChkIncludeUID.Size" type="System.Drawing.Size, System.Drawing">
<value>133, 21</value>
</data>
<data name="BtnOpenTextMap.Text" xml:space="preserve">
<value>文本浏览器</value>
</data>
<data name="LnkNewVersion.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<data name="BtnOpenDropEditor.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Left</value>
</data>
<data name="&gt;&gt;GrpSettings.ZOrder" xml:space="preserve">
<value>7</value>
</data>
<data name="NUDUid.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="LblDefaultUid.Size" type="System.Drawing.Size, System.Drawing">
<value>30, 17</value>
</data>
<data name="&gt;&gt;LblDefaultUid.Name" xml:space="preserve">
<value>LblDefaultUid</value>
</data>
<data name="&gt;&gt;BtnOpenTextMap.Name" xml:space="preserve">
<value>BtnOpenTextMap</value>
</data>
<data name="LblAbout.TextAlign" type="System.Drawing.ContentAlignment, System.Drawing">
<value>MiddleCenter</value>
</data>
<data name="&gt;&gt;$this.Type" xml:space="preserve">
<value>GrasscutterTools.Pages.BasePage, GrasscutterTools, Version=1.9.0.0, Culture=neutral, PublicKeyToken=de2b1c089621e923</value>
</data>
<data name="LnkNewVersion.Visible" type="System.Boolean, mscorlib">
<value>False</value>
</data>
<data name="LnkNewVersion.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="ChkTopMost.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<data name="BtnOpenDropEditor.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="BtnActivityEditor.Text" xml:space="preserve">
<value>活动编辑器</value>
<data name="BtnOpenDropEditor.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 149</value>
</data>
<data name="&gt;&gt;LblGCVersion.Name" xml:space="preserve">
<value>LblGCVersion</value>
<data name="BtnOpenDropEditor.Size" type="System.Drawing.Size, System.Drawing">
<value>150, 25</value>
</data>
<data name="&gt;&gt;ChkIncludeUID.Type" xml:space="preserve">
<value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;NUDUid.Type" xml:space="preserve">
<value>System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<data name="BtnOpenDropEditor.TabIndex" type="System.Int32, mscorlib">
<value>6</value>
</data>
<data name="BtnOpenDropEditor.Text" xml:space="preserve">
<value>掉落物编辑器</value>
</data>
<data name="&gt;&gt;ChkTopMost.Parent" xml:space="preserve">
<value>GrpSettings</value>
<data name="&gt;&gt;BtnOpenDropEditor.Name" xml:space="preserve">
<value>BtnOpenDropEditor</value>
</data>
<data name="&gt;&gt;LblAbout.Parent" xml:space="preserve">
<data name="&gt;&gt;BtnOpenDropEditor.Type" xml:space="preserve">
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;BtnOpenDropEditor.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;LnkNewVersion.Type" xml:space="preserve">
<value>System.Windows.Forms.LinkLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<data name="&gt;&gt;BtnOpenDropEditor.ZOrder" xml:space="preserve">
<value>11</value>
</data>
<data name="LblAbout.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
<data name="LnkNewVersion.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Left</value>
</data>
<data name="LblGCVersion.AutoSize" type="System.Boolean, mscorlib">
<data name="LnkNewVersion.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="&gt;&gt;ChkTopMost.Type" xml:space="preserve">
<value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;LblDefaultUid.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;CmbLanguage.ZOrder" xml:space="preserve">
<value>3</value>
</data>
<data name="LblGCVersion.Size" type="System.Drawing.Size, System.Drawing">
<value>25, 17</value>
</data>
<data name="LblGCVersion.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<data name="LnkNewVersion.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="CmbGcVersions.Location" type="System.Drawing.Point, System.Drawing">
<value>41, 80</value>
<data name="LnkNewVersion.Location" type="System.Drawing.Point, System.Drawing">
<value>4, 3</value>
</data>
<data name="CmbGcVersions.Size" type="System.Drawing.Size, System.Drawing">
<value>100, 25</value>
<data name="LnkNewVersion.Size" type="System.Drawing.Size, System.Drawing">
<value>104, 17</value>
</data>
<data name="&gt;&gt;GrpSettings.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="CmbLanguage.Location" type="System.Drawing.Point, System.Drawing">
<value>41, 51</value>
</data>
<data name="&gt;&gt;CmbGcVersions.Parent" xml:space="preserve">
<value>GrpSettings</value>
</data>
<data name="NUDUid.Location" type="System.Drawing.Point, System.Drawing">
<value>41, 22</value>
</data>
<data name="&gt;&gt;CmbLanguage.Name" xml:space="preserve">
<value>CmbLanguage</value>
</data>
<data name="ChkTopMost.Size" type="System.Drawing.Size, System.Drawing">
<value>75, 21</value>
</data>
<data name="&gt;&gt;CmbGcVersions.Name" xml:space="preserve">
<value>CmbGcVersions</value>
</data>
<data name="&gt;&gt;ChkTopMost.ZOrder" xml:space="preserve">
<value>2</value>
<data name="LnkNewVersion.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="LnkNewVersion.Text" xml:space="preserve">
<value>New Version Tip</value>
</data>
<data name="LnkNewVersion.Visible" type="System.Boolean, mscorlib">
<value>False</value>
</data>
<data name="&gt;&gt;LnkNewVersion.Name" xml:space="preserve">
<value>LnkNewVersion</value>
</data>
<data name="&gt;&gt;LnkNewVersion.Type" xml:space="preserve">
<value>System.Windows.Forms.LinkLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;LnkNewVersion.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;LnkNewVersion.ZOrder" xml:space="preserve">
<value>7</value>
</data>
<data name="LblAbout.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Bottom, Left</value>
</data>
<data name="LblAbout.Font" type="System.Drawing.Font, System.Drawing">
<value>Microsoft YaHei UI, 13pt</value>
</data>
<data name="LblAbout.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="LblAbout.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 3</value>
</data>
<data name="LblAbout.Size" type="System.Drawing.Size, System.Drawing">
<value>320, 102</value>
</data>
<data name="LblAbout.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="LblAbout.Text" xml:space="preserve">
<value>祝你玩得愉快!</value>
</data>
<data name="LblAbout.TextAlign" type="System.Drawing.ContentAlignment, System.Drawing">
<value>MiddleCenter</value>
</data>
<data name="&gt;&gt;LblAbout.Name" xml:space="preserve">
<value>LblAbout</value>
</data>
<data name="&gt;&gt;LblAbout.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;LblAbout.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;LblAbout.ZOrder" xml:space="preserve">
<value>14</value>
</data>
<data name="BtnOpenTextMap.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Left</value>
</data>
<data name="BtnOpenTextMap.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="BtnOpenTextMap.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 211</value>
</data>
<data name="BtnOpenTextMap.Size" type="System.Drawing.Size, System.Drawing">
<value>150, 25</value>
</data>
<data name="BtnOpenTextMap.TabIndex" type="System.Int32, mscorlib">
<value>10</value>
</data>
<data name="BtnOpenTextMap.Text" xml:space="preserve">
<value>文本浏览器</value>
</data>
<data name="&gt;&gt;BtnOpenTextMap.Name" xml:space="preserve">
<value>BtnOpenTextMap</value>
</data>
<data name="&gt;&gt;BtnOpenTextMap.Type" xml:space="preserve">
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;BtnOpenTextMap.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;BtnOpenTextMap.ZOrder" xml:space="preserve">
<value>9</value>
</data>
<data name="BtnOpenGachaBannerEditor.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Left</value>
</data>
<data name="BtnOpenGachaBannerEditor.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="BtnOpenGachaBannerEditor.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 90</value>
</data>
<data name="BtnOpenGachaBannerEditor.Size" type="System.Drawing.Size, System.Drawing">
<value>150, 25</value>
</data>
<data name="BtnOpenGachaBannerEditor.TabIndex" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="BtnOpenGachaBannerEditor.Text" xml:space="preserve">
<value>奖池编辑器</value>
</data>
<data name="&gt;&gt;BtnOpenGachaBannerEditor.Name" xml:space="preserve">
<value>BtnOpenGachaBannerEditor</value>
</data>
<data name="GrpSettings.TabIndex" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="LblLanguage.Location" type="System.Drawing.Point, System.Drawing">
<value>147, 54</value>
</data>
<data name="BtnOpenShopEditor.Size" type="System.Drawing.Size, System.Drawing">
<value>100, 23</value>
</data>
<data name="GrasscutterToolsIcon.TabIndex" type="System.Int32, mscorlib">
<value>14</value>
</data>
<data name="&gt;&gt;ChkIncludeUID.ZOrder" xml:space="preserve">
<value>6</value>
</data>
<data name="&gt;&gt;LnkNewVersion.ZOrder" xml:space="preserve">
<value>8</value>
</data>
<data name="LblLanguage.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="BtnOpenDropEditor.Size" type="System.Drawing.Size, System.Drawing">
<value>100, 23</value>
<data name="&gt;&gt;BtnOpenGachaBannerEditor.Type" xml:space="preserve">
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;BtnOpenGachaBannerEditor.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;BtnOpenDropEditor.ZOrder" xml:space="preserve">
<value>4</value>
<data name="&gt;&gt;BtnOpenGachaBannerEditor.ZOrder" xml:space="preserve">
<value>10</value>
</data>
<data name="&gt;&gt;BtnOpenTextMap.Type" xml:space="preserve">
<data name="GrasscutterToolsIcon.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Bottom, Left, Right</value>
</data>
<data name="GrasscutterToolsIcon.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="GrasscutterToolsIcon.Location" type="System.Drawing.Point, System.Drawing">
<value>310, 3</value>
</data>
<data name="GrasscutterToolsIcon.Size" type="System.Drawing.Size, System.Drawing">
<value>333, 202</value>
</data>
<data name="GrasscutterToolsIcon.SizeMode" type="System.Windows.Forms.PictureBoxSizeMode, System.Windows.Forms">
<value>CenterImage</value>
</data>
<data name="GrasscutterToolsIcon.TabIndex" type="System.Int32, mscorlib">
<value>14</value>
</data>
<data name="&gt;&gt;GrasscutterToolsIcon.Name" xml:space="preserve">
<value>GrasscutterToolsIcon</value>
</data>
<data name="&gt;&gt;GrasscutterToolsIcon.Type" xml:space="preserve">
<value>System.Windows.Forms.PictureBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;GrasscutterToolsIcon.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;GrasscutterToolsIcon.ZOrder" xml:space="preserve">
<value>13</value>
</data>
<data name="BtnActivityEditor.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Left</value>
</data>
<data name="BtnActivityEditor.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 180</value>
</data>
<data name="BtnActivityEditor.Size" type="System.Drawing.Size, System.Drawing">
<value>150, 25</value>
</data>
<data name="BtnActivityEditor.TabIndex" type="System.Int32, mscorlib">
<value>8</value>
</data>
<data name="BtnActivityEditor.Text" xml:space="preserve">
<value>活动编辑器</value>
</data>
<data name="&gt;&gt;BtnActivityEditor.Name" xml:space="preserve">
<value>BtnActivityEditor</value>
</data>
<data name="&gt;&gt;BtnActivityEditor.Type" xml:space="preserve">
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;BtnActivityEditor.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="BtnOpenGachaBannerEditor.TabIndex" type="System.Int32, mscorlib">
<value>5</value>
<data name="&gt;&gt;BtnActivityEditor.ZOrder" xml:space="preserve">
<value>8</value>
</data>
<data name="ChkIncludeUID.TabIndex" type="System.Int32, mscorlib">
<value>2</value>
<data name="LblTip1.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Left</value>
</data>
<data name="BtnActivityEditor.Location" type="System.Drawing.Point, System.Drawing">
<value>522, 213</value>
<data name="LblTip1.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="BtnActivityEditor.Size" type="System.Drawing.Size, System.Drawing">
<value>100, 23</value>
<data name="LblTip1.Location" type="System.Drawing.Point, System.Drawing">
<value>159, 94</value>
</data>
<data name="BtnOpenDropEditor.Location" type="System.Drawing.Point, System.Drawing">
<value>416, 184</value>
<data name="LblTip1.Size" type="System.Drawing.Size, System.Drawing">
<value>118, 17</value>
</data>
<data name="ChkTopMost.TabIndex" type="System.Int32, mscorlib">
<value>7</value>
<data name="LblTip1.TabIndex" type="System.Int32, mscorlib">
<value>3</value>
</data>
<data name="&gt;&gt;NUDUid.ZOrder" xml:space="preserve">
<value>5</value>
<data name="LblTip1.Text" xml:space="preserve">
<value>/data/Banners.json</value>
</data>
<data name="&gt;&gt;BtnOpenTextMap.ZOrder" xml:space="preserve">
<value>2</value>
<data name="&gt;&gt;LblTip1.Name" xml:space="preserve">
<value>LblTip1</value>
</data>
<data name="&gt;&gt;NUDUid.Name" xml:space="preserve">
<value>NUDUid</value>
<data name="&gt;&gt;LblTip1.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="LnkNewVersion.Size" type="System.Drawing.Size, System.Drawing">
<value>104, 17</value>
</data>
<data name="LblLanguage.Size" type="System.Drawing.Size, System.Drawing">
<value>128, 17</value>
</data>
<data name="&gt;&gt;BtnOpenTextMap.Parent" xml:space="preserve">
<data name="&gt;&gt;LblTip1.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="BtnOpenShopEditor.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="BtnActivityEditor.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Left</value>
</data>
<data name="&gt;&gt;CmbLanguage.Parent" xml:space="preserve">
<value>GrpSettings</value>
</data>
<data name="BtnOpenGachaBannerEditor.Text" xml:space="preserve">
<value>奖池编辑器</value>
</data>
<data name="LblAbout.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Bottom, Left</value>
</data>
<data name="&gt;&gt;GrasscutterToolsIcon.ZOrder" xml:space="preserve">
<data name="&gt;&gt;LblTip1.ZOrder" xml:space="preserve">
<value>6</value>
</data>
<data name="&gt;&gt;LblAbout.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="LnkNewVersion.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="&gt;&gt;BtnOpenDropEditor.Type" xml:space="preserve">
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="BtnOpenTextMap.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<data name="LblTip2.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Left</value>
</data>
<data name="ChkIncludeUID.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
<data name="LblTip2.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="&gt;&gt;LnkNewVersion.Name" xml:space="preserve">
<value>LnkNewVersion</value>
<data name="LblTip2.Location" type="System.Drawing.Point, System.Drawing">
<value>159, 122</value>
</data>
<data name="LblTip2.Size" type="System.Drawing.Size, System.Drawing">
<value>101, 17</value>
</data>
<data name="LblTip2.TabIndex" type="System.Int32, mscorlib">
<value>5</value>
</data>
<data name="LblTip2.Text" xml:space="preserve">
<value>/data/Shop.json</value>
</data>
<data name="&gt;&gt;LblTip2.Name" xml:space="preserve">
<value>LblTip2</value>
</data>
<data name="&gt;&gt;LblTip2.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;LblTip2.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;LblTip2.ZOrder" xml:space="preserve">
<value>5</value>
</data>
<data name="LblTip3.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Left</value>
</data>
<data name="LblTip3.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="LblTip3.Location" type="System.Drawing.Point, System.Drawing">
<value>159, 153</value>
</data>
<data name="LblTip3.Size" type="System.Drawing.Size, System.Drawing">
<value>101, 17</value>
</data>
<data name="LblTip3.TabIndex" type="System.Int32, mscorlib">
<value>7</value>
</data>
<data name="LblTip3.Text" xml:space="preserve">
<value>/data/Drop.json</value>
</data>
<data name="&gt;&gt;LblTip3.Name" xml:space="preserve">
<value>LblTip3</value>
</data>
<data name="&gt;&gt;LblTip3.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;LblTip3.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;LblTip3.ZOrder" xml:space="preserve">
<value>4</value>
</data>
<data name="LblTip4.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Left</value>
</data>
<data name="LblTip4.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="LblTip4.Location" type="System.Drawing.Point, System.Drawing">
<value>159, 184</value>
</data>
<data name="LblTip4.Size" type="System.Drawing.Size, System.Drawing">
<value>149, 17</value>
</data>
<data name="LblTip4.TabIndex" type="System.Int32, mscorlib">
<value>9</value>
</data>
<data name="LblTip4.Text" xml:space="preserve">
<value>/data/ActivityConfig.json</value>
</data>
<data name="&gt;&gt;LblTip4.Name" xml:space="preserve">
<value>LblTip4</value>
</data>
<data name="&gt;&gt;LblTip4.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;LblTip4.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;LblTip4.ZOrder" xml:space="preserve">
<value>3</value>
</data>
<data name="LblTip5.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Left</value>
</data>
<data name="LblTip5.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="LblTip5.Location" type="System.Drawing.Point, System.Drawing">
<value>159, 215</value>
</data>
<data name="LblTip5.Size" type="System.Drawing.Size, System.Drawing">
<value>96, 17</value>
</data>
<data name="LblTip5.TabIndex" type="System.Int32, mscorlib">
<value>11</value>
</data>
<data name="LblTip5.Text" xml:space="preserve">
<value>/Res/TextMaps</value>
</data>
<data name="&gt;&gt;LblTip5.Name" xml:space="preserve">
<value>LblTip5</value>
</data>
<data name="&gt;&gt;LblTip5.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;LblTip5.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;LblTip5.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="CmbLanguage.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Right</value>
</data>
<data name="CmbLanguage.Location" type="System.Drawing.Point, System.Drawing">
<value>543, 211</value>
</data>
<data name="CmbLanguage.Size" type="System.Drawing.Size, System.Drawing">
<value>100, 25</value>
</data>
<data name="BtnOpenShopEditor.Text" xml:space="preserve">
<value>商店编辑器</value>
<data name="CmbLanguage.TabIndex" type="System.Int32, mscorlib">
<value>15</value>
</data>
<data name="ChkTopMost.Location" type="System.Drawing.Point, System.Drawing">
<value>147, 82</value>
<data name="&gt;&gt;CmbLanguage.Name" xml:space="preserve">
<value>CmbLanguage</value>
</data>
<data name="&gt;&gt;BtnOpenShopEditor.ZOrder" xml:space="preserve">
<value>5</value>
<data name="&gt;&gt;CmbLanguage.Type" xml:space="preserve">
<value>System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;LblGCVersion.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<data name="&gt;&gt;CmbLanguage.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="GrasscutterToolsIcon.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Bottom, Left, Right</value>
</data>
<data name="&gt;&gt;BtnActivityEditor.ZOrder" xml:space="preserve">
<data name="&gt;&gt;CmbLanguage.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="BtnOpenShopEditor.Location" type="System.Drawing.Point, System.Drawing">
<value>310, 184</value>
<data name="LblLanguage.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Right</value>
</data>
<data name="&gt;&gt;GrpSettings.Type" xml:space="preserve">
<value>System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<data name="LblLanguage.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="&gt;&gt;CmbGcVersions.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="&gt;&gt;BtnActivityEditor.Type" xml:space="preserve">
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;BtnActivityEditor.Name" xml:space="preserve">
<value>BtnActivityEditor</value>
</data>
<data name="LblGCVersion.Location" type="System.Drawing.Point, System.Drawing">
<value>7, 83</value>
</data>
<data name="LnkNewVersion.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 105</value>
</data>
<data name="LblDefaultUid.Location" type="System.Drawing.Point, System.Drawing">
<value>7, 24</value>
</data>
<data name="GrasscutterToolsIcon.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<data name="LblLanguage.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="LblLanguage.Location" type="System.Drawing.Point, System.Drawing">
<value>409, 215</value>
</data>
<data name="LblLanguage.Size" type="System.Drawing.Size, System.Drawing">
<value>128, 17</value>
</data>
<data name="LblLanguage.TabIndex" type="System.Int32, mscorlib">
<value>16</value>
</data>
<data name="LblLanguage.Text" xml:space="preserve">
<value>语言/Language/язык</value>
</data>
<data name="&gt;&gt;LblLanguage.Name" xml:space="preserve">
<value>LblLanguage</value>
</data>
<data name="&gt;&gt;LblLanguage.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;LblLanguage.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;LblLanguage.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
<value>7, 17</value>
</data>
<data name="&gt;&gt;$this.Name" xml:space="preserve">
<value>PageHome</value>
</data>
<data name="&gt;&gt;$this.Type" xml:space="preserve">
<value>GrasscutterTools.Pages.BasePage, GrasscutterTools, Version=1.13.0.0, Culture=neutral, PublicKeyToken=de2b1c089621e923</value>
</data>
</root>

View File

@ -117,84 +117,21 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="BtnOpenShopEditor.Size" type="System.Drawing.Size, System.Drawing">
<value>140, 23</value>
</data>
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="BtnOpenShopEditor.TabIndex" type="System.Int32, mscorlib">
<value>4</value>
</data>
<data name="BtnOpenShopEditor.Text" xml:space="preserve">
<value>Редактор магазина</value>
</data>
<data name="BtnOpenDropEditor.Location" type="System.Drawing.Point, System.Drawing">
<value>456, 184</value>
</data>
<data name="BtnOpenDropEditor.Size" type="System.Drawing.Size, System.Drawing">
<value>140, 23</value>
</data>
<data name="BtnOpenDropEditor.TabIndex" type="System.Int32, mscorlib">
<value>5</value>
</data>
<data name="BtnOpenDropEditor.Text" xml:space="preserve">
<value>Редактор дропа</value>
</data>
<data name="LblAbout.Text" xml:space="preserve">
<value>Желаем приятно провести время!</value>
</data>
<data name="BtnOpenTextMap.Location" type="System.Drawing.Point, System.Drawing">
<value>456, 213</value>
</data>
<data name="BtnOpenTextMap.Size" type="System.Drawing.Size, System.Drawing">
<value>140, 23</value>
</data>
<data name="BtnOpenTextMap.TabIndex" type="System.Int32, mscorlib">
<value>7</value>
</data>
<data name="BtnOpenTextMap.Text" xml:space="preserve">
<value>Браузер карт</value>
</data>
<data name="BtnOpenGachaBannerEditor.Size" type="System.Drawing.Size, System.Drawing">
<value>140, 23</value>
</data>
<data name="BtnOpenGachaBannerEditor.TabIndex" type="System.Int32, mscorlib">
<value>6</value>
</data>
<data name="BtnOpenGachaBannerEditor.Text" xml:space="preserve">
<value>Редактор баннеров</value>
</data>
<data name="GrasscutterToolsIcon.Size" type="System.Drawing.Size, System.Drawing">
<value>333, 146</value>
</data>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="GrasscutterToolsIcon.SizeMode" type="System.Windows.Forms.PictureBoxSizeMode, System.Windows.Forms">
<value>Zoom</value>
</data>
<data name="GrpSettings.Text" xml:space="preserve">
<value>Настройки</value>
</data>
<data name="ChkTopMost.Size" type="System.Drawing.Size, System.Drawing">
<value>140, 21</value>
</data>
<data name="ChkTopMost.Text" xml:space="preserve">
<value>Последняя версия</value>
</data>
<data name="ChkIncludeUID.Size" type="System.Drawing.Size, System.Drawing">
<value>113, 21</value>
</data>
<data name="ChkIncludeUID.Text" xml:space="preserve">
<value>Включить UID</value>
</data>
<data name="BtnActivityEditor.Location" type="System.Drawing.Point, System.Drawing">
<value>310, 155</value>
</data>
<data name="BtnActivityEditor.Size" type="System.Drawing.Size, System.Drawing">
<value>150, 23</value>
</data>
<data name="BtnActivityEditor.TabIndex" type="System.Int32, mscorlib">
<value>3</value>
</data>
<data name="BtnActivityEditor.Text" xml:space="preserve">
<value>Редактор активности</value>
</data>

View File

@ -129,12 +129,6 @@
<data name="BtnOpenGachaBannerEditor.Text" xml:space="preserve">
<value>獎池編輯器</value>
</data>
<data name="GrpSettings.Text" xml:space="preserve">
<value>設置</value>
</data>
<data name="ChkTopMost.Text" xml:space="preserve">
<value>窗口置頂</value>
</data>
<data name="BtnActivityEditor.Text" xml:space="preserve">
<value>活動編輯器</value>
</data>

View File

@ -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()

View File

@ -34,6 +34,8 @@ namespace GrasscutterTools.Pages
{
internal partial class PageMail : BasePage
{
public override string Text => Resources.PageMailTitle;
public PageMail()
{
InitializeComponent();

View File

@ -28,6 +28,8 @@ namespace GrasscutterTools.Pages
{
internal partial class PageManagement : BasePage
{
public override string Text => Resources.PageManagementTitle;
public PageManagement()
{
InitializeComponent();

View File

@ -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()

View File

@ -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
/// </summary>
private void BtnDestroyCert_Click(object sender, EventArgs e)
{
Logger.I(TAG, "DestroyCertificate");
Logger.I(Name, "DestroyCertificate");
ProxyHelper.DestroyCertificate();
MessageBox.Show("OK", Resources.Tips);
}

View File

@ -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();

View File

@ -27,6 +27,8 @@ namespace GrasscutterTools.Pages
{
internal partial class PageScene : BasePage
{
public override string Text => Resources.PageSceneTitle;
public PageScene()
{
InitializeComponent();

View File

@ -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();

View File

@ -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()

View File

@ -0,0 +1,202 @@
namespace GrasscutterTools.Pages
{
partial class PageSettings
{
/// <summary>
/// 必需的设计器变量。
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// 清理所有正在使用的资源。
/// </summary>
/// <param name="disposing">如果应释放托管资源,为 true否则为 false。</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region
/// <summary>
/// 设计器支持所需的方法 - 不要修改
/// 使用代码编辑器修改此方法的内容。
/// </summary>
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;
}
}

View File

@ -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 <https://www.gnu.org/licenses/>.
*
**/
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);
}
/// <summary>
/// 页面加载时触发
/// </summary>
public override void OnLoad()
{
InitPageList();
}
/// <summary>
/// 页面关闭时触发
/// </summary>
public override void OnClosed()
{
// 保存设置
Settings.Default.WindowOpacity = TbWindowOpacity.Value;
// 如果设置有更改
if (isChanged)
{
// 保存页面选项卡顺序设置
FormMain.Instance.SavePageTabOrders();
}
}
#region - Page list -
private bool isChanged;
/// <summary>
/// 初始化页面列表
/// </summary>
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;
}
/// <summary>
/// 页面选项更改时触发
/// </summary>
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<string, bool>(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;
}
/// <summary>
/// 点击向上移动时触发
/// </summary>
private void BtnMoveUp_Click(object sender, EventArgs e)
{
var i = ChkListPages.SelectedIndex;
if (i <= 1) return;
MovePageOrder(i, i - 1);
}
/// <summary>
/// 点击向下移动时触发
/// </summary>
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
/// <summary>
/// 窗口透明度滑块滑动时触发
/// </summary>
private void TbWindowOpacity_Scroll(object sender, EventArgs e)
{
FormMain.Instance.Opacity = TbWindowOpacity.Value / 100.0;
}
/// <summary>
/// 点击重置页面列表时触发
/// </summary>
private void BtnResetPageList_Click(object sender, EventArgs e)
{
FormMain.Instance.ResetPageTabOrders();
FormMain.Instance.UpdatePagesNav();
InitPageList();
}
}
}

View File

@ -0,0 +1,157 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="LblPageTitle.Size" type="System.Drawing.Size, System.Drawing">
<value>54, 17</value>
</data>
<data name="LblPageTitle.Text" xml:space="preserve">
<value>Settings</value>
</data>
<data name="LblIncludeUidTip.Size" type="System.Drawing.Size, System.Drawing">
<value>173, 17</value>
</data>
<data name="LblIncludeUidTip.Text" xml:space="preserve">
<value>Console mode only checked</value>
</data>
<data name="GrpPageList.Text" xml:space="preserve">
<value>Page list</value>
</data>
<data name="BtnResetPageList.Text" xml:space="preserve">
<value>Restore</value>
</data>
<data name="LblGcVersionTip.Size" type="System.Drawing.Size, System.Drawing">
<value>234, 17</value>
</data>
<data name="LblGcVersionTip.Text" xml:space="preserve">
<value>Used to distinguish command versions</value>
</data>
<data name="ChkTopMost.Size" type="System.Drawing.Size, System.Drawing">
<value>109, 21</value>
</data>
<data name="ChkTopMost.Text" xml:space="preserve">
<value>Always on top</value>
</data>
<data name="LblWindowOpacity.Size" type="System.Drawing.Size, System.Drawing">
<value>52, 17</value>
</data>
<data name="LblWindowOpacity.Text" xml:space="preserve">
<value>Opacity</value>
</data>
</root>

View File

@ -0,0 +1,528 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="LblPageTitle.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="LblPageTitle.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 3</value>
</data>
<data name="LblPageTitle.Size" type="System.Drawing.Size, System.Drawing">
<value>56, 17</value>
</data>
<data name="LblPageTitle.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="LblPageTitle.Text" xml:space="preserve">
<value>程序设置</value>
</data>
<data name="&gt;&gt;LblPageTitle.Name" xml:space="preserve">
<value>LblPageTitle</value>
</data>
<data name="&gt;&gt;LblPageTitle.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;LblPageTitle.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;LblPageTitle.ZOrder" xml:space="preserve">
<value>10</value>
</data>
<data name="NUDUid.Location" type="System.Drawing.Point, System.Drawing">
<value>87, 39</value>
</data>
<data name="NUDUid.Size" type="System.Drawing.Size, System.Drawing">
<value>100, 23</value>
</data>
<data name="NUDUid.TabIndex" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="&gt;&gt;NUDUid.Name" xml:space="preserve">
<value>NUDUid</value>
</data>
<data name="&gt;&gt;NUDUid.Type" xml:space="preserve">
<value>System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;NUDUid.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;NUDUid.ZOrder" xml:space="preserve">
<value>8</value>
</data>
<data name="ChkIncludeUID.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="ChkIncludeUID.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="ChkIncludeUID.Location" type="System.Drawing.Point, System.Drawing">
<value>28, 40</value>
</data>
<data name="ChkIncludeUID.Size" type="System.Drawing.Size, System.Drawing">
<value>65, 21</value>
</data>
<data name="ChkIncludeUID.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="ChkIncludeUID.Text" xml:space="preserve">
<value>UID @</value>
</data>
<data name="&gt;&gt;ChkIncludeUID.Name" xml:space="preserve">
<value>ChkIncludeUID</value>
</data>
<data name="&gt;&gt;ChkIncludeUID.Type" xml:space="preserve">
<value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;ChkIncludeUID.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;ChkIncludeUID.ZOrder" xml:space="preserve">
<value>9</value>
</data>
<data name="LblIncludeUidTip.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="LblIncludeUidTip.Location" type="System.Drawing.Point, System.Drawing">
<value>193, 41</value>
</data>
<data name="LblIncludeUidTip.Size" type="System.Drawing.Size, System.Drawing">
<value>104, 17</value>
</data>
<data name="LblIncludeUidTip.TabIndex" type="System.Int32, mscorlib">
<value>3</value>
</data>
<data name="LblIncludeUidTip.Text" xml:space="preserve">
<value>仅控制台模式勾选</value>
</data>
<data name="&gt;&gt;LblIncludeUidTip.Name" xml:space="preserve">
<value>LblIncludeUidTip</value>
</data>
<data name="&gt;&gt;LblIncludeUidTip.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;LblIncludeUidTip.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;LblIncludeUidTip.ZOrder" xml:space="preserve">
<value>7</value>
</data>
<data name="GrpPageList.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Bottom, Right</value>
</data>
<data name="BtnResetPageList.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Left</value>
</data>
<data name="BtnResetPageList.Location" type="System.Drawing.Point, System.Drawing">
<value>6, 202</value>
</data>
<data name="BtnResetPageList.Size" type="System.Drawing.Size, System.Drawing">
<value>155, 25</value>
</data>
<data name="BtnResetPageList.TabIndex" type="System.Int32, mscorlib">
<value>3</value>
</data>
<data name="BtnResetPageList.Text" xml:space="preserve">
<value>恢复预设值</value>
</data>
<data name="&gt;&gt;BtnResetPageList.Name" xml:space="preserve">
<value>BtnResetPageList</value>
</data>
<data name="&gt;&gt;BtnResetPageList.Type" xml:space="preserve">
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;BtnResetPageList.Parent" xml:space="preserve">
<value>GrpPageList</value>
</data>
<data name="&gt;&gt;BtnResetPageList.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="BtnMoveDown.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Left</value>
</data>
<data name="BtnMoveDown.Location" type="System.Drawing.Point, System.Drawing">
<value>86, 171</value>
</data>
<data name="BtnMoveDown.Size" type="System.Drawing.Size, System.Drawing">
<value>75, 25</value>
</data>
<data name="BtnMoveDown.TabIndex" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="BtnMoveDown.Text" xml:space="preserve">
<value>↓</value>
</data>
<data name="&gt;&gt;BtnMoveDown.Name" xml:space="preserve">
<value>BtnMoveDown</value>
</data>
<data name="&gt;&gt;BtnMoveDown.Type" xml:space="preserve">
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;BtnMoveDown.Parent" xml:space="preserve">
<value>GrpPageList</value>
</data>
<data name="&gt;&gt;BtnMoveDown.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="BtnMoveUp.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Left</value>
</data>
<data name="BtnMoveUp.Location" type="System.Drawing.Point, System.Drawing">
<value>5, 171</value>
</data>
<data name="BtnMoveUp.Size" type="System.Drawing.Size, System.Drawing">
<value>75, 25</value>
</data>
<data name="BtnMoveUp.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="BtnMoveUp.Text" xml:space="preserve">
<value>↑</value>
</data>
<data name="&gt;&gt;BtnMoveUp.Name" xml:space="preserve">
<value>BtnMoveUp</value>
</data>
<data name="&gt;&gt;BtnMoveUp.Type" xml:space="preserve">
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;BtnMoveUp.Parent" xml:space="preserve">
<value>GrpPageList</value>
</data>
<data name="&gt;&gt;BtnMoveUp.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="ChkListPages.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Bottom, Left, Right</value>
</data>
<data name="ChkListPages.Location" type="System.Drawing.Point, System.Drawing">
<value>6, 22</value>
</data>
<data name="ChkListPages.Size" type="System.Drawing.Size, System.Drawing">
<value>155, 148</value>
</data>
<data name="ChkListPages.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="&gt;&gt;ChkListPages.Name" xml:space="preserve">
<value>ChkListPages</value>
</data>
<data name="&gt;&gt;ChkListPages.Type" xml:space="preserve">
<value>System.Windows.Forms.CheckedListBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;ChkListPages.Parent" xml:space="preserve">
<value>GrpPageList</value>
</data>
<data name="&gt;&gt;ChkListPages.ZOrder" xml:space="preserve">
<value>3</value>
</data>
<data name="GrpPageList.Location" type="System.Drawing.Point, System.Drawing">
<value>476, 3</value>
</data>
<data name="GrpPageList.Size" type="System.Drawing.Size, System.Drawing">
<value>167, 233</value>
</data>
<data name="GrpPageList.TabIndex" type="System.Int32, mscorlib">
<value>100</value>
</data>
<data name="GrpPageList.Text" xml:space="preserve">
<value>页面列表</value>
</data>
<data name="&gt;&gt;GrpPageList.Name" xml:space="preserve">
<value>GrpPageList</value>
</data>
<data name="&gt;&gt;GrpPageList.Type" xml:space="preserve">
<value>System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;GrpPageList.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;GrpPageList.ZOrder" xml:space="preserve">
<value>6</value>
</data>
<data name="LblGCVersion.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="LblGCVersion.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="LblGCVersion.Location" type="System.Drawing.Point, System.Drawing">
<value>53, 70</value>
</data>
<data name="LblGCVersion.Size" type="System.Drawing.Size, System.Drawing">
<value>25, 17</value>
</data>
<data name="LblGCVersion.TabIndex" type="System.Int32, mscorlib">
<value>6</value>
</data>
<data name="LblGCVersion.Text" xml:space="preserve">
<value>GC</value>
</data>
<data name="&gt;&gt;LblGCVersion.Name" xml:space="preserve">
<value>LblGCVersion</value>
</data>
<data name="&gt;&gt;LblGCVersion.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;LblGCVersion.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;LblGCVersion.ZOrder" xml:space="preserve">
<value>4</value>
</data>
<data name="CmbGcVersions.Location" type="System.Drawing.Point, System.Drawing">
<value>87, 67</value>
</data>
<data name="CmbGcVersions.Size" type="System.Drawing.Size, System.Drawing">
<value>100, 25</value>
</data>
<data name="CmbGcVersions.TabIndex" type="System.Int32, mscorlib">
<value>7</value>
</data>
<data name="&gt;&gt;CmbGcVersions.Name" xml:space="preserve">
<value>CmbGcVersions</value>
</data>
<data name="&gt;&gt;CmbGcVersions.Type" xml:space="preserve">
<value>System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;CmbGcVersions.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;CmbGcVersions.ZOrder" xml:space="preserve">
<value>5</value>
</data>
<data name="LblGcVersionTip.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="LblGcVersionTip.Location" type="System.Drawing.Point, System.Drawing">
<value>193, 70</value>
</data>
<data name="LblGcVersionTip.Size" type="System.Drawing.Size, System.Drawing">
<value>104, 17</value>
</data>
<data name="LblGcVersionTip.TabIndex" type="System.Int32, mscorlib">
<value>8</value>
</data>
<data name="LblGcVersionTip.Text" xml:space="preserve">
<value>用于区分命令版本</value>
</data>
<data name="&gt;&gt;LblGcVersionTip.Name" xml:space="preserve">
<value>LblGcVersionTip</value>
</data>
<data name="&gt;&gt;LblGcVersionTip.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;LblGcVersionTip.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;LblGcVersionTip.ZOrder" xml:space="preserve">
<value>3</value>
</data>
<data name="ChkTopMost.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="ChkTopMost.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="ChkTopMost.Location" type="System.Drawing.Point, System.Drawing">
<value>197, 98</value>
</data>
<data name="ChkTopMost.Size" type="System.Drawing.Size, System.Drawing">
<value>75, 21</value>
</data>
<data name="ChkTopMost.TabIndex" type="System.Int32, mscorlib">
<value>10</value>
</data>
<data name="ChkTopMost.Text" xml:space="preserve">
<value>窗口置顶</value>
</data>
<data name="&gt;&gt;ChkTopMost.Name" xml:space="preserve">
<value>ChkTopMost</value>
</data>
<data name="&gt;&gt;ChkTopMost.Type" xml:space="preserve">
<value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;ChkTopMost.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;ChkTopMost.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="LblWindowOpacity.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="LblWindowOpacity.Location" type="System.Drawing.Point, System.Drawing">
<value>25, 99</value>
</data>
<data name="LblWindowOpacity.Size" type="System.Drawing.Size, System.Drawing">
<value>56, 17</value>
</data>
<data name="LblWindowOpacity.TabIndex" type="System.Int32, mscorlib">
<value>11</value>
</data>
<data name="LblWindowOpacity.Text" xml:space="preserve">
<value>不透明度</value>
</data>
<data name="&gt;&gt;LblWindowOpacity.Name" xml:space="preserve">
<value>LblWindowOpacity</value>
</data>
<data name="&gt;&gt;LblWindowOpacity.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;LblWindowOpacity.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;LblWindowOpacity.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="TbWindowOpacity.Location" type="System.Drawing.Point, System.Drawing">
<value>87, 98</value>
</data>
<data name="TbWindowOpacity.Size" type="System.Drawing.Size, System.Drawing">
<value>104, 45</value>
</data>
<data name="TbWindowOpacity.TabIndex" type="System.Int32, mscorlib">
<value>12</value>
</data>
<data name="&gt;&gt;TbWindowOpacity.Name" xml:space="preserve">
<value>TbWindowOpacity</value>
</data>
<data name="&gt;&gt;TbWindowOpacity.Type" xml:space="preserve">
<value>System.Windows.Forms.TrackBar, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;TbWindowOpacity.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;TbWindowOpacity.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
<value>7, 17</value>
</data>
<data name="&gt;&gt;$this.Name" xml:space="preserve">
<value>PageSettings</value>
</data>
<data name="&gt;&gt;$this.Type" xml:space="preserve">
<value>GrasscutterTools.Pages.BasePage, GrasscutterTools, Version=1.13.0.0, Culture=neutral, PublicKeyToken=de2b1c089621e923</value>
</data>
</root>

View File

@ -0,0 +1,158 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="LblPageTitle.Size" type="System.Drawing.Size, System.Drawing">
<value>73, 17</value>
</data>
<data name="LblPageTitle.Text" xml:space="preserve">
<value>Настройка</value>
</data>
<data name="LblIncludeUidTip.Size" type="System.Drawing.Size, System.Drawing">
<value>217, 17</value>
</data>
<data name="LblIncludeUidTip.Text" xml:space="preserve">
<value>Требуется только режим консоли</value>
</data>
<data name="GrpPageList.Text" xml:space="preserve">
<value>Список страниц</value>
</data>
<data name="BtnResetPageList.Text" xml:space="preserve">
<value>Восстановление</value>
</data>
<data name="LblGcVersionTip.Size" type="System.Drawing.Size, System.Drawing">
<value>167, 17</value>
</data>
<data name="LblGcVersionTip.Text" xml:space="preserve">
<value>Различие версий команд </value>
</data>
<data name="ChkTopMost.Size" type="System.Drawing.Size, System.Drawing">
<value>140, 21</value>
</data>
<data name="ChkTopMost.Text" xml:space="preserve">
<value>Последняя версия</value>
</data>
<data name="LblWindowOpacity.Size" type="System.Drawing.Size, System.Drawing">
<value>67, 34</value>
</data>
<data name="LblWindowOpacity.Text" xml:space="preserve">
<value>Непрозр-
ачность</value>
</data>
</root>

View File

@ -0,0 +1,138 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="LblPageTitle.Text" xml:space="preserve">
<value>程式設定</value>
</data>
<data name="LblIncludeUidTip.Text" xml:space="preserve">
<value>僅控制台模式勾選</value>
</data>
<data name="GrpPageList.Text" xml:space="preserve">
<value>頁面清單</value>
</data>
<data name="BtnResetPageList.Text" xml:space="preserve">
<value>恢復預設值</value>
</data>
<data name="LblGcVersionTip.Text" xml:space="preserve">
<value>用於區分命令版本</value>
</data>
<data name="ChkTopMost.Text" xml:space="preserve">
<value>窗口置頂</value>
</data>
</root>

View File

@ -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();
}

View File

@ -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<LoopTask>();
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);
}
}

View File

@ -36,6 +36,8 @@ namespace GrasscutterTools.Pages
{
internal partial class PageTools : BasePage
{
public override string Text => "Tools";
public PageTools()
{
InitializeComponent();

View File

@ -1239,6 +1239,15 @@ namespace GrasscutterTools.Properties {
}
}
/// <summary>
/// 查找类似 设置 的本地化字符串。
/// </summary>
internal static string PageSettingsTitle {
get {
return ResourceManager.GetString("PageSettingsTitle", resourceCulture);
}
}
/// <summary>
/// 查找类似 生成 的本地化字符串。
/// </summary>

View File

@ -381,4 +381,7 @@ Improvement suggestions have been submitted, please use caution to send emails t
<data name="PageProxyTitle" xml:space="preserve">
<value>Proxy</value>
</data>
<data name="PageSettingsTitle" xml:space="preserve">
<value>Settings</value>
</data>
</root>

View File

@ -393,4 +393,7 @@
<data name="PageProxyTitle" xml:space="preserve">
<value>代理</value>
</data>
<data name="PageSettingsTitle" xml:space="preserve">
<value>设置</value>
</data>
</root>

View File

@ -369,4 +369,7 @@
<data name="PageProxyTitle" xml:space="preserve">
<value>Прокси</value>
</data>
<data name="PageSettingsTitle" xml:space="preserve">
<value>Настройка</value>
</data>
</root>

View File

@ -375,4 +375,7 @@
<data name="PageProxyTitle" xml:space="preserve">
<value>代理</value>
</data>
<data name="PageSettingsTitle" xml:space="preserve">
<value>設定</value>
</data>
</root>

View File

@ -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;
}
}
}
}

View File

@ -74,5 +74,11 @@
<Setting Name="AutoStartProxy" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="PageOrders" Type="System.Collections.Specialized.StringCollection" Scope="User">
<Value Profile="(Default)" />
</Setting>
<Setting Name="WindowOpacity" Type="System.Int32" Scope="User">
<Value Profile="(Default)">100</Value>
</Setting>
</Settings>
</SettingsFile>