using System;
using System.Windows.Forms;
namespace SymbolLibManager
{
///
/// 符号管理
/// 要点:
/// 1、用户多次点击 -> 不应该弹出多个窗口
/// 2、窗口被最小化、置后 -> 再点时要“恢复 + 激活“
/// 3、窗口被关闭/句柄销毁 -> 静态引用要清理
///
public class SymbolManager : SymbolLibInterface.ISymbolManager
{
private static FrmMarkMain frmMain;
public void ShowSymbolEditor(string symbolPath)
{
ShowSymbolEditor(null, symbolPath);
}
public void ShowSymbolEditor(object sender, string symbolPath)
{
if (frmMain == null)
{
if (!(sender is GeoSigma.UCDraw.MainView view) || view.ViewControl.Geo == null)
{
frmMain = new FrmMarkMain(symbolPath);
}
else
{
frmMain = new FrmMarkMain(view.ViewControl.Geo, symbolPath);
}
frmMain.HandleDestroyed += FrmMain_HandleDestroyed;
frmMain.Show();
}
else
{
if (frmMain.WindowState == FormWindowState.Minimized)
{
frmMain.WindowState = FormWindowState.Normal;
}
frmMain.Activate();
frmMain.BringToFront();
}
}
private void FrmMain_HandleDestroyed(object sender, EventArgs e)
{
frmMain = null;
}
private string selectedSymbolName;
public Form CreateSymbolSelectForm(GeoSigmaDrawLib.GeoSigmaXY geo,
string symbolPath,
Func acceptSymbolName)
{
FrmSymbolSelect frm = new FrmSymbolSelect(geo, symbolPath, ref selectedSymbolName);
frm.FormClosed += (sender, arg) =>
{
acceptSymbolName?.Invoke(frm.SelectedSymbolName);
};
return frm;
}
}
}