/// <summary> /// Event handler when the scale within an editor was changed /// </summary> void editor_OnStepChanged(object sender) { SignalEditor editor = sender as SignalEditor; if (editor != null && m_EditorControls.Contains(editor)) { ScaleStep = editor.StepSize; } }
/// <summary> /// Applies changes in the List to be correctly represented by editors /// </summary> private void ApplyListToControls() { int count = 0; if (m_SignalList != null) { count = m_SignalList.Count; } if (count < m_EditorControls.Count) { //remove controls for (int i = m_EditorControls.Count - 1; i >= count; i--) { SignalEditor editor = m_EditorControls[i]; editor.OnStepChanged -= editor_OnStepChanged; editor.Signal.OnSignalChanged -= SignalChangedEventHandler; m_EditorControls.RemoveAt(i); editor.Hide(); editor.Dispose(); } } if (m_EditorControls.Count < count) { //add controls for (int i = m_EditorControls.Count; i < count; i++) { SignalEditor editor = CreateEditorControl(); editor.Signal = m_SignalList[i]; editor.Signal.OnSignalChanged += new SignalChanged(SignalChangedEventHandler); m_EditorControls.Add(editor); } m_IgnoreEvent = true; m_SignalList.ForceConsistency(); m_IgnoreEvent = false; } for (int i = 0; i < m_EditorControls.Count; i++) { if (!m_EditorControls[i].Signal.Equals(m_SignalList[i])) { m_EditorControls[i].Signal.OnSignalChanged -= SignalChangedEventHandler; m_EditorControls[i].Signal = m_SignalList[i]; m_EditorControls[i].Signal.OnSignalChanged += new SignalChanged(SignalChangedEventHandler); } } }
/// <summary> /// Creates a new editor control /// </summary> /// <returns>created control</returns> private SignalEditor CreateEditorControl() { int location = 0; if (m_EditorControls.Count > 0) { SignalEditor last = m_EditorControls.Last(); location = last.Top + last.Height; } SignalEditor editor = new SignalEditor(); editor.Parent = panel; editor.BackColor = BackColor; editor.GridColor = Color.FromArgb(64, 64, 64); editor.Font = new Font(editor.Font, FontStyle.Bold); editor.StepSize = m_ScaleStep; editor.Top = location; editor.Width = panel.Width; editor.OnStepChanged += new DigitalClasses.Events.NotifyEvent(editor_OnStepChanged); return(editor); }