Skip to content

Commit

Permalink
Optimize navigation framework
Browse files Browse the repository at this point in the history
  • Loading branch information
jie65535 committed Oct 21, 2023
1 parent 497b828 commit 79283f4
Show file tree
Hide file tree
Showing 3 changed files with 49 additions and 72 deletions.
34 changes: 9 additions & 25 deletions Source/GrasscutterTools/Forms/FormMain.Designer.cs

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

52 changes: 39 additions & 13 deletions Source/GrasscutterTools/Forms/FormMain.cs
Original file line number Diff line number Diff line change
Expand Up @@ -148,6 +148,10 @@ private void FormMain_Load(object sender, EventArgs e)
Logger.I(TAG, $"{page.Name} OnLoad completed");
}

// 默认选中首页
if (ListPages.SelectedIndex == -1)
ListPages.SelectedIndex = 0;

Logger.I(TAG, "FormMain_Load completed");
}

Expand Down Expand Up @@ -207,7 +211,6 @@ private void InitPages()
{
Logger.I(TAG, "InitPages enter");
Pages = new Dictionary<string, BasePage>(32);
TCMain.SuspendLayout();
CreatePage<PageHome>();
var poc = CreatePage<PageOpenCommand>();
poc.ShowTipInRunButton = msg => ShowTip(msg, BtnInvokeOpenCommand);
Expand All @@ -233,7 +236,6 @@ private void InitPages()
#if DEBUG
CreatePage<PageTools>();
#endif
TCMain.ResumeLayout();
Logger.I(TAG, "InitPages completed");
}

Expand Down Expand Up @@ -377,7 +379,19 @@ private void ListPages_SelectedIndexChanged(object sender, EventArgs e)
.ElementAt(ListPages.SelectedIndex)
.Item1;
// 通过Key找到页面的父节点也就是TabPage,设置为选中项
TCMain.SelectedTab = Pages[key].Parent as TabPage;
ShowPage(Pages[key]);
}

/// <summary>
/// 展示页面
/// </summary>
/// <param name="page">页面实例</param>
private void ShowPage(BasePage page)
{
NavContainer.Panel2.SuspendLayout();
NavContainer.Panel2.Controls.Clear();
NavContainer.Panel2.Controls.Add(page);
NavContainer.Panel2.ResumeLayout();
}

/// <summary>
Expand Down Expand Up @@ -422,9 +436,6 @@ private void ListPages_SizeChanged(object sender, EventArgs e)
Name = typeof(T).Name,
};
Pages.Add(page.Name, page);
var tp = new TabPage();
TCMain.TabPages.Add(tp);
tp.Controls.Add(page);
return page;
}

Expand Down Expand Up @@ -698,13 +709,18 @@ private void FormMain_KeyDown(object sender, KeyEventArgs e)
// F5 为执行命令
OnOpenCommandInvoke();
}
else if (e.Alt && e.KeyCode >= Keys.D0 && e.KeyCode <= Keys.D9)
else if ((e.Alt || e.Control) && e.KeyCode >= Keys.D0 && e.KeyCode <= Keys.D9)
{
// Alt+数字键 = 跳转到对应页面
// Alt|Ctrl+数字键 = 跳转到对应页面
var i = e.KeyCode == Keys.D0 ? 9 : e.KeyCode - Keys.D1;
if (i < ListPages.Items.Count)
ListPages.SelectedIndex = i;
}
else if (e.Control && e.KeyCode == Keys.Tab)
{
// 切换到下一个页面
ListPages.SelectedIndex = (ListPages.SelectedIndex + 1) % ListPages.Items.Count;
}
else if (Common.KeyGo.IsEnabled == false)
{
foreach (var hotkeyItem in Common.KeyGo.Items)
Expand Down Expand Up @@ -755,13 +771,23 @@ private void ShowTip(string message, Control control)
/// 导航到目标页面并返回该页面实例
/// </summary>
/// <typeparam name="TPage">页面类型</typeparam>
/// <returns>如果导航到了则返回页面实例,否则返回空</returns>
public TPage NavigateTo<TPage>() where TPage : BasePage
{
ListPages.SelectedIndex = -1;
var page = Pages[typeof(TPage).Name];
TCMain.SelectedTab = page.Parent as TabPage;
return page as TPage;
var key = typeof(TPage).Name;
var page = Pages[key] as TPage;
var i = 0;
foreach (var it in PageTabOrders.Where(it => it.Item2))
{
if (it.Item1 == key)
{
ListPages.SelectedIndex = i;
return page;
}
i++;
}

ShowPage(page);
return page;
}

#endregion - 通用 General -
Expand Down
35 changes: 1 addition & 34 deletions Source/GrasscutterTools/Forms/FormMain.resx
Original file line number Diff line number Diff line change
Expand Up @@ -133,7 +133,7 @@
</data>
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="ListPages.ItemHeight" type="System.Int32, mscorlib">
<value>22</value>
<value>25</value>
</data>
<data name="ListPages.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 0</value>
Expand Down Expand Up @@ -171,39 +171,6 @@
<data name="NavContainer.Panel1MinSize" type="System.Int32, mscorlib">
<value>80</value>
</data>
<data name="TCMain.Appearance" type="System.Windows.Forms.TabAppearance, System.Windows.Forms">
<value>FlatButtons</value>
</data>
<data name="TCMain.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="TCMain.ItemSize" type="System.Drawing.Size, System.Drawing">
<value>0, 1</value>
</data>
<data name="TCMain.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 0</value>
</data>
<data name="TCMain.MinimumSize" type="System.Drawing.Size, System.Drawing">
<value>610, 275</value>
</data>
<data name="TCMain.Size" type="System.Drawing.Size, System.Drawing">
<value>656, 275</value>
</data>
<data name="TCMain.TabIndex" type="System.Int32, mscorlib">
<value>4</value>
</data>
<data name="&gt;&gt;TCMain.Name" xml:space="preserve">
<value>TCMain</value>
</data>
<data name="&gt;&gt;TCMain.Type" xml:space="preserve">
<value>System.Windows.Forms.TabControl, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;TCMain.Parent" xml:space="preserve">
<value>NavContainer.Panel2</value>
</data>
<data name="&gt;&gt;TCMain.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="&gt;&gt;NavContainer.Panel2.Name" xml:space="preserve">
<value>NavContainer.Panel2</value>
</data>
Expand Down

0 comments on commit 79283f4

Please sign in to comment.