/// <summary> /// Remove logger entry from DataGridView, /// </summary> /// <param name="tag">logger entry.</param> public void RemoveLoggerEntry(TagData tag) { if (m_entryDic.ContainsKey(tag.ToShortString())) { if (!m_entryDic[tag.ToShortString()].IsLoaded) m_logCount--; string path = tag.M_path; m_entryDic[tag.ToShortString()].ClearPoint(); m_zCnt.GraphPane.CurveList.Remove(m_entryDic[tag.ToShortString()].CurrentLineItem); m_zCnt.GraphPane.CurveList.Remove(m_entryDic[tag.ToShortString()].TmpLineItem); m_entryDic.Remove(tag.ToShortString()); UpdateGraphCallBack dlg = new UpdateGraphCallBack(UpdateGraph); this.Invoke(dlg, new object[] { true }); } if (m_tagDic.ContainsKey(tag.ToShortString())) m_tagDic.Remove(tag.ToShortString()); }
/// <summary> /// Add the simulation data and redraw the points. /// </summary> /// <param name="maxAxis">max axis of x.</param> /// <param name="nextTime">current time of simulation.</param> /// <param name="data">the simulation data.</param> /// <param name="isLoaded">the flag whether this log is loaded.</param> public void AddPoints(double maxAxis, double nextTime, List<LogData> data, bool isLoaded) { bool isAxis = false; if (!isLoaded && m_logCount <= 0) return; if (m_zCnt.GraphPane.IsZoomed) { if (m_current > m_zCnt.GraphPane.XAxis.Scale.Max || nextTime < m_zCnt.GraphPane.XAxis.Scale.Min) { m_current = nextTime; return; } } else { if (nextTime > m_zCnt.GraphPane.XAxis.Scale.Max) { if (nextTime > m_zCnt.GraphPane.XAxis.Scale.Max * TracerWindow.s_duple) { m_zCnt.GraphPane.XAxis.Scale.Max = maxAxis; foreach (string key in m_entryDic.Keys) { if (m_entryDic[key].IsLoaded) continue; m_entryDic[key].ClearPoint(); } } else { m_zCnt.GraphPane.XAxis.Scale.Max = maxAxis; foreach (string key in m_entryDic.Keys) { if (m_entryDic[key].IsLoaded) continue; m_entryDic[key].ThinPoints(); } } isAxis = true; } } m_current = nextTime; if (data == null) return; foreach (LogData d in data) { string file = ""; if (d.FileName != null) file = d.FileName; string p; if (!d.type.Equals(EcellObject.SYSTEM)) { p = d.type + ":" + d.key + ":" + d.propName + ":" + file; } else { string pre, post; int ind = d.key.LastIndexOf('/'); if (d.key.Equals("/")) { pre = ""; post = "/"; } else { if (ind == 0) { pre = "/"; } else { pre = d.key.Substring(0, ind); } post = d.key.Substring(ind + 1); } p = d.type + ":" + pre + ":" + post + ":" + d.propName + ":" + file; } if (!m_entryDic.ContainsKey(p)) continue; if (m_entryDic[p].IsLoaded != d.IsLoaded) continue; bool isRet = m_entryDic[p].AddPoint(d.logValueList, m_zCnt.GraphPane.XAxis.Scale.Max, m_zCnt.GraphPane.XAxis.Scale.Min, m_zCnt.GraphPane.YAxis.Scale.Max, m_zCnt.GraphPane.YAxis.Scale.Min, m_zCnt.GraphPane.IsZoomed); if (isAxis == false) { isAxis = isRet; } } // Zoom���Ɏ��̕ύX����Ȃ��悤���� if (m_zCnt.GraphPane.IsZoomed) isAxis = false; if (isAxis == true) { // �ϓ������Ȃ��g���[�X�ł͓_���������ɂȂ��Ă��܂����߁A // �ϓ��̏�Ԃ�m�F��Line.IsSmooth�v���p�e�B��true�ɕύX����B // �S�f�[�^��ύX���Ȃ��̂́ADrosophila�̂悤�ɐU�����Ă���ꍇ�� // Smooth�𗘗p����ƕE���������Ă��܂����߂Ɏg�p�ł��Ȃ������B foreach (string key in m_entryDic.Keys) { if (m_entryDic[key].IsLoaded) continue; if (m_isLog) continue; if (m_entryDic[key].CurrentLineItem.Line.IsSmooth) continue; if (m_zCnt.GraphPane.IsZoomed) continue; if (!m_entryDic[key].IsSmoothing(m_zCnt.GraphPane.XAxis.Scale.Max, m_zCnt.GraphPane.XAxis.Scale.Min, m_zCnt.GraphPane.YAxis.Scale.Max, m_zCnt.GraphPane.YAxis.Scale.Min, m_zCnt.Width, m_zCnt.Height)) { m_entryDic[key].CurrentLineItem.Line.IsSmooth = true; m_entryDic[key].TmpLineItem.Line.IsSmooth = true; } else { m_entryDic[key].CurrentLineItem.Line.IsSmooth = false; m_entryDic[key].TmpLineItem.Line.IsSmooth = false; } } } UpdateGraphCallBack dlg = new UpdateGraphCallBack(UpdateGraph); this.Invoke(dlg, new object[] { isAxis }); }