84 lines
2.2 KiB
C#
84 lines
2.2 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading;
|
|
using System.Windows;
|
|
|
|
namespace Szmedi.AIScriptRunner.ProgressBarCtrl
|
|
{
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
public class LoadingManager
|
|
{
|
|
|
|
private Type m_ProgressBarViewType;
|
|
private ProgressBarInfo m_ProgressBarInfo = new ProgressBarInfo();
|
|
|
|
//public static LoadingCtrl LoadingWindow { get; set; }
|
|
private Window m_ProgressBarForm;
|
|
|
|
public Window ProgressBarView { get { return m_ProgressBarForm; } }
|
|
|
|
public ProgressBarInfo ProgressBarInfo { get { return m_ProgressBarInfo; } }
|
|
|
|
public string LoadingMessage { get; set; }
|
|
|
|
|
|
public LoadingManager()
|
|
{
|
|
}
|
|
public LoadingManager(string msg)
|
|
{
|
|
m_ProgressBarInfo.Message = msg;
|
|
m_ProgressBarInfo.TipMessage = msg+":";
|
|
}
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
public void ShowProgressBar(Type progressBarViewType=null)
|
|
{
|
|
m_ProgressBarViewType = progressBarViewType;
|
|
Thread thread = new Thread(ProgressBarStart);
|
|
thread.SetApartmentState(ApartmentState.STA);
|
|
thread.Start();
|
|
}
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
public void CloseProgressBar()
|
|
{
|
|
if (m_ProgressBarForm == null) return;
|
|
|
|
m_ProgressBarForm.Dispatcher.Invoke(new Action(() =>
|
|
{
|
|
m_ProgressBarForm.Close();
|
|
m_ProgressBarForm = null;
|
|
}));
|
|
}
|
|
|
|
private void ProgressBarStart()
|
|
{
|
|
if (m_ProgressBarForm == null)
|
|
{
|
|
if (m_ProgressBarViewType != null)
|
|
{
|
|
m_ProgressBarForm = (Window)Activator.CreateInstance(m_ProgressBarViewType);
|
|
}
|
|
else
|
|
{
|
|
m_ProgressBarForm = new ProgressBarCtrl();
|
|
}
|
|
m_ProgressBarForm.DataContext = m_ProgressBarInfo;
|
|
}
|
|
//load.Topmost = true;
|
|
m_ProgressBarForm.ShowDialog();
|
|
|
|
//load.Show();
|
|
}
|
|
}
|
|
}
|