tbf/GraphLib/PlotterGraphSelectCurvesForm.cs

370 lines
12 KiB
C#
Raw Permalink Normal View History

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();
}
}
}
}