Example #1
0
        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");
        }
Example #2
0
 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();
 }
Example #3
0
        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));
        }
Example #4
0
        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;
        }
Example #5
0
        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);
        }