void edit_onMapSelected(object sender, frmEditTuningPackage.MapSelectedEventArgs e) { // user double clicked on a symbol in the edit tuning packages window... // start two mapviewers // ONE SHOULD BE ABLE TO EDIT THE DATA AND ALTER THE CONTENT OF THE TUNING PACKAGE StartTableViewer(e.Mapname); byte[] data = ConvertTuningPackageDataToByteArray(e.Data); StartTableViewerFromTuningPackage(e.Mapname, data, e.Filename); }
private void File_EditTuningPackage(object sender, ItemClickEventArgs e) { if (tunpackeditWindow != null) { frmInfoBox info = new frmInfoBox("You have another tuning package edit window open, please close that first"); return; } OpenFileDialog ofd = new OpenFileDialog(); ofd.Filter = "Trionic 7 packages|*.t7p"; ofd.Multiselect = false; char[] sep = new char[1]; sep.SetValue(',', 0); SymbolCollection scToImport = new SymbolCollection(); System.Data.DataTable dt = new System.Data.DataTable(); dt.Columns.Add("Map"); dt.Columns.Add("Length"); dt.Columns.Add("Data"); if (ofd.ShowDialog() == DialogResult.OK) { //TODO: create a list of maps to import .. maybe? using (StreamReader sr = new StreamReader(ofd.FileName)) { string line = string.Empty; SymbolHelper sh_Import = new SymbolHelper(); while ((line = sr.ReadLine()) != null) { if (line.StartsWith("symbol=")) { // sh_Import = new SymbolHelper(); sh_Import.Varname = line.Replace("symbol=", ""); } else if (line.StartsWith("length=")) { sh_Import.Length = Convert.ToInt32(line.Replace("length=", "")); } else if (line.StartsWith("data=")) { // try { string dataBytes = line.Replace("data=", ""); // split using ',' string[] bytesInStrings = dataBytes.Split(sep); byte[] dataToInsert = new byte[sh_Import.Length]; for (int t = 0; t < sh_Import.Length; t++) { byte b = Convert.ToByte(bytesInStrings[t], 16); dataToInsert.SetValue(b, t); } int addressInFile = (int)GetSymbolAddress(m_symbols, sh_Import.Varname); if (addressInFile > 0) { //savedatatobinary(addressInFile, sh_Import.Length, dataToInsert, m_currentfile, true); // add successful dt.Rows.Add(sh_Import.Varname, sh_Import.Length.ToString(), dataBytes); } else { // add failure dt.Rows.Add(sh_Import.Varname, sh_Import.Length.ToString(), dataBytes); } } catch (Exception E) { // add failure dt.Rows.Add(sh_Import.Varname, sh_Import.Length.ToString(), ""); logger.Debug(E.Message); } } } } tunpackeditWindow = new frmEditTuningPackage(); tunpackeditWindow.FormClosed += new FormClosedEventHandler(edit_FormClosed); tunpackeditWindow.onMapSelected += new frmEditTuningPackage.MapSelected(edit_onMapSelected); tunpackeditWindow.SetFilename(ofd.FileName); tunpackeditWindow.SetDataTable(dt); tunpackeditWindow.Show(); } }
void edit_FormClosed(object sender, FormClosedEventArgs e) { if (sender is frmEditTuningPackage) { frmEditTuningPackage edit = (frmEditTuningPackage)sender; if (edit.WriteData) { // save the package again with altered settings probably. logger.Debug("We should write the tuning package here!"); SaveFileDialog sfd = new SaveFileDialog(); sfd.Filter = "Trionic 7 packages|*.t7p"; if (sfd.ShowDialog() == DialogResult.OK) { System.Data.DataTable dt = edit.GetDataTable(); SymbolCollection scToExport = new SymbolCollection(); foreach (DataRow dr in dt.Rows) { SymbolHelper sh = new SymbolHelper(); sh.Varname = dr["Map"].ToString(); sh.Currentdata = ConvertTuningPackageDataToByteArray(dr["Data"].ToString()); sh.Flash_start_address = GetSymbolAddress(m_symbols, sh.Varname); sh.Userdescription = GetUserDescription(m_symbols, sh.Varname); sh.Length = GetSymbolLength(m_symbols, sh.Varname); scToExport.Add(sh); } PackageExporter pe = new PackageExporter(); if (IsSoftwareOpen()) { pe.AddressOffset = GetOpenFileOffset(); } pe.ExportPackage(scToExport, m_currentfile, sfd.FileName); } } } tunpackeditWindow = null; }