Продолжение рефакторинга (вынесение WPF в отдельный проект)

This commit is contained in:
2025-10-02 17:25:48 +04:00
parent 2fa94851cb
commit f5b311e025
161 changed files with 899 additions and 559 deletions
+31 -112
View File
@@ -2,7 +2,10 @@
namespace Pf2e.Scrapper.Helpers;
internal class ProcessProgress : AbstractLogger
/// <summary>
/// Класс для отслеживания прогресса обработки данных.
/// </summary>
public class ProcessProgress : AbstractLogger
{
/// <summary>
/// Прогресс обработки обработчиков <see cref="IProcessor"/>.
@@ -31,138 +34,54 @@ internal class ProcessProgress : AbstractLogger
ProgressUpdate?.Invoke(this);
}
/// <summary>
/// Событие сообщения.
/// </summary>
/// <param name="level">Уровень сообщения.</param>
/// <param name="message"></param>
public override void Message(LogLevel level, string message)
{
ProgressMessage?.Invoke(this, level, message);
}
/// <summary>
/// Событие завершения процесса.
/// </summary>
public void Complete()
{
ProgressComplete?.Invoke(this);
}
/// <summary>
/// Делегат для события обновления прогресса.
/// </summary>
/// <param name="sender">Объект, вызвавший событие.</param>
public delegate void ProgressUpdateDelegate(ProcessProgress sender);
/// <summary>
/// Событие обновления прогресса.
/// </summary>
public event ProgressUpdateDelegate? ProgressUpdate;
/// <summary>
/// Событие завершения процесса.
/// </summary>
public event ProgressUpdateDelegate? ProgressComplete;
/// <summary>
/// Делегат для события сообщения прогресса.
/// </summary>
/// <param name="sender">Объект, вызвавший событие.</param>
/// <param name="level">Уровень сообщения.</param>
/// <param name="message">Сообщение.</param>
public delegate void ProgressMessageDelegate(
ProcessProgress sender,
LogLevel level,
string message
);
public event ProgressMessageDelegate? ProgressMessage;
/// <summary>
/// Класс прогресса.
/// Событие сообщения.
/// </summary>
public class ProgressItem
{
/// <summary>
/// Количество обрабатываемых процессов.
/// </summary>
public int Count
{
get => _count;
set
{
_count = value;
Update?.Invoke();
}
}
private int _count;
/// <summary>
/// Индекс текущего обрабатываемого процесса.
/// </summary>
public int Current
{
get => _current;
set
{
_current = value;
Update?.Invoke();
}
}
private int _current;
/// <summary>
/// Название текущего обрабатываемого процесса.
/// </summary>
public string Text
{
get => _text;
set
{
_text = value;
Update?.Invoke();
}
}
private string _text = "";
/// <summary>
/// Значение прогресса.
/// </summary>
public double Percent => Count > 0 ? 1.0 * Current / Count : 1.0;
/// <summary>
/// Сброс прогресса до нуля и установка нового максимального значения.
/// </summary>
/// <param name="max"></param>
public void Reset(int max = 0)
{
_count = max;
_current = 0;
_text = "";
Update?.Invoke();
}
/// <summary>
/// Отмечает начало работы над процессом, описываемым строкой <paramref name="text"/>.
/// </summary>
/// <param name="text">Строка, описывающая процесс.</param>
public void Start(string text)
{
_text = text;
Update?.Invoke();
}
/// <summary>
/// Отмечает конец работы над процессом и увеличивает значение прогресса.
/// </summary>
public void End()
{
_current++;
Update?.Invoke();
}
/// <summary>
/// Отмечает прогресс завершённым.
/// </summary>
public void Complete()
{
_current = _count;
_text = "Готово!";
Update?.Invoke();
}
/// <summary>
/// Получение строкового представления прогресса.
/// </summary>
/// <returns>Строковое представление прогресса.</returns>
public override string ToString()
{
return $"{Text} [{Current} / {Count}; {Percent:P}]";
}
/// <summary>
/// Делегат события обновления.
/// </summary>
public delegate void UpdateDelegate();
/// <summary>
/// Событие обновление.
/// </summary>
public event UpdateDelegate? Update;
}
public event ProgressMessageDelegate? ProgressMessage;
}