Files
2026-01-27 06:07:15 +03:00

114 lines
3.6 KiB
C#

namespace Lattice.UI.Docking.Abstractions;
/// <summary>
/// Определяет контракт для темы оформления док-системы.
/// </summary>
public interface IDockTheme
{
/// <summary>
/// Получает имя темы.
/// </summary>
string Name { get; }
/// <summary>
/// Получает или задает основной цвет фона.
/// </summary>
string BackgroundColor { get; set; }
/// <summary>
/// Получает или задает цвет фона панелей.
/// </summary>
string PanelBackgroundColor { get; set; }
/// <summary>
/// Получает или задает цвет фона вкладок.
/// </summary>
string TabBackgroundColor { get; set; }
/// <summary>
/// Получает или задает цвет активной вкладки.
/// </summary>
string ActiveTabBackgroundColor { get; set; }
/// <summary>
/// Получает или задает цвет границ.
/// </summary>
string BorderColor { get; set; }
/// <summary>
/// Получает или задает цвет разделителей.
/// </summary>
string SplitterColor { get; set; }
/// <summary>
/// Получает или задает цвет текста.
/// </summary>
string TextColor { get; set; }
/// <summary>
/// Получает или задает цвет акцента.
/// </summary>
string AccentColor { get; set; }
/// <summary>
/// Получает или задает радиус скругления углов.
/// </summary>
double CornerRadius { get; set; }
/// <summary>
/// Получает или задает толщину границ.
/// </summary>
double BorderThickness { get; set; }
/// <summary>
/// Получает или задает ширину разделителей.
/// </summary>
double SplitterWidth { get; set; }
/// <summary>
/// Применяет тему к системе.
/// </summary>
void Apply();
/// <summary>
/// Сбрасывает тему к значениям по умолчанию.
/// </summary>
void Reset();
}
/// <summary>
/// Предоставляет данные для события показа контекстного меню.
/// </summary>
public class ContextMenuShownEventArgs : EventArgs
{
/// <summary>
/// Получает элемент, для которого показано меню.
/// </summary>
public IDockControl Target { get; }
/// <summary>
/// Получает координату X меню.
/// </summary>
public double X { get; }
/// <summary>
/// Получает координату Y меню.
/// </summary>
public double Y { get; }
/// <summary>
/// Инициализирует новый экземпляр класса <see cref="ContextMenuShownEventArgs"/>.
/// </summary>
/// <param name="target">Элемент, для которого показано меню.</param>
/// <param name="x">Координата X меню.</param>
/// <param name="y">Координата Y меню.</param>
/// <exception cref="ArgumentNullException">
/// Выбрасывается, если <paramref name="target"/> равен null.
/// </exception>
public ContextMenuShownEventArgs(IDockControl target, double x, double y)
{
Target = target ?? throw new ArgumentNullException(nameof(target));
X = x;
Y = y;
}
}