public static Signal loadSignal() { //file dialog Microsoft.Win32.OpenFileDialog dialog = new Microsoft.Win32.OpenFileDialog(); dialog.Filter = dialog.Filter = "csv file (.csv)|*.csv"; //if file was readed if (dialog.ShowDialog() == true) { Signal resultSignal = new Signal(); //read all text string signalString = File.ReadAllText(dialog.FileName); //split csv string[] signalArray = signalString.Split(','); /*content = titleName + "," + chartAreaName + "," + seriesName + "," + title + "," + xTitle + "," + yTitle + "," + regExpMatchString + "," + regExpParseString;*/ //title resultSignal.title.Text = DecodeFrom64(signalArray[3]); resultSignal.title.Name = DecodeFrom64(signalArray[0]); //chartArea resultSignal.chartArea.Name = DecodeFrom64(signalArray[1]); resultSignal.chartArea.AxisX.Title = DecodeFrom64(signalArray[4]); resultSignal.chartArea.AxisY.Title = DecodeFrom64(signalArray[5]); //regExp resultSignal.updateRegExpParse(DecodeFrom64(signalArray[7])); resultSignal.updateRegExpMatch(DecodeFrom64(signalArray[6])); //series resultSignal.series.Name = DecodeFrom64(signalArray[2]); //color resultSignal.lineColor = DecodeFrom64(signalArray[8]); //read values for (int i = 9; i < signalArray.Length; i++) { double valueDouble = double.Parse(signalArray[i], CultureInfo.InvariantCulture); resultSignal.series.Points.AddY(valueDouble); } //return signal return resultSignal; } else { return null; } }
public static string saveSignal(Signal sig) { Microsoft.Win32.SaveFileDialog dialog = new Microsoft.Win32.SaveFileDialog(); dialog.Filter = dialog.Filter = "csv file (.csv)|*.csv"; //place where to save string path = ""; //replace with save dialog string content; //title stuff string title = EncodeTo64(sig.title.Text); string titleName = EncodeTo64(sig.title.Name); //chartArea string chartAreaName = EncodeTo64(sig.chartArea.Name); string xTitle = EncodeTo64(sig.chartArea.AxisX.Title); string yTitle = EncodeTo64(sig.chartArea.AxisY.Title); //regExp string regExpParseString = EncodeTo64(sig.regExpParseString); string regExpMatchString = EncodeTo64(sig.regExpMatchString); //series string seriesName = EncodeTo64(sig.series.Name); //color string lineColor = EncodeTo64(sig.lineColor); content = titleName + "," + chartAreaName + "," + seriesName + "," + title + "," + xTitle + "," + yTitle + "," + regExpMatchString + "," + regExpParseString + "," + lineColor; foreach(DataPoint value in sig.series.Points) { content += "," + value.YValues[0].ToString(CultureInfo.InvariantCulture); } //save file if dialog ok if (dialog.ShowDialog() == true) { File.WriteAllText(dialog.FileName, content); } //save in this format //<signal title:"xxx", xTitle="", yTitle"", regExpMatch"", regExpParse"", startTime Value="yyyyMMDD"> //HHMMSSxxxx, 12.32412, //delta from begining //34.123, //43.234, //56.235 //<signal/> return path; }
//edit purposes public signalWindow(Signal sig) { InitializeComponent(); textBoxTitle.Text = sig.title.Text; textBoxXTitle.Text = sig.chartArea.AxisX.Title; textBoxYTitle.Text = sig.chartArea.AxisY.Title; textBoxRegExpMatch.Text = sig.regExpMatchString; textBoxRegExpParse.Text = sig.regExpParseString; comboBoxColor.SelectedItem = sig.lineColor; }
/// <summary> /// Event function for OK button /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void buttonOK_Click(object sender, RoutedEventArgs e) { //apply values tempSignal.title.Text = textBoxTitle.Text; tempSignal.chartArea.AxisX.Title = textBoxXTitle.Text; tempSignal.chartArea.AxisY.Title = textBoxYTitle.Text; tempSignal.lineColor = comboBoxColor.SelectedItem as string; if (tempSignal.updateRegExpMatch(textBoxRegExpMatch.Text)) //match fail { MessageBox.Show("Regular Expression match pattern error!"); textBoxRegExpMatch.Focus(); } else if (tempSignal.updateRegExpParse(textBoxRegExpParse.Text)) //parse fail { MessageBox.Show("Regular Expression parse pattern error!"); textBoxRegExpParse.Focus(); } else //all ok { //all ok replace signal resultSignal = tempSignal; //close window this.Close(); } }
/// <summary> ADD PLOT SIGNAL /// </summary> private void setSignalToPlot(Signal signal) { //find if there is signal named that if (mainChart.ChartAreas.FindByName(signal.chartArea.Name) == null) //true = not found { mainChart.ChartAreas.Add(signal.chartArea); mainChart.Series.Add(signal.series); mainChart.Series[mainChart.Series.Count - 1].ChartArea = signal.chartArea.Name; mainChart.Titles.Add(signal.title); mainChart.Titles[mainChart.Titles.Count - 1].DockedToChartArea = signal.chartArea.Name; } }
/// <summary> Edit signal button /// </summary> private Signal editSignal(Signal sig) { //start dialog signalWindow signalDialog = new signalWindow(sig); signalDialog.ShowDialog(); if (signalDialog.resultSignal != null) //something was changed { //copy titles from "created" signal sig.title.Text = signalDialog.resultSignal.title.Text; sig.chartArea.AxisX.Title = signalDialog.resultSignal.chartArea.AxisX.Title; sig.chartArea.AxisY.Title = signalDialog.resultSignal.chartArea.AxisY.Title; //series sig.lineColor = signalDialog.resultSignal.lineColor; //update regexps should be ok because they are checked while creating new signal sig.updateRegExpMatch(signalDialog.resultSignal.regExpMatchString); sig.updateRegExpParse(signalDialog.resultSignal.regExpParseString); } return sig; }
/// <summary> DELETE PLOT SIGNAL /// </summary> private void deleteSignalFromPlot(Signal signal) { //remove title if (mainChart.Titles.FindByName(signal.title.Name) != null) mainChart.Titles.Remove(signal.title); else Debug.WriteLine("deletedSignalFromPlot: tried to remove non existent item" + signal.title.Name, "ERROR"); //remove series if (mainChart.Series.FindByName(signal.series.Name) != null) mainChart.Series.Remove(signal.series); else Debug.WriteLine("deletedSignalFromPlot: tried to remove non existent item" + signal.series.Name, "ERROR"); //remove chart area if (mainChart.ChartAreas.FindByName(signal.chartArea.Name) != null) mainChart.ChartAreas.Remove(signal.chartArea); else Debug.WriteLine("deletedSignalFromPlot: tried to remove non existent item" + signal.chartArea.Name, "ERROR"); }