using OwnChar.App.Desktop.Api; using OwnChar.App.Desktop.Api.Parameters; using OwnChar.App.Desktop.LangRes; using OwnChar.App.Desktop.UI.MainTabs; using OwnChar.Manager; using Pilz.Plugins.Advanced; using Pilz.Plugins.Advanced.UI.Telerik; using System; using System.Linq; using System.Windows.Forms; using Telerik.WinControls.UI; namespace OwnChar.App.Desktop.UI.Windows; public partial class MainWindow : RadTabbedForm, IMainWindowApi { Form IMainWindowApi.Window => this; public OwnCharManager Manager { get; } = new(); public MainWindow() { InitializeComponent(); PluginFeatureController.Instance.Features.Get(FeatureCodes.QuickAction).InsertItemsTo(radTabbedFormControl1.RightItems, customClickHandler: RightItem_Clicked); } private MainWindowParams GetMainWindowParams() { return new MainWindowParams(this); } public void OpenTab(Control content, string title) { var newTab = new RadTabbedFormControlTab(); content.Dock = DockStyle.Fill; newTab.Controls.Add(content); newTab.Text = title; newTab.Tag = content; content.Tag = newTab; radTabbedFormControl1.Tabs.Add(newTab); radTabbedFormControl1.SelectedTab = newTab; } public void CloseTab(Control content) { if (FindTab(content) is RadTabbedFormControlTab tab) radTabbedFormControl1.Tabs.Remove(tab); } public bool IsTabOpen(Control content) { return FindTab(content) != null; } public bool IsTabOpen() { return FindTab() != null; } private RadTabbedFormControlTab? FindTab(Control content) { return radTabbedFormControl1.Tabs.FirstOrDefault(n => n.Tag == content); } private RadTabbedFormControlTab? FindTab() { return radTabbedFormControl1.Tabs.FirstOrDefault(n => n.Tag is T); } private void RightItem_Clicked(object? sender, EventArgs e) { if (sender is RadMenuItem item && item.Tag is PluginFunction function) function.Execute(GetMainWindowParams()); } private void MainWindow_Load(object sender, EventArgs e) { OpenTab(new TabLoginView(this), LoginPageLangRes.Title); } }