370 lines
12 KiB
C#
370 lines
12 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.ComponentModel;
|
|
using System.Data;
|
|
using System.Drawing;
|
|
using System.Text;
|
|
using System.Windows.Forms;
|
|
|
|
|
|
/* Copyright (c) 2008-2014 DI Zimmermann Stephan (stefan.zimmermann@tele2.at)
|
|
*
|
|
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
* of this software and associated documentation files (the "Software"), to
|
|
* deal in the Software without restriction, including without limitation the
|
|
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
|
* sell copies of the Software, and to permit persons to whom the Software is
|
|
* furnished to do so, subject to the following conditions:
|
|
*
|
|
* The above copyright notice and this permission notice shall be included in
|
|
* all copies or substantial portions of the Software.
|
|
*
|
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
* THE SOFTWARE.
|
|
*/
|
|
|
|
|
|
namespace GraphLib
|
|
{
|
|
public partial class PlotterGraphSelectCurvesForm : Form
|
|
{
|
|
private int selectetGraphIndex = -1;
|
|
|
|
private PlotterGraphPaneEx gpane = null;
|
|
|
|
public PlotterGraphSelectCurvesForm()
|
|
{
|
|
InitializeComponent();
|
|
FormClosing += new FormClosingEventHandler(OnFormClosing);
|
|
lb_Graphs.SelectedIndexChanged += new EventHandler(OnSelectedGraphIndexChanged);
|
|
VisibleChanged += new EventHandler(OnVisibleChanged);
|
|
tb_GraphName.TextChanged += new EventHandler(tb_GraphName_TextChanged);
|
|
}
|
|
|
|
void tb_GraphName_TextChanged(object sender, EventArgs e)
|
|
{
|
|
if (selectetGraphIndex >= 0 && selectetGraphIndex < gpane.Sources.Count)
|
|
{
|
|
DataSource src = gpane.Sources[selectetGraphIndex];
|
|
String Text = tb_GraphName.Text;
|
|
|
|
if (String.IsNullOrEmpty(Text) == false)
|
|
{
|
|
src.Name = Text;
|
|
gpane.Invalidate();
|
|
}
|
|
}
|
|
}
|
|
|
|
public PlotterGraphPaneEx GraphPanel
|
|
{
|
|
set
|
|
{
|
|
gpane = value;
|
|
if (gpane != null)
|
|
{
|
|
this.lb_Graphs.Items.Clear();
|
|
|
|
foreach (DataSource s in gpane.Sources)
|
|
{
|
|
if (s.Active)
|
|
{
|
|
this.lb_Graphs.Items.Add(s.Name, CheckState.Checked);
|
|
}
|
|
else
|
|
{
|
|
this.lb_Graphs.Items.Add(s.Name, CheckState.Unchecked);
|
|
}
|
|
}
|
|
|
|
UpdateAllCheckedState();
|
|
}
|
|
}
|
|
}
|
|
|
|
void UpdateAllCheckedState()
|
|
{
|
|
int AutoScaleOn = 0;
|
|
|
|
foreach (DataSource src in gpane.Sources)
|
|
{
|
|
if (src.AutoScaleY)
|
|
{
|
|
AutoScaleOn++;
|
|
}
|
|
}
|
|
|
|
if (AutoScaleOn == 0)
|
|
{
|
|
btn_AutoScaleAll.Visible = true;
|
|
btn_AutoScaleAll.Text = "Auto Y-Scale all Graphs";
|
|
}
|
|
else
|
|
{
|
|
btn_AutoScaleAll.Visible = true;
|
|
btn_AutoScaleAll.Text = "Normal Y-Scale all Graphs";
|
|
}
|
|
}
|
|
|
|
void OnVisibleChanged(object sender, EventArgs e)
|
|
{
|
|
if (this.Visible == true)
|
|
{
|
|
selectetGraphIndex = -1;
|
|
gB_SelectedGraph.Visible = false;
|
|
|
|
if (gpane != null)
|
|
{
|
|
UpdateAllCheckedState();
|
|
|
|
if (gpane.layout == PlotterGraphPaneEx.LayoutMode.NORMAL)
|
|
{
|
|
cb_Layout.SelectedIndex = 0;
|
|
}
|
|
else if (gpane.layout == PlotterGraphPaneEx.LayoutMode.STACKED)
|
|
{
|
|
cb_Layout.SelectedIndex = 1;
|
|
}
|
|
else if (gpane.layout == PlotterGraphPaneEx.LayoutMode.TILES_HOR)
|
|
{
|
|
cb_Layout.SelectedIndex = 2;
|
|
}
|
|
else if (gpane.layout == PlotterGraphPaneEx.LayoutMode.TILES_VER)
|
|
{
|
|
cb_Layout.SelectedIndex = 3;
|
|
}
|
|
else if (gpane.layout == PlotterGraphPaneEx.LayoutMode.VERTICAL_ARRANGED)
|
|
{
|
|
cb_Layout.SelectedIndex = 4;
|
|
}
|
|
|
|
bt_bg_col_top.BackColor = gpane.BgndColorTop;
|
|
bt_bg_col_bot.BackColor = gpane.BgndColorBot;
|
|
bt_MajorGridColor.BackColor = gpane.MajorGridColor;
|
|
bt_MinorGridColor.BackColor = gpane.MinorGridColor;
|
|
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
void OnSelectedGraphIndexChanged(object sender, EventArgs e)
|
|
{
|
|
if (gpane != null)
|
|
{
|
|
for (int i = 0; i < gpane.Sources.Count; i++)
|
|
{
|
|
if (lb_Graphs.CheckedIndices.Contains(i))
|
|
{
|
|
gpane.Sources[i].Active = true;
|
|
}
|
|
else
|
|
{
|
|
gpane.Sources[i].Active = false;
|
|
}
|
|
}
|
|
gpane.Invalidate();
|
|
}
|
|
}
|
|
|
|
void OnFormClosing(object sender, FormClosingEventArgs e)
|
|
{
|
|
this.Hide();
|
|
e.Cancel = true;
|
|
}
|
|
|
|
private void button1_Click(object sender, EventArgs e)
|
|
{
|
|
this.Hide();
|
|
}
|
|
|
|
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
|
|
{
|
|
if (cb_Layout.SelectedIndex == 0)
|
|
{
|
|
gpane.layout = PlotterGraphPaneEx.LayoutMode.NORMAL;
|
|
}
|
|
if (cb_Layout.SelectedIndex == 1)
|
|
{
|
|
gpane.layout = PlotterGraphPaneEx.LayoutMode.STACKED;
|
|
}
|
|
|
|
if (cb_Layout.SelectedIndex == 2)
|
|
{
|
|
gpane.layout = PlotterGraphPaneEx.LayoutMode.TILES_VER;
|
|
}
|
|
if (cb_Layout.SelectedIndex == 3)
|
|
{
|
|
gpane.layout = PlotterGraphPaneEx.LayoutMode.TILES_HOR;
|
|
}
|
|
if (cb_Layout.SelectedIndex == 4)
|
|
{
|
|
gpane.layout = PlotterGraphPaneEx.LayoutMode.VERTICAL_ARRANGED;
|
|
}
|
|
gpane.Invalidate();
|
|
}
|
|
|
|
private void checkedListBox1_SelectedIndexChanged_1(object sender, EventArgs e)
|
|
{
|
|
selectetGraphIndex = lb_Graphs.SelectedIndex;
|
|
|
|
UpdateSelectedGraphInfo();
|
|
gB_SelectedGraph.Visible = true;
|
|
}
|
|
|
|
private void UpdateSelectedGraphInfo()
|
|
{
|
|
if (selectetGraphIndex >= 0 && selectetGraphIndex < gpane.Sources.Count)
|
|
{
|
|
DataSource src = gpane.Sources[selectetGraphIndex];
|
|
btn_GraphColor.BackColor = src.GraphColor;
|
|
|
|
cb_Y_AutoScale.Checked = src.AutoScaleY;
|
|
cb_X_AutoScale.Checked = src.AutoScaleX;
|
|
|
|
cbDownSampling.SelectedIndex = (src.Downsampling - 1);
|
|
tb_GraphName.Text = src.Name;
|
|
}
|
|
}
|
|
|
|
private void btn_GraphColor_Click(object sender, EventArgs e)
|
|
{
|
|
if (selectetGraphIndex >= 0 && selectetGraphIndex < gpane.Sources.Count)
|
|
{
|
|
DataSource src = gpane.Sources[selectetGraphIndex];
|
|
ColorDialog d = new ColorDialog();
|
|
if (d.ShowDialog() == DialogResult.OK)
|
|
{
|
|
btn_GraphColor.BackColor = d.Color;
|
|
src.GraphColor = d.Color;
|
|
gpane.Invalidate();
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
private void OnButtonAutoScallOnClicked(object sender, EventArgs e)
|
|
{
|
|
int AutoScaleOn = 0;
|
|
|
|
foreach (DataSource src in gpane.Sources)
|
|
{
|
|
if (src.AutoScaleY)
|
|
{
|
|
AutoScaleOn++;
|
|
}
|
|
}
|
|
|
|
if (AutoScaleOn == 0)
|
|
{
|
|
btn_AutoScaleAll.Text = "Normal scale for all graphs";
|
|
foreach (DataSource src in gpane.Sources)
|
|
{
|
|
src.AutoScaleY = true;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
btn_AutoScaleAll.Text = "Auto scale for all graphs";
|
|
foreach (DataSource src in gpane.Sources)
|
|
{
|
|
src.AutoScaleY = false;
|
|
}
|
|
}
|
|
|
|
UpdateSelectedGraphInfo();
|
|
gpane.Invalidate();
|
|
}
|
|
|
|
private void OnDownsamplingChanged(object sender, EventArgs e)
|
|
{
|
|
if (selectetGraphIndex >= 0 && selectetGraphIndex < gpane.Sources.Count)
|
|
{
|
|
DataSource src = gpane.Sources[selectetGraphIndex];
|
|
|
|
src.Downsampling = (cbDownSampling.SelectedIndex + 1);
|
|
}
|
|
|
|
gpane.Invalidate();
|
|
}
|
|
|
|
private void bt_bg_col_top_Click(object sender, EventArgs e)
|
|
{
|
|
ColorDialog d = new ColorDialog();
|
|
if (d.ShowDialog() == DialogResult.OK)
|
|
{
|
|
bt_bg_col_top.BackColor = d.Color;
|
|
gpane.BgndColorTop = d.Color;
|
|
|
|
gpane.Invalidate();
|
|
}
|
|
}
|
|
|
|
private void bt_bg_col_bot_Click(object sender, EventArgs e)
|
|
{
|
|
ColorDialog d = new ColorDialog();
|
|
if (d.ShowDialog() == DialogResult.OK)
|
|
{
|
|
bt_bg_col_bot.BackColor = d.Color;
|
|
gpane.BgndColorBot = d.Color;
|
|
gpane.Invalidate();
|
|
}
|
|
}
|
|
|
|
private void bt_MajorGridColor_Click(object sender, EventArgs e)
|
|
{
|
|
ColorDialog d = new ColorDialog();
|
|
if (d.ShowDialog() == DialogResult.OK)
|
|
{
|
|
bt_MajorGridColor.BackColor = d.Color;
|
|
gpane.MajorGridColor = d.Color;
|
|
gpane.Invalidate();
|
|
}
|
|
}
|
|
|
|
private void bt_MinorGridColor_Click(object sender, EventArgs e)
|
|
{
|
|
ColorDialog d = new ColorDialog();
|
|
if (d.ShowDialog() == DialogResult.OK)
|
|
{
|
|
bt_MinorGridColor.BackColor = d.Color;
|
|
gpane.MinorGridColor = d.Color;
|
|
gpane.Invalidate();
|
|
}
|
|
}
|
|
|
|
private void cb_Y_AutoScale_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
if (selectetGraphIndex >= 0 && selectetGraphIndex < gpane.Sources.Count)
|
|
{
|
|
DataSource src = gpane.Sources[selectetGraphIndex];
|
|
|
|
src.AutoScaleY = cb_Y_AutoScale.Checked;
|
|
|
|
UpdateAllCheckedState();
|
|
|
|
gpane.Invalidate();
|
|
}
|
|
}
|
|
|
|
private void cb_X_AutoScale_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
if (selectetGraphIndex >= 0 && selectetGraphIndex < gpane.Sources.Count)
|
|
{
|
|
DataSource src = gpane.Sources[selectetGraphIndex];
|
|
|
|
src.AutoScaleX = cb_X_AutoScale.Checked;
|
|
|
|
UpdateAllCheckedState();
|
|
|
|
gpane.Invalidate();
|
|
}
|
|
}
|
|
}
|
|
}
|