Files
EmoneyFiddlerPlugins/EmoneyInteceptor/Fiddler/Models/PluginViewController.cs
2026-01-07 11:33:05 +08:00

63 lines
2.0 KiB
C#

using System;
using System.Collections.Generic;
using Fiddler;
using EmoneyInteceptor.Fiddler.Interfaces;
namespace EmoneyInteceptor.Fiddler.Models
{
internal class PluginViewController
{
private static readonly IList<IFiddlerLayout> FiddlerLayoutViews = new List<IFiddlerLayout>();
public static void InsertFiddlerTabPage(IFiddlerViewProvider fiddlerViewProvider)
{
// 提供 fiddler 窗口变化的支持
FiddlerApplication.UI.tabsViews.SizeChanged += TabsViewsOnSizeChanged;
foreach (FiddlerTabPage fiddlerTabPage in fiddlerViewProvider.BuildFiddlerTabPages())
{
InsertFiddlerTabPage(fiddlerTabPage);
}
}
private static void InsertFiddlerTabPage(FiddlerTabPage fiddlerTabPage)
{
// new tab
System.Windows.Forms.TabPage tabPage = new System.Windows.Forms.TabPage(fiddlerTabPage.TabTitle) { ImageIndex = (int)fiddlerTabPage.TabIcon };
if (fiddlerTabPage.WinFormUserControl != null)
{
InsertWinFormTabPage(tabPage, fiddlerTabPage.WinFormUserControl);
}
UpdateViewSize();
}
private static void InsertWinFormTabPage(System.Windows.Forms.TabPage tabPage, System.Windows.Forms.UserControl userControl)
{
// add view to tab
tabPage.Controls.Add(userControl);
// add tab to fiddler
FiddlerApplication.UI.tabsViews.TabPages.Add(tabPage);
if (userControl is IFiddlerLayout layout)
{
FiddlerLayoutViews.Add(layout);
}
}
private static void TabsViewsOnSizeChanged(object sender, EventArgs e)
{
UpdateViewSize();
}
private static void UpdateViewSize()
{
System.Drawing.Size size = FiddlerApplication.UI.tabsViews.Size;
foreach (IFiddlerLayout view in FiddlerLayoutViews)
{
view.OnTabViewSizeChanged(size);
}
}
}
}