86 lines
2.8 KiB
C#
86 lines
2.8 KiB
C#
using Pilz.UI.WinForms.Extensions;
|
|
using Pilz.UI.WinForms.Telerik.Extensions;
|
|
using Telerik.WinControls;
|
|
|
|
namespace Pilz.UI.WinForms.Telerik.Dialogs;
|
|
|
|
partial class RadDialogBase
|
|
{
|
|
public delegate void DialogLoadingEventHandler(DialogLoadingEventArgs e);
|
|
public delegate void DialogClosedEventHandler(DialogClosedEventArgs e);
|
|
|
|
public static event DialogLoadingEventHandler? DialogLoading;
|
|
public static event DialogClosedEventHandler? DialogClosed;
|
|
|
|
public static T Show<T>(string? title, object? icon, object? tag = null) where T : RadFlyoutBase
|
|
{
|
|
return Show<T>(null, title, icon, tag);
|
|
}
|
|
|
|
public static T ShowDialog<T>(string? title, object? icon, object? tag = null) where T : RadFlyoutBase
|
|
{
|
|
return ShowDialog<T>(null, title, icon, tag);
|
|
}
|
|
|
|
public static T Show<T>(IWin32Window? parent, string? title, object? icon, object? tag = null) where T : RadFlyoutBase
|
|
{
|
|
return Show(CreatePanelInstance<T>(tag), parent, title, icon);
|
|
}
|
|
|
|
public static T ShowDialog<T>(IWin32Window? parent, string? title, object? icon, object? tag = null) where T : RadFlyoutBase
|
|
{
|
|
return ShowDialog(CreatePanelInstance<T>(tag), parent, title, icon);
|
|
}
|
|
|
|
public static T Show<T>(T dialogPanel, string? title, object? icon) where T : RadFlyoutBase
|
|
{
|
|
return Show(dialogPanel, null, title, icon);
|
|
}
|
|
|
|
public static T ShowDialog<T>(T dialogPanel, string? title, object? icon) where T : RadFlyoutBase
|
|
{
|
|
return ShowDialog(dialogPanel, null, title, icon);
|
|
}
|
|
|
|
public static T Show<T>(T dialogPanel, IWin32Window? parent, string? title, object? icon) where T : RadFlyoutBase
|
|
{
|
|
CreateForm(dialogPanel, parent, title, icon).Show();
|
|
return dialogPanel;
|
|
}
|
|
|
|
public static T ShowDialog<T>(T dialogPanel, IWin32Window? parent, string? title, object? icon) where T : RadFlyoutBase
|
|
{
|
|
CreateForm(dialogPanel, parent, title, icon).ShowDialog();
|
|
return dialogPanel;
|
|
}
|
|
|
|
private static T CreatePanelInstance<T>(object? tag) where T : RadFlyoutBase
|
|
{
|
|
T dialogPanel = Activator.CreateInstance<T>();
|
|
dialogPanel.Tag = tag;
|
|
return dialogPanel;
|
|
}
|
|
|
|
private static RadDialogBase CreateForm<T>(T dialogPanel, IWin32Window? parent, string? title, object? icon) where T : RadFlyoutBase
|
|
{
|
|
dialogPanel.Dock = DockStyle.Fill;
|
|
|
|
if (icon is RadSvgImage svg)
|
|
icon = svg.ToImage();
|
|
if (icon is Image img)
|
|
icon = img.ToIcon();
|
|
|
|
var dialog = new RadDialogBase(dialogPanel)
|
|
{
|
|
Text = title,
|
|
Icon = icon as Icon,
|
|
StartPosition = parent == null ? FormStartPosition.CenterScreen : FormStartPosition.CenterParent,
|
|
ClientSize = dialogPanel.Size
|
|
};
|
|
|
|
dialog.Controls.Add(dialogPanel);
|
|
|
|
return dialog;
|
|
}
|
|
}
|