public void CanSerializeSampleFile() { // serialize sample ADX file from http://www.adif.org/304/ADIF_304.htm#ADX_File_Format var dataObject = new ADIFData(); dataObject.Header = new ADIFHeader(); dataObject.Header.ADIFVersion = ADIFIO.ADIFVersion; dataObject.Header.ProgramID = "monolog"; dataObject.Header.UserDefinedFields = new List <ADIFUserDefinedFieldHeader>(); dataObject.Header.UserDefinedFields.Add(new ADIFUserDefinedFieldHeader { FieldID = 1, Type = "N", Value = "EPC" }); dataObject.Header.UserDefinedFields.Add(new ADIFUserDefinedFieldHeader { FieldID = 2, Type = "E", Enum = "{S,M,L}", Value = "SWEATERSIZE" }); dataObject.Header.UserDefinedFields.Add(new ADIFUserDefinedFieldHeader { FieldID = 3, Type = "E", Range = "{5:20}", Value = "SHOESIZE" }); dataObject.Records = new List <ADIFRecord>(); var firstRecord = new ADIFRecord(); firstRecord.QSODate = "19900620"; firstRecord.TimeOn = "1523"; firstRecord.Callsign = "VK9NS"; firstRecord.Band = "20M"; firstRecord.Mode = "RTTY"; firstRecord.UserDefinedFields = new List <ADIFUserDefinedFieldRecord>(); firstRecord.UserDefinedFields.Add(new ADIFUserDefinedFieldRecord("SWEATERSIZE", "M")); firstRecord.UserDefinedFields.Add(new ADIFUserDefinedFieldRecord("SHOESIZE", "11")); firstRecord.AppDefinedFields = new List <ADIFAppDefinedFieldRecord>(); firstRecord.AppDefinedFields.Add(new ADIFAppDefinedFieldRecord("MONOLOG", "Compression", "s", "off")); var secondRecord = new ADIFRecord(); secondRecord.QSODate = "20101022"; secondRecord.TimeOn = "0111"; secondRecord.Callsign = "ON4UN"; secondRecord.Band = "40M"; secondRecord.Mode = "PSK"; secondRecord.Submode = "PSK63"; secondRecord.UserDefinedFields = new List <ADIFUserDefinedFieldRecord>(); secondRecord.UserDefinedFields.Add(new ADIFUserDefinedFieldRecord("EPC", "32123")); secondRecord.AppDefinedFields = new List <ADIFAppDefinedFieldRecord>(); secondRecord.AppDefinedFields.Add(new ADIFAppDefinedFieldRecord("MONOLOG", "COMPRESSION", "s", "off")); dataObject.Records.Add(firstRecord); dataObject.Records.Add(secondRecord); var adx = ADIFIO.ConvertToADX(dataObject); ADIFIO.SaveADXFile(dataObject, "C:\\data.xml"); }
private void loadADIF(string adifFP) { try { adifData = new ADIFData(adifFP, countryCodes); } catch (Exception e) { Trace.WriteLine("Error loading ADIF data from " + adifFP); Trace.WriteLine(e.ToString()); return; } miOpenDXCC.Enabled = true; settings.adifFP = adifFP; writeConfig(); }
public void CanSerializeHeaderAndNoRecords() { var dataObject = new ADIFData(); dataObject.Header = new ADIFHeader { ADIFVersion = ADIFIO.ADIFVersion, CreatedTimestamp = "20150118 234500", ProgramID = "Test Program", ProgramVersion = "0.1 alpha" }; dataObject.Records = new List <ADIFRecord>(); var adx = ADIFIO.ConvertToADX(dataObject); var rgx = new Regex(@"<\?xml.+\?>\s*<ADX>\s*<HEADER>[\s\S]*<\/HEADER>\s*<RECORDS \/>\s*<\/ADX>"); Assert.IsTrue(rgx.IsMatch(adx)); }
public FDXCC(ADIFData adifData) { InitializeComponent(); List <string> countries = new List <string>(); List <string> bands = new List <string>(); List <string> modes = new List <string>(); foreach (ADIFHeader ah in adifData.Keys) { if (!countries.Contains(ah.prefix)) { countries.Add(ah.prefix); } if (!bands.Contains(ah.band)) { bands.Add(ah.band); } if (!modes.Contains(ah.mode)) { modes.Add(ah.mode); } } bands.Sort(cmpBands); modes.Sort(); foreach (string mode in modes) { clbModes.Items.Add(mode, true); } foreach (string ct in DxConsts.ConfirmationTypes) { clbConfirmation.Items.Add(ct, true); } DataTable dtAdif = new DataTable(); DataColumn dcPfx = new DataColumn(); dcPfx.DataType = Type.GetType("System.String"); dcPfx.ColumnName = "prefix"; dcPfx.ReadOnly = true; dcPfx.Caption = "Prefix"; dcPfx.Unique = true; dtAdif.Columns.Add(dcPfx); Dictionary <string, ADIFState> data = new Dictionary <string, ADIFState>(); foreach (string band in bands) { DataColumn dcBand = new DataColumn(); dcBand.DataType = data.GetType(); dcBand.ColumnName = band; dcBand.ReadOnly = true; dcBand.Caption = band; dtAdif.Columns.Add(dcBand); } foreach (string prefix in countries) { DataRow row = dtAdif.NewRow(); row["prefix"] = prefix; foreach (string band in bands) { Dictionary <string, ADIFState> cellData = new Dictionary <string, ADIFState>(); foreach (ADIFHeader item in adifData.Keys.Where(x => x.prefix == prefix && x.band == band).ToList()) { cellData[item.mode] = adifData[item]; } row[band] = cellData; } dtAdif.Rows.Add(row); } dgvDXCC.DataSource = dtAdif; }
public FMain() { InitializeComponent(); bsDxData = new BindingSource(blDxData, null); dgvDxData.AutoGenerateColumns = false; dgvDxData.DataSource = bsDxData; miBands.DropDown.MouseEnter += miDropDownMouseEnter; miBands.DropDown.MouseLeave += miDropdownMouseLeave; miConfirm.DropDown.MouseEnter += miDropDownMouseEnter; miConfirm.DropDown.MouseLeave += miDropdownMouseLeave; miModes.DropDown.MouseEnter += miDropDownMouseEnter; miModes.DropDown.MouseLeave += miDropdownMouseLeave; readConfig(); if (settings.dgvDxFilterBands == null) { settings.dgvDxFilterBands = new List <SettingsListEntry>(); } if (settings.dxccModes == null) { settings.dxccModes = new List <SettingsListEntry>(); } tsbNoCfm.Checked = settings.dgvDxFilterNoCfm; if (settings.dgvDXColumnWidth != null && settings.dgvDXColumnWidth.Count == dgvDxData.Columns.Count) { for (int c = 0; c < dgvDxData.Columns.Count; c++) { dgvDxData.Columns[c].Width = settings.dgvDXColumnWidth[c]; } } else { settings.dgvDXColumnWidth = new List <int>(); for (int c = 0; c < dgvDxData.Columns.Count; c++) { settings.dgvDXColumnWidth.Add(dgvDxData.Columns[c].Width); } writeConfig(); } Trace.Listeners.Add(new TextWriterTraceListener("DxClusterClient.log")); Trace.AutoFlush = true; Trace.Indent(); Trace.WriteLine("Initialising FMain"); using (StreamReader srC = new StreamReader(Application.StartupPath + "\\cty.dat")) { string country = ""; Regex rgxCountry = new Regex(@"\s(\S+):$"); Regex rgxPfx = new Regex(@"(\(.*\))?(\[.*\])?"); do { string line = srC.ReadLine(); Match mtchCountry = rgxCountry.Match(line); if (mtchCountry.Success) { country = mtchCountry.Groups[1].Value; } else { string[] pfxs = line.TrimStart(' ').TrimEnd(';', ',').Split(','); foreach (string pfx in pfxs) { int pfxType = 0; string pfx0 = rgxPfx.Replace(pfx, ""); if (pfx0.StartsWith("=")) { pfx0 = pfx0.TrimStart('='); pfxType = 1; } if (prefixes[pfxType].ContainsKey(pfx0)) { prefixes[pfxType][pfx0] += "; " + country; System.Diagnostics.Debug.WriteLine("Type " + pfxType.ToString() + " " + pfx0 + ": " + prefixes[pfxType][pfx0]); } else { prefixes[pfxType].Add(pfx0, country); } } } } while (srC.Peek() >= 0); } Trace.WriteLine("Finished reading cty.dat"); try { using (StreamReader srM = new StreamReader(Application.StartupPath + "\\bandMap.txt")) { Regex rgxMd = new Regex(@"^(\d+\.?\d*)\s*-?(\d+\.?\d*)\s+(\S+)$"); do { string line = srM.ReadLine(); Match mtchMd = rgxMd.Match(line); if (mtchMd.Success) { modes.Add(new Diap { l = Convert.ToDouble(mtchMd.Groups[1].Value.Replace(".", CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator)), h = Convert.ToDouble(mtchMd.Groups[2].Value.Replace(".", CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator)), name = mtchMd.Groups[3].Value }); } } while (srM.Peek() >= 0); } } catch (Exception e) { Trace.WriteLine(e.ToString()); } countryCodes = ADIFData.buildCountryCodes(Application.StartupPath + "\\CountryCode.txt"); try { using (StreamReader sr = new StreamReader(Application.StartupPath + "\\lotw1.txt")) { do { string line = sr.ReadLine(); lotw1.Add(line); } while (sr.Peek() >= 0); } } catch (Exception e) { Trace.WriteLine(e.ToString()); } if (settings.adifFP != "" && File.Exists(settings.adifFP)) { loadADIF(settings.adifFP); } int co = 0; foreach (Diap band in DxConsts.Bands) { } if (settings.dxccBand == null || settings.dxccBand.Count < bandsMenuItems.Count) { settings.dxccBand = new List <SettingsListEntry>(); foreach (ToolStripMenuItem mi in bandsMenuItems.Values) { settings.dxccBand.Add(new SettingsListEntry { name = mi.Text, status = mi.Checked }); } } co = 0; foreach (string ct in DxConsts.ConfirmationTypes) { ToolStripMenuItem mi = new ToolStripMenuItem(); mi.Text = ct; mi.Checked = settings.dxccConfirm != null && settings.dxccConfirm.Count > co ? settings.dxccConfirm[co] : true; mi.CheckOnClick = true; mi.CheckedChanged += miFilterCheckedChanged; miConfirm.DropDownItems.Add(mi); confirmMenuItems[ct] = mi; co++; } if (settings.dxccConfirm == null || settings.dxccConfirm.Count < confirmMenuItems.Count) { settings.dxccConfirm = new List <bool>(); foreach (ToolStripMenuItem mi in confirmMenuItems.Values) { settings.dxccConfirm.Add(mi.Checked); } } co = 0; foreach (ToolStripMenuItem mi in new ToolStripMenuItem[] { miSelectPrefix, miSelectBand, miSelectMode }) { mi.Checked = settings.dxccSelect == co++; } foreach (Mode mode in DxConsts.Modes) { createModeMenuItem(mode, null); } foreach (Diap band in DxConsts.Bands) { createBandControls(band); } tsbDxDataBandFilterAll = new ToolStripButton(); tsbDxDataBandFilterAll.CheckOnClick = true; tsbDxDataBandFilterAll.Text = "ALL"; tsbDxDataBandFilterAll.DisplayStyle = ToolStripItemDisplayStyle.Text; tsbDxDataBandFilterAll.CheckedChanged += tsbDxDataBandFilterAllChanged; tsFilter.Items.Add(tsbDxDataBandFilterAll); }