using CefSharp;
using CefSharp.WinForms;
using OTS.WinFormsUI.Docking;
using OTSCommon.Model;
using OTSIncAReportApp.OTSDataMgrFunction;
using OTSIncAReportApp.OTSRibbon;
using OTSIncAReportApp.OTSSampleReportInfo;
using OTSIncAReportApp.SysMgrTools;
using OTSIncAReportGraph;
using OTSIncAReportGraph.OTSIncAReportGraphFuncation;
using OTSIncAReprotCharts;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Data;
using System.Diagnostics;
using System.Drawing;
using System.IO;
using System.Runtime.InteropServices;
using System.Windows.Forms;
namespace OTSIncAReportApp
{
public struct PostLogMsg
{
public int logLevel;//1 trace 2 debug 3info 4 warn 5 error 6 fatal
[MarshalAs(UnmanagedType.ByValArray, SizeConst = (int)2000)]
public char[] logMessage;
};
///
/// 报告主窗体类
///
public partial class frmReportApp : Form
{
#region 共享窗体对象--------------------------------------------------------------------------------------
public frmMeasureRstMgr m_RstWindow = null; //测量结果,树控件窗体,属性Grid窗体
public frmReportConditionChoose m_conditionChoose = null; //属性Grid窗体
public frmSampleImage m_SImageWindow = null; //BSE窗体
public frmCharts m_ChartsWindow = null; //图表窗体
public frmTables m_TablesWindow = null; //报表窗体
public frmReportSysConfig m_ReportSysConfigForm; //配置参数窗体
#endregion //-----------------------------------------------------------------------------------------------
#region 报告类结构相关------------------------------------------------------------------------------------
NLog.Logger log;
private PostLogMsg m_LogMsg;
public const int MsgID = 0x0464;
public const int LogMsgID = 0x0465;
public OutputNlog m_OutputNlog; //日志类对象
public ResultDataMgr m_rstDataMgr = null; //DataMgrFun 对象, 此类是和调用C++ DataMGR交互数据
public OTSRibbonFun m_RibbonFun = null; //报告菜单相关操作类
//当前工作结果
public static RectangleF selectedRegion = new RectangleF();
public RptConfigFile m_RptConfigFile;
public string MoreSource = "";
public string savePathName = "FIELD_FILES_REMEASURE"; //二次采集图像目录名
Hashtable table; //国际化表
string[] m_str_resultfilepaths;
#endregion //-----------------------------------------------------------------------------------------------
#region EChart相关变量------------------------------------------------------------------------------------
//定义浏览器
public CefSharp.WinForms.ChromiumWebBrowser browser;
public CefSharp.WinForms.ChromiumWebBrowser browsermore;//多测量结果对比时使用
public bool more = false;
public bool trans = false;
//定义浏览器
public CefSharp.WinForms.ChromiumWebBrowser browser_trio;
public CefSharp.WinForms.ChromiumWebBrowser browser_triomore;//多测量结果对比时使用
public class JsEvent
{
public string MessageText { set; get; }
public void ShowTest()
{
MessageBox.Show(MessageText);
}
}
public JsEvent js = new JsEvent();
public string m_reportname;
public string data;
public string dataCombin;
public string type;
public bool timerKG;
#endregion //------------------------------------------------------------------------------------------------
#region 各功能模块窗体 -----------------------------------------------------------------------------------
///
/// 颗粒分布图
///
public OTSIncAReportGraph.Controls.Control_DrawDistrbutionImageAndBSE im_Control_DrawDistrbutionImageAndBSE = null;
///
/// 颗粒排序图
///
public OTSIncAReportGraph.Controls.Control_DrawDistrbutionSortImage im_Control_DrawDistrbutionSortImage = null;
///
/// 颗粒列表_分页
///
public OTSIncAReportGrids.ParticlesGridDevidePage im_ParticlesGridDevidePage = null;
///
/// 颗粒成份分布表
///
public OTSIncAReportGrids.CompositionDistributionGrid im_CompositionDistributionGrid = null;
///
/// 平均元素含量表
///
public OTSIncAReportGrids.ElementCompositionAvgGrid im_ElementCompositionAvgGrid = null;
///
/// 颗粒尺寸表
///
public OTSIncAReportGrids.ParticlesSizeGrid im_ParticlesSizeGrid = null;
///
/// 测量结果概况
///
public OTSIncAReportGrids.ResultGrid im_ResultGrid = null;
///
/// 颗粒成份图EChart
///
public Control_ECharts.EChart_ParticlesComposition im_EChart_ParticlesComposition = null;
///
/// 三元相图EChart
///
public Control_ECharts.EChart_Trianglediagram im_EChart_Trianglediagram = null;
///
/// 国标信息表方法一
///
public OTSIncAReportGB.ChineseStandardABCDDS im_ChineseStandardABCDDS = null;
///
/// 国标信息表方法二
///
public OTSIncAReportGB.NationalStandardMethodTwo im_NationalStandardMethodTwo = null;
///
/// 美标
///
public OTSIncAReportGB.ASTMStandardABCDDS im_ASTMStandardABCDDS = null;
///
/// 德标
///
public OTSIncAReportGB.DINStandardABCDDS im_DINStandardABCDDS = null;
public List GetSelectedParticles()
{
List Particles = new List();
int tabIndex = (int)(m_conditionChoose.tabIndex);
switch (tabIndex)
{
case (int)DisplayPicutureType.AnalyzeImg:
foreach (var field in im_Control_DrawDistrbutionImageAndBSE.m_list_allDfield)
{
foreach (var dp in field.List_DParticle)
{
if (dp.IsSelect)
{
Particle particle = new Particle();
particle.FieldId = ((OTSIncAReportGraph.DisplayParticle)dp).FieldId;
particle.ParticleId = ((OTSIncAReportGraph.DisplayParticle)dp).ParticleId;
Particles.Add(particle);
}
}
}
break;
case (int)DisplayPicutureType.AnalyzeDataTable:
Particles = im_ParticlesGridDevidePage.GetParticleslist_select();
break;
default:
break;
}
return Particles;
}
#endregion //--------------------------------------------------------------------------------------------
#region 窗体初始化及构造函数
///
/// 窗体构造函数
///
public frmReportApp()
{
m_OutputNlog = new OutputNlog();
m_OutputNlog.Visible = true;
log = NLog.LogManager.GetCurrentClassLogger();
InitializeComponent();
//初始化Ribbon类,操作Ribbon按钮的可用或者不可用
m_RibbonFun = new OTSRibbonFun(this);
//和DataMgr进行数据交互类
m_rstDataMgr = new ResultDataMgr(this);
//配置文件管理窗体
m_ReportSysConfigForm = new frmReportSysConfig(this);
//属性窗口
m_conditionChoose = new frmReportConditionChoose(this);
//树窗口
m_RstWindow = new frmMeasureRstMgr(this);
//分布图,排列图窗体
m_SImageWindow = new frmSampleImage(this);
//chart图表窗体
m_ChartsWindow = new frmCharts(this);
//grid表格窗体
m_TablesWindow = new frmTables(this);
SetTag();
#region 国际化语言
Language lan = new Language(this);
table = lan.GetNameTable(this.Name);
#endregion
}
///
/// 为生成后没有Name的控件添加标签,为了国际化语言设置时可以找到这个控件
///
protected void SetTag()
{
ribbonPanel3.Tag = "ribbonPanel3";
ribbonPanel2.Tag = "ribbonPanel2";
rbSelTool.Tag = "rbSelTool";
rbChoiceTools.Tag = "rbChoiceTools";
ribbonPanelOthers.Tag = "ribbonPanelOthers";
ribbonTab1.Tag = "ribbonTab1";
rbMenu.Tag = "rbMenu";
dpbOpen.Tag = "dpbOpen";
ribbonOrbMenuItem_Extremum.Tag = "ribbonOrbMenuItem_Extremum";
dpbExport.Tag = "dpbExport";
dpbTemplateEditing.Tag = "dpbTemplateEditing";
ribbonOrbOptionButton1.Tag = "ribbonOrbOptionButton1";
ribbonOrbMenuItem_InclusionsTraceability.Tag = "ribbonOrbMenuItem_InclusionsTraceability";
ribbonOrbMenuItem_purity.Tag = "ribbonOrbMenuItem_purity";
rbClose.Tag = "rbClose";
rbChoiceParticle.Tag = "rbChoiceParticle";
//dpbTemplateEditing.Tag = "dpbTemplateEditing";
}
///
/// 窗体构造函数,可接收多个测量结果文件
///
public frmReportApp(string[] str_resultfilepaths)
{
m_OutputNlog = new OutputNlog();
m_OutputNlog.Visible = true;
log = NLog.LogManager.GetCurrentClassLogger();
m_str_resultfilepaths = str_resultfilepaths;
InitializeComponent();
//初始化Ribbon类,操作Ribbon按钮的可用或者不可用
m_RibbonFun = new OTSRibbonFun(this);
//和DataMgr进行数据交互类
m_rstDataMgr = new ResultDataMgr(this);//必须放在new frmReportSysConfig(this)前
//配置文件管理窗体
m_ReportSysConfigForm = new frmReportSysConfig(this);
//属性窗口
m_conditionChoose = new frmReportConditionChoose(this);
//树窗口
m_RstWindow = new frmMeasureRstMgr(this);
//分布图,排列图窗体
m_SImageWindow = new frmSampleImage(this);
//chart图表窗体
m_ChartsWindow = new frmCharts(this);
//grid表格窗体
m_TablesWindow = new frmTables(this);
SetTag();
#region 国际化语言
Language lan = new Language(this);
table = lan.GetNameTable(this.Name);
#endregion
}
///
/// 报告主窗体加载事件
///
///
///
private void OTSReportApp_Load(object sender, EventArgs e)
{
log = NLog.LogManager.GetCurrentClassLogger();
//------------- initialize the HMI of the main form.
if (Cef.IsInitialized == false)
{
var lib = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @"CefSharp\libcef.dll");
var browser = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @"CefSharp\CefSharp.BrowserSubprocess.exe");
var locales = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @"CefSharp\locales\");
var res = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @"CefSharp\");
var libraryLoader = new CefLibraryHandle(lib);
var isValid = !libraryLoader.IsInvalid;
if (isValid)
{
//InitializeCef();
var settings = new CefSettings
{
BrowserSubprocessPath = browser,
LocalesDirPath = locales,
ResourcesDirPath = res
};
settings.Locale = "zh-CN";
settings.CefCommandLineArgs.Add("disable-gpu", "1");
Cef.Initialize(settings);
}
}
//加载配置文件
m_rstDataMgr.m_RptConfigFile.LoadDataFromFile();
//设置菜单按钮,都为true状态
m_RibbonFun.SetAllRibbonButnStatu(false);
//创建,树窗口,属性grid窗口,分布图,grid,chart窗体等。
CreateNewWorkspaceWindow();
//激活测量结果窗体
this.m_RstWindow.Activate();
//激活表图窗体
this.m_TablesWindow.Activate();
//----------------end the initialization
if (m_str_resultfilepaths != null)
{
//构造函数直接接收传入的测量结果文件,并加载
for (int i = 0; i < m_str_resultfilepaths.Length; i++)
{
this.m_RstWindow.AddSampleResult(m_str_resultfilepaths[i].Replace("^", " "));
}
}
if (Language.ReadDefaultLanguage() == "EN")
{
rbHelp.Enabled = false;
}
else
{
rbHelp.Enabled = true;
}
m_RptConfigFile =RptConfigFile.GetRptConfig(); //报表程序的配置文件
this.Text = "ReportApp(" + m_rstDataMgr.m_RptConfigFile.Systype.ToString() + ")";
}
#endregion
#region Ribbon菜单按钮及菜单相关按按钮事件
///
/// 新建按钮事件
///
///
///
private void ribTitleNewFile_Click(object sender, EventArgs e)
{
InitReportProState();
}
///
/// 初始伦报告加载
///
public void InitReportProState()
{
//清除树窗体
m_RstWindow.treeView1.Nodes.Clear();
//清除属性Grid
m_conditionChoose.m_sourceGrid = new OTSSourceGrid(m_conditionChoose);
m_rstDataMgr.ResultFilesList.Clear();
//清除各模块报表文件
m_ChartsWindow.Controls.Clear();
m_TablesWindow.Controls.Clear();
m_SImageWindow.Controls.Clear();
//再重新初始化下拉菜单和ribbon菜单中的按钮状态
m_RibbonFun.SetAllRibbonButnStatu(false);
im_Control_DrawDistrbutionImageAndBSE = null;
im_Control_DrawDistrbutionSortImage = null;
im_ParticlesGridDevidePage = null;
im_CompositionDistributionGrid = null;
im_ElementCompositionAvgGrid = null;
im_ParticlesSizeGrid = null;
im_ResultGrid = null;
}
///
/// 程序管理按钮点击事件
///
///
///
private void RibbonOrbOptionButton1_Click(object sender, EventArgs e)
{
//程序管理
m_ReportSysConfigForm.ShowDialog();
}
///
/// 打开报告项目文件按钮事件
///
///
///
private void rbOpen_Click(object sender, EventArgs e)
{
string path = "";
OpenFileDialog fileDialog = new OpenFileDialog();
fileDialog.Filter = "text File|*.rst";
fileDialog.RestoreDirectory = true;
if (fileDialog.ShowDialog() == DialogResult.OK)
{
path = System.IO.Path.GetFullPath(fileDialog.FileName);
log.Info("begin to load the result!");
Cursor = Cursors.WaitCursor;
this.m_RstWindow.AddSampleResult(path);
Cursor = Cursors.Default;
}
}
///
/// 全图匹配按钮事件
///
///
///
private void rbAllImage_Click(object sender, EventArgs e)
{
int tabIndex = (int)(m_conditionChoose.tabIndex);
switch (tabIndex)
{
case (int)DisplayPicutureType.AnalyzeImg:
int imgDisType=m_conditionChoose.m_conditionData.GetComboDownListIndexByItemName(OTS_REPORT_PROP_GRID_ITEMS.IMAGE_DISPLAY_TYPE);
if (imgDisType == 0)
{
if (im_Control_DrawDistrbutionImageAndBSE != null)
{
//分布图
im_Control_DrawDistrbutionImageAndBSE.FullGraphMatch();
im_Control_DrawDistrbutionImageAndBSE.Invalidate();
}
}
else
{
if (im_Control_DrawDistrbutionSortImage != null)
{
//排列图
}
}
break;
case (int)DisplayPicutureType.AnalyzeDataTable:
break;
case (int)DisplayPicutureType.AnalyzeDataChart:
break;
default:
break;
}
}
///
/// 宽度匹配按钮事件
///
///
///
private void rbWidthImage_Click(object sender, EventArgs e)
{
int tabIndex = (int)(m_conditionChoose.tabIndex);
switch (tabIndex)
{
case (int)DisplayPicutureType.AnalyzeImg:
int imgDisType = m_conditionChoose.m_conditionData.GetComboDownListIndexByItemName(OTS_REPORT_PROP_GRID_ITEMS.IMAGE_DISPLAY_TYPE);
if (imgDisType == 0)
{
if (im_Control_DrawDistrbutionImageAndBSE != null)
{
//分布图
im_Control_DrawDistrbutionImageAndBSE.WidthMatch();
im_Control_DrawDistrbutionImageAndBSE.Invalidate();
}
}
else
{
if (im_Control_DrawDistrbutionSortImage != null)
{
//排列图
}
}
break;
case (int)DisplayPicutureType.AnalyzeDataTable:
break;
case (int)DisplayPicutureType.AnalyzeDataChart:
break;
default:
break;
}
}
///
/// 帧图边框按钮事件
///
///
///
private void rbFrame_Click(object sender, EventArgs e)
{
int tabIndex = (int)(m_conditionChoose.tabIndex);
switch (tabIndex)
{
case (int)DisplayPicutureType.AnalyzeImg:
int imgDisType = m_conditionChoose.m_conditionData.GetComboDownListIndexByItemName(OTS_REPORT_PROP_GRID_ITEMS.IMAGE_DISPLAY_TYPE);
if (imgDisType == 0)
{
if (im_Control_DrawDistrbutionImageAndBSE != null)
{
//分布图
im_Control_DrawDistrbutionImageAndBSE.ShowGridLine();
im_Control_DrawDistrbutionImageAndBSE.Invalidate();
}
}
else
{
if (im_Control_DrawDistrbutionSortImage != null)
{
}
}
break;
case (int)DisplayPicutureType.AnalyzeDataTable:
break;
case (int)DisplayPicutureType.AnalyzeDataChart:
break;
default:
break;
}
}
///
/// 标尺按钮事件
///
///
///
private void rbStaff_Click(object sender, EventArgs e)
{
int tabIndex = (int)(m_conditionChoose.tabIndex);
switch (tabIndex)
{
case (int)DisplayPicutureType.AnalyzeImg:
int imgDisType = m_conditionChoose.m_conditionData.GetComboDownListIndexByItemName(OTS_REPORT_PROP_GRID_ITEMS.IMAGE_DISPLAY_TYPE);
if (imgDisType == 0)
{
if (im_Control_DrawDistrbutionImageAndBSE != null)
{
//分布图
im_Control_DrawDistrbutionImageAndBSE.ShowRulerControl();
im_Control_DrawDistrbutionImageAndBSE.Invalidate();
}
}
else
{
if (im_Control_DrawDistrbutionSortImage != null)
{
im_Control_DrawDistrbutionSortImage.ShowRulerControl();
im_Control_DrawDistrbutionSortImage.Invalidate();
}
}
break;
case (int)DisplayPicutureType.AnalyzeDataTable:
break;
case (int)DisplayPicutureType.AnalyzeDataChart:
break;
default:
break;
}
}
///
/// 恢复按钮事件
///
///
///
private void rbRenew_Click(object sender, EventArgs e)
{
rbRenewFun(false, 0, 0);
}
public void rbRenewFun(bool isReview, int FieldId, int ParticleId)
{
int tabIndex = (int)m_conditionChoose.tabIndex;
int DisType = m_conditionChoose.m_conditionData.GetComboDownListIndexByItemName(OTS_REPORT_PROP_GRID_ITEMS.IMAGE_DISPLAY_TYPE);
switch (tabIndex)
{
case (int)DisplayPicutureType.AnalyzeImg:
if (DisType == (int)IMAGE_DISPLAY_TYPE.DISTRIBUTION)
{
if (im_Control_DrawDistrbutionImageAndBSE != null)
{
//分布图
im_Control_DrawDistrbutionImageAndBSE.ShowRulerControl(false);
im_Control_DrawDistrbutionImageAndBSE.ShowGridLine(false);
im_Control_DrawDistrbutionImageAndBSE.Invalidate();
m_SImageWindow.Controls.Clear();
im_Control_DrawDistrbutionImageAndBSE = new OTSIncAReportGraph.Controls.Control_DrawDistrbutionImageAndBSE(this);
im_Control_DrawDistrbutionImageAndBSE.isReView = isReview;
im_Control_DrawDistrbutionImageAndBSE.reViewFieldId = FieldId;
im_Control_DrawDistrbutionImageAndBSE.reViewParticleId = ParticleId;
im_Control_DrawDistrbutionImageAndBSE.Dock = DockStyle.Fill;
m_SImageWindow.Controls.Add(im_Control_DrawDistrbutionImageAndBSE);
m_SImageWindow.Activate();
im_Control_DrawDistrbutionImageAndBSE.ShowSourceName = "";
im_Control_DrawDistrbutionImageAndBSE.DrawDistrbutionImageAndBSE_ByQuery(m_conditionChoose.m_conditionData);
im_Control_DrawDistrbutionImageAndBSE.SetSelectParticle(GetSelectedParticles());
ConditionItem imgType = m_conditionChoose.m_CurrentConditions[OTS_REPORT_PROP_GRID_ITEMS.IMAGE_TYPE];
//切换分布图显示方式
DISTRIBUTION_IMAGE_SHOW_MODE t = (DISTRIBUTION_IMAGE_SHOW_MODE)imgType.itemVal;
im_Control_DrawDistrbutionImageAndBSE.SetShowMode(t);
//并删除排列图
im_Control_DrawDistrbutionSortImage = null;
}
}
if (DisType == (int)IMAGE_DISPLAY_TYPE.IMAGE_GRID)
{
if (im_Control_DrawDistrbutionSortImage != null)
{
//排序图
im_Control_DrawDistrbutionSortImage.ShowRulerControl(false);
im_Control_DrawDistrbutionSortImage.Invalidate();
m_SImageWindow.Controls.Clear();
im_Control_DrawDistrbutionSortImage = new OTSIncAReportGraph.Controls.Control_DrawDistrbutionSortImage(this);
im_Control_DrawDistrbutionSortImage.Dock = DockStyle.Fill;
m_SImageWindow.Controls.Add(im_Control_DrawDistrbutionSortImage);
m_SImageWindow.Activate();
im_Control_DrawDistrbutionSortImage.ShowSourceName = "";
im_Control_DrawDistrbutionSortImage.GetDistrbutionSortimage_ByQuery(m_conditionChoose.m_CurrentConditions);
im_Control_DrawDistrbutionSortImage.SetSelectParticle(GetSelectedParticles());
}
}
break;
case (int)DisplayPicutureType.AnalyzeDataTable:
break;
case (int)DisplayPicutureType.AnalyzeDataChart:
break;
default:
break;
}
}
///
/// 反选操作按钮事件
///
///
///
private void rbReverseSelection_Click(object sender, EventArgs e)
{
int tabIndex = (int)(m_conditionChoose.tabIndex);
switch (tabIndex)
{
case (int)DisplayPicutureType.AnalyzeImg:
int imgDisType = m_conditionChoose.m_conditionData.GetComboDownListIndexByItemName(OTS_REPORT_PROP_GRID_ITEMS.IMAGE_DISPLAY_TYPE);
if (imgDisType == 0)
{
if (im_Control_DrawDistrbutionImageAndBSE != null)
{
//分布图
im_Control_DrawDistrbutionImageAndBSE.ReverseSelection();
}
}
else
{
if (im_Control_DrawDistrbutionSortImage != null)
{
im_Control_DrawDistrbutionSortImage.ReverSeSelection();
}
}
break;
case (int)DisplayPicutureType.AnalyzeDataTable:
break;
case (int)DisplayPicutureType.AnalyzeDataChart:
break;
default:
break;
}
}
///
/// 圆形工具按钮事件
///
///
///
private void rbCircular_Click(object sender, EventArgs e)
{
int tabIndex = (int)(m_conditionChoose.tabIndex);
switch (tabIndex)
{
case (int)DisplayPicutureType.AnalyzeImg:
IMAGE_DISPLAY_TYPE imgDisType = (IMAGE_DISPLAY_TYPE)m_conditionChoose.m_conditionData.GetComboDownListIndexByItemName(OTS_REPORT_PROP_GRID_ITEMS.IMAGE_DISPLAY_TYPE);
if (imgDisType == IMAGE_DISPLAY_TYPE.DISTRIBUTION)
{
if (im_Control_DrawDistrbutionImageAndBSE != null)
{
//分布图
im_Control_DrawDistrbutionImageAndBSE.MultiSelect_Ellipse();
}
}
else
{
if (im_Control_DrawDistrbutionSortImage != null)
{
im_Control_DrawDistrbutionSortImage.MultiSelect_Ellipse();
}
}
break;
case (int)DisplayPicutureType.AnalyzeDataTable:
break;
case (int)DisplayPicutureType.AnalyzeDataChart:
break;
default:
break;
}
}
///
/// 矩形工具按钮事件
///
///
///
private void rbRectangle_Click(object sender, EventArgs e)
{
int tabIndex = (int)(m_conditionChoose.tabIndex);
switch (tabIndex)
{
case (int)DisplayPicutureType.AnalyzeImg:
int imgDisType = m_conditionChoose.m_conditionData.GetComboDownListIndexByItemName(OTS_REPORT_PROP_GRID_ITEMS.IMAGE_DISPLAY_TYPE);
if (imgDisType == 0)
{
if (im_Control_DrawDistrbutionImageAndBSE != null)
{
//分布图
im_Control_DrawDistrbutionImageAndBSE.MultiSelect_Rectangle();
}
}
else
{
if (im_Control_DrawDistrbutionSortImage != null)
{
im_Control_DrawDistrbutionSortImage.MultiSelect_Rectangle();
}
}
break;
case (int)DisplayPicutureType.AnalyzeDataTable:
break;
case (int)DisplayPicutureType.AnalyzeDataChart:
break;
default:
break;
}
}
///
/// 取消多边形选择工具按钮事件
///
///
///
private void rbCancel_Click(object sender, EventArgs e)
{
int tabIndex = (int)(m_conditionChoose.tabIndex);
switch (tabIndex)
{
case (int)DisplayPicutureType.AnalyzeImg:
int imgDisType = m_conditionChoose.m_conditionData.GetComboDownListIndexByItemName(OTS_REPORT_PROP_GRID_ITEMS.IMAGE_DISPLAY_TYPE);
if (imgDisType == 0)
{
if (im_Control_DrawDistrbutionImageAndBSE != null)
{
//分布图
im_Control_DrawDistrbutionImageAndBSE.DeselectAllParticle();
}
}
else
{
if (im_Control_DrawDistrbutionSortImage != null)
{
im_Control_DrawDistrbutionSortImage.DeselectAllParticle();
}
}
break;
case (int)DisplayPicutureType.AnalyzeDataTable:
break;
case (int)DisplayPicutureType.AnalyzeDataChart:
break;
default:
break;
}
}
static OTSImageDisHelp ReportFun;
public RptConfigFile RptConfigFile { get => m_RptConfigFile; set => m_RptConfigFile = value; }
///
/// 二次采集按钮
///
///
///
private void rbReMeasure_Click(object sender, EventArgs e)
{
if (ReportFun == null)
{
//resultFile = m_rstDataMgr.CurResultFile;
ReportFun = new OTSImageDisHelp(m_rstDataMgr.CurResultFile);
}
//二次测量参数页面
frmReMeasure frmReMeasure = new frmReMeasure(ReportFun, this);
frmReMeasure.ShowDialog();
}
#endregion
#region 自定义封装相关方法
///
/// 新建一个工作区域
///
public void CreateNewWorkspaceWindow()
{
//创建测量数据窗口
CreateCTablesWindow();
//Show BSE图窗口
CreateSampleWindow();
//创建图表窗口
CreateChartsWindow();
m_OutputNlog.Show(DockWindowPanel, OTS.WinFormsUI.Docking.DockState.DockRight);
m_OutputNlog.Visible = true;
m_RstWindow.Show(DockWindowPanel, OTS.WinFormsUI.Docking.DockState.DockLeft);
m_conditionChoose.Show(DockWindowPanel);
DockWindowPanel.DockLeftPortion = 300;
DockWindowPanel.DockRightPortion = 351;
}
///
/// 创建新的窗体
///
///
///
///
private OTS.WinFormsUI.Docking.DockContent CreateNewDocument(OTS.WinFormsUI.Docking.DockContent WorkWindow, DisplayPicutureType iType)
{
string text = "";
if (iType == DisplayPicutureType.AnalyzeImg)
{
text = table["analysisdiagram"].ToString(); ;
}
else if (iType == DisplayPicutureType.AnalyzeDataTable)
{
text = table["analysisdatasheet"].ToString();
}
else if (iType == DisplayPicutureType.AnalyzeDataChart)
{
text = table["analysisdatachart"].ToString();
}
WorkWindow.Text = text;
return WorkWindow;
}
///
/// 创建样品BSE图窗口
///
public void CreateSampleWindow()
{
if (null == m_SImageWindow)
{
m_SImageWindow = new frmSampleImage(this);
}
m_SImageWindow = (frmSampleImage)CreateNewDocument(m_SImageWindow, DisplayPicutureType.AnalyzeImg);
if (DockWindowPanel.DocumentStyle == DocumentStyle.SystemMdi)
{
m_SImageWindow.MdiParent = this;
m_SImageWindow.Show();
}
else
{
m_SImageWindow.Show(DockWindowPanel);
}
}
///
/// 创建Grid表格窗体
///
private void CreateCTablesWindow()
{
if (null == m_TablesWindow)
{
m_TablesWindow = new frmTables(this);
}
m_TablesWindow = (frmTables)CreateNewDocument(m_TablesWindow, DisplayPicutureType.AnalyzeDataTable);
if (DockWindowPanel.DocumentStyle == DocumentStyle.SystemMdi)
{
m_TablesWindow.MdiParent = this;
m_TablesWindow.Show();
}
else
{
m_TablesWindow.Show(DockWindowPanel);
}
}
///
/// 创建chart图表窗体
///
private void CreateChartsWindow()
{
if (null == m_ChartsWindow)
{
m_ChartsWindow = new frmCharts(this);
}
m_ChartsWindow = (frmCharts)CreateNewDocument(m_ChartsWindow, DisplayPicutureType.AnalyzeDataChart);
if (DockWindowPanel.DocumentStyle == DocumentStyle.SystemMdi)
{
m_ChartsWindow.MdiParent = this;
m_ChartsWindow.Show();
}
else
{
m_ChartsWindow.Show(DockWindowPanel);
}
}
///
/// 新建样品时提示保存样品信息Messagebox
///
///
public int ShowSaveInfoMsgBox()
{
//是否保存修改信息,保存样品信息提示
int iRev = (int)MessageBox.Show("Save modification information", "Tips", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Warning);
if (iRev == (int)DialogResult.Yes)
{
return (int)MessageBoxRev.DIALOG_YES;
}
else if (iRev == (int)DialogResult.No)
{
return (int)MessageBoxRev.DIALOG_NO;
}
else
{
return (int)MessageBoxRev.DIALOG_CANCEL;
}
}
#endregion
#region 系统菜单相关功能
private void ribbonOrbMenuItem4_Click(object sender, EventArgs e)
{
MemoryManagementClass.FlushMemory();
//系统菜单,输出
OTSReport_Export oe = new OTSReport_Export(this,true);
oe.ShowDialog();
oe.Dispose();
oe = null;
MemoryManagementClass.FlushMemory();
}
private void frmReportApp_FormClosed(object sender, FormClosedEventArgs e)
{
//string strDBpathGB =m_DataMgrFun. resultFilesList[0].FilePath + "\\" + "ReportGBDB.db";
//File.Delete(strDBpathGB);
Process.GetCurrentProcess().Kill();
this.Hide();//打开EChar图后,回收浏览器资源暂卡,为达到操作流畅性,先隐藏窗体再回收资源
this.Invoke(new Action(() =>
{
if (Cef.IsInitialized)
Cef.Shutdown();
}));
}
#endregion
private void dpbOpen_Click(object sender, EventArgs e)
{
OpenProFile();
}
///
/// 打开报告项目工程文件,封装方法
///
///
private bool OpenProFile()
{
OpenFileDialog openFileDialog = new OpenFileDialog();
openFileDialog.Filter = "Measure Project Files((*.prj)|*.prj";
openFileDialog.ValidateNames = true;
openFileDialog.CheckPathExists = true;
openFileDialog.CheckFileExists = true;
openFileDialog.Multiselect = false;
if (openFileDialog.ShowDialog() == DialogResult.OK)
{
string strFilePath = System.IO.Path.GetDirectoryName(openFileDialog.FileName);
System.IO.DirectoryInfo folder = new System.IO.DirectoryInfo(strFilePath);
foreach (System.IO.DirectoryInfo directory in folder.GetDirectories())
{
foreach (System.IO.FileInfo file in directory.GetFiles("*.rst"))
{
this.m_RstWindow.AddSampleResult(file.FullName);
}
}
return true;
}
else return false;
}
private void frmReportApp_FormClosing(object sender, FormClosingEventArgs e)
{
}
private void ribbonOrbMenuItem_Extremum_Click(object sender, EventArgs e)
{
try
{
System.Diagnostics.Process p = System.Diagnostics.Process.Start(".\\OTSExtremum.exe");
p.WaitForExit();
}
catch (Exception ex)
{
log.Error("OTSExtremum:" + ex.ToString());
}
}
private void rbHelp_Click(object sender, EventArgs e)
{
Help help = new Help();
help.ShowDialog();
}
protected override void DefWndProc(ref Message m)
{
switch (m.Msg)
{
case LogMsgID:
m_LogMsg = new PostLogMsg();
m_LogMsg = (PostLogMsg)Marshal.PtrToStructure(m.LParam, typeof(PostLogMsg));
var log = NLog.LogManager.GetCurrentClassLogger();
string s = GetString(m_LogMsg.logMessage);
switch (m_LogMsg.logLevel)
{
case 1:
log.Trace(s);
break;
case 2:
log.Debug(s);
break;
case 3:
log.Info(s);
break;
case 4:
log.Warn(s);
break;
case 5:
log.Error(s);
break;
case 6:
log.Fatal(s);
break;
}
break;
default:
base.DefWndProc(ref m);
break;
}
}
private string GetString(char[] csStr)
{
int ilen = csStr.Length;
string csName = new string(csStr); //MSTMsg.STMSampleStu.cSName
csName.IndexOf('\0');
csName = csName.Substring(0, csName.IndexOf('\0'));
return csName;
}
private void Backup_Click(object sender, EventArgs e)
{
//OTSImageDisHelp m_ReportFun = null;
//public OTSImageDisHelp ReportFun { get => m_ReportFun; set => m_ReportFun = value; }
//var ReportFun = new OTSImageDisHelp(m_rstDataMgr.CurResultFile);
if (BackupDatabase())
{
MessageBox.Show("Backup succeeded");
}
else
{
MessageBox.Show("Backup failed");
}
}
private bool BackupDatabase()
{
//创建备份数据库文件夹
string sourcePath = m_rstDataMgr.CurResultFile.FilePath + "\\FIELD_FILES\\Inclusion.db";//源文件路径
string sourceName = "Inclusion.db";//源文件名称
string folderPath = m_rstDataMgr.CurResultFile.FilePath + "\\FIELD_FILES\\Backups";//目标文件夹
string Fields = "";
for (int i = 1; i < 201; i++)
{
if (System.IO.Directory.Exists(folderPath + i.ToString()))
{
Fields = folderPath + i.ToString();
continue;
}
else
{
System.IO.Directory.CreateDirectory(folderPath + i.ToString());
Fields = folderPath + i.ToString();
break;
}
}
if (Fields == "")
{
return false;
}
//复制数据库文件
string targetPath = Path.Combine(Fields, sourceName);
FileInfo file = new FileInfo(sourcePath);
if (file.Exists)
{
file.CopyTo(targetPath, true);
}
return true;
}
private void ribbonOrbMenuItem_InclusionsTraceability_Click(object sender, EventArgs e)
{
string sou = m_conditionChoose.m_CurrentConditions[OTS_REPORT_PROP_GRID_ITEMS.DATA_SOURCE].itemDisplayVal.ToString();
if(sou.Contains("+"))
{
MessageBox.Show("This function does not support multiple samples!");
return;
}
int index = m_conditionChoose.m_conditionData.GetComboDownListIndexByItemName(OTSSampleReportInfo.OTS_REPORT_PROP_GRID_ITEMS.DATA_SOURCE);
try
{
System.Diagnostics.Process p = System.Diagnostics.Process.Start(".\\OTSInclusionsTraceability.exe", "\""+ m_rstDataMgr.ResultFilesList[index].FilePath+ "\"");
p.WaitForExit();
}
catch (Exception ex)
{
log.Error("InclusionsTraceability :" + ex.ToString());
}
}
private void rbClose_Click(object sender, EventArgs e)
{
m_RstWindow. RemoveSample();
}
private void rbClose_DoubleClick(object sender, EventArgs e)
{
}
private void ribbonOrbMenuItem_purity_Click(object sender, EventArgs e)
{
string sou = m_conditionChoose.m_CurrentConditions[OTS_REPORT_PROP_GRID_ITEMS.DATA_SOURCE].itemDisplayVal.ToString();
if (sou.Contains("+"))
{
MessageBox.Show("This function does not support multiple samples!");
return;
}
try
{
_1_UI.GBCalculate.Purity purity = new _1_UI.GBCalculate.Purity(this);
purity.Show();
}
catch (Exception ex)
{
log.Error("purity:" + ex.ToString());
MessageBox.Show("purity启动失败!");
}
}
private void dpbTemplateEditing_Click(object sender, EventArgs e)
{
MemoryManagementClass.FlushMemory();
//系统菜单,输出
OTSReport_Export oe = new OTSReport_Export(this, false);
oe.ShowDialog();
oe.Dispose();
oe = null;
MemoryManagementClass.FlushMemory();
}
private void toolTip1_Popup(object sender, PopupEventArgs e)
{
}
private void DockWindowPanel_ActiveContentChanged(object sender, EventArgs e)
{
}
}
}