pull/3/head
dl2alf 2020-03-15 15:29:02 +01:00
rodzic c1b5b7b82e
commit 51cbeabd7b
23 zmienionych plików z 403 dodań i 213 usunięć

Wyświetl plik

@ -78,6 +78,7 @@
</Target>
<Import Project="..\packages\ILMerge.MSBuild.Task.1.0.7\build\ILMerge.MSBuild.Task.targets" Condition="Exists('..\packages\ILMerge.MSBuild.Task.1.0.7\build\ILMerge.MSBuild.Task.targets')" />
<PropertyGroup>
<PostBuildEvent>copy $(ProjectDir)\$(OutDir)\ILMerge\*$(TargetExt) $(SolutionDir)\Airscout\$(OutDir) /y</PostBuildEvent>
<PostBuildEvent>mkdir $(SolutionDir)\Airscout\$(OutDir)\Plugin\
copy $(ProjectDir)\$(OutDir)\ILMerge\*$(TargetExt) $(SolutionDir)\Airscout\$(OutDir)\Plugin\ /y</PostBuildEvent>
</PropertyGroup>
</Project>

Wyświetl plik

@ -78,6 +78,7 @@
</Target>
<Import Project="..\packages\ILMerge.MSBuild.Task.1.0.7\build\ILMerge.MSBuild.Task.targets" Condition="Exists('..\packages\ILMerge.MSBuild.Task.1.0.7\build\ILMerge.MSBuild.Task.targets')" />
<PropertyGroup>
<PostBuildEvent>copy Z:\CSharp\AirScout\AirScout\AirScout.PlaneFeeds.Plugin.OpenSky\bin\Debug\ILMerge\*.dll Z:\CSharp\AirScout\AirScout\AirScout\bin\Debug\ /Y</PostBuildEvent>
<PostBuildEvent>mkdir $(SolutionDir)\Airscout\$(OutDir)\Plugin\
copy $(ProjectDir)\$(OutDir)\ILMerge\*$(TargetExt) $(SolutionDir)\Airscout\$(OutDir)\Plugin\ /y</PostBuildEvent>
</PropertyGroup>
</Project>

Wyświetl plik

@ -78,6 +78,7 @@
</Target>
<Import Project="..\packages\ILMerge.MSBuild.Task.1.0.7\build\ILMerge.MSBuild.Task.targets" Condition="Exists('..\packages\ILMerge.MSBuild.Task.1.0.7\build\ILMerge.MSBuild.Task.targets')" />
<PropertyGroup>
<PostBuildEvent>copy $(ProjectDir)\$(OutDir)\ILMerge\*$(TargetExt) $(SolutionDir)\Airscout\$(OutDir) /y</PostBuildEvent>
<PostBuildEvent>mkdir $(SolutionDir)\Airscout\$(OutDir)\Plugin\
copy $(ProjectDir)\$(OutDir)\ILMerge\*$(TargetExt) $(SolutionDir)\Airscout\$(OutDir)\Plugin\ /y</PostBuildEvent>
</PropertyGroup>
</Project>

Wyświetl plik

@ -158,12 +158,13 @@ namespace AirScout.PlaneFeeds.Plugin.PlaneFinder
{
using (StreamWriter sw = new StreamWriter(File.Create(filename)))
{
XmlSerializer s = new XmlSerializer(this.GetType(), overrides);
XmlSerializer s = new XmlSerializer(this.GetType(), overrides,null,new XmlRootAttribute(),"");
s.Serialize(sw, this);
}
}
catch (Exception ex)
{
Console.WriteLine("[" + this.GetType().Name + "]: Cannot save settings to " + filename + ", " + ex.ToString());
throw new InvalidOperationException("[" + this.GetType().Name + "]: Cannot save settings to " + filename + ", " + ex.Message);
}
}

Wyświetl plik

@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
// Sie können alle Werte angeben oder Standardwerte für die Build- und Revisionsnummern verwenden,
// indem Sie "*" wie unten gezeigt eingeben:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.3.0.0")]
[assembly: AssemblyFileVersion("1.3.0.0")]
[assembly: AssemblyVersion("1.3.1.1")]
[assembly: AssemblyFileVersion("1.3.1.1")]

Wyświetl plik

@ -78,6 +78,7 @@
</Target>
<Import Project="..\packages\ILMerge.MSBuild.Task.1.0.7\build\ILMerge.MSBuild.Task.targets" Condition="Exists('..\packages\ILMerge.MSBuild.Task.1.0.7\build\ILMerge.MSBuild.Task.targets')" />
<PropertyGroup>
<PostBuildEvent>copy $(ProjectDir)\$(OutDir)\ILMerge\*$(TargetExt) $(SolutionDir)\Airscout\$(OutDir) /y</PostBuildEvent>
<PostBuildEvent>mkdir $(SolutionDir)\Airscout\$(OutDir)\Plugin\
copy $(ProjectDir)\$(OutDir)\ILMerge\*$(TargetExt) $(SolutionDir)\Airscout\$(OutDir)\Plugin\ /y</PostBuildEvent>
</PropertyGroup>
</Project>

Wyświetl plik

@ -84,6 +84,7 @@
</Target>
<Import Project="..\packages\ILMerge.MSBuild.Task.1.0.7\build\ILMerge.MSBuild.Task.targets" Condition="Exists('..\packages\ILMerge.MSBuild.Task.1.0.7\build\ILMerge.MSBuild.Task.targets')" />
<PropertyGroup>
<PostBuildEvent>copy $(ProjectDir)\$(OutDir)\ILMerge\*$(TargetExt) $(SolutionDir)\Airscout\$(OutDir) /y</PostBuildEvent>
<PostBuildEvent>mkdir $(SolutionDir)\Airscout\$(OutDir)\Plugin\
copy $(ProjectDir)\$(OutDir)\ILMerge\*$(TargetExt) $(SolutionDir)\Airscout\$(OutDir)\Plugin\ /y</PostBuildEvent>
</PropertyGroup>
</Project>

Wyświetl plik

@ -77,7 +77,8 @@
<Error Condition="!Exists('..\packages\ILMerge.MSBuild.Task.1.0.7\build\ILMerge.MSBuild.Task.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\ILMerge.MSBuild.Task.1.0.7\build\ILMerge.MSBuild.Task.targets'))" />
</Target>
<PropertyGroup>
<PostBuildEvent>copy $(ProjectDir)\$(OutDir)\ILMerge\*$(TargetExt) $(SolutionDir)\Airscout\$(OutDir) /y</PostBuildEvent>
<PostBuildEvent>mkdir $(SolutionDir)\Airscout\$(OutDir)\Plugin\
copy $(ProjectDir)\$(OutDir)\ILMerge\*$(TargetExt) $(SolutionDir)\Airscout\$(OutDir)\Plugin\ /y</PostBuildEvent>
</PropertyGroup>
<Import Project="..\packages\ILMerge.MSBuild.Task.1.0.7\build\ILMerge.MSBuild.Task.targets" Condition="Exists('..\packages\ILMerge.MSBuild.Task.1.0.7\build\ILMerge.MSBuild.Task.targets')" />
</Project>

Wyświetl plik

@ -81,8 +81,6 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AirScout.PlaneFeeds.Plugin.
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AirScout.PlaneFeeds.Plugin.RB24", "AirScout.PlaneFeeds.Plugin.RB24\AirScout.PlaneFeeds.Plugin.RB24.csproj", "{D953C82D-5881-4F5C-8335-1C54114BE28B}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AirScout_Cleanup", "AirScout_Cleanup\AirScout_Cleanup.csproj", "{4DDDB65C-0E40-4A69-8775-5B4152C3196D}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AirScout.PlaneFeeds.Plugin.OpenSky", "AirScout.PlaneFeeds.Plugin.OpenSky\AirScout.PlaneFeeds.Plugin.OpenSky.csproj", "{23F584DB-EB5E-452D-B49F-7C1CABB713FF}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AirScout.PlaneFeeds.Plugin.PlaneFinder", "AirScout.PlaneFeeds.Plugin.PlaneFinder\AirScout.PlaneFeeds.Plugin.PlaneFinder.csproj", "{DB85E98A-E209-49D0-B6CF-6CDD5B8E20E3}"
@ -537,18 +535,6 @@ Global
{D953C82D-5881-4F5C-8335-1C54114BE28B}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{D953C82D-5881-4F5C-8335-1C54114BE28B}.Release|x86.ActiveCfg = Release|Any CPU
{D953C82D-5881-4F5C-8335-1C54114BE28B}.Release|x86.Build.0 = Release|Any CPU
{4DDDB65C-0E40-4A69-8775-5B4152C3196D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{4DDDB65C-0E40-4A69-8775-5B4152C3196D}.Debug|Any CPU.Build.0 = Debug|Any CPU
{4DDDB65C-0E40-4A69-8775-5B4152C3196D}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{4DDDB65C-0E40-4A69-8775-5B4152C3196D}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{4DDDB65C-0E40-4A69-8775-5B4152C3196D}.Debug|x86.ActiveCfg = Debug|Any CPU
{4DDDB65C-0E40-4A69-8775-5B4152C3196D}.Debug|x86.Build.0 = Debug|Any CPU
{4DDDB65C-0E40-4A69-8775-5B4152C3196D}.Release|Any CPU.ActiveCfg = Release|Any CPU
{4DDDB65C-0E40-4A69-8775-5B4152C3196D}.Release|Any CPU.Build.0 = Release|Any CPU
{4DDDB65C-0E40-4A69-8775-5B4152C3196D}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{4DDDB65C-0E40-4A69-8775-5B4152C3196D}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{4DDDB65C-0E40-4A69-8775-5B4152C3196D}.Release|x86.ActiveCfg = Release|Any CPU
{4DDDB65C-0E40-4A69-8775-5B4152C3196D}.Release|x86.Build.0 = Release|Any CPU
{23F584DB-EB5E-452D-B49F-7C1CABB713FF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{23F584DB-EB5E-452D-B49F-7C1CABB713FF}.Debug|Any CPU.Build.0 = Debug|Any CPU
{23F584DB-EB5E-452D-B49F-7C1CABB713FF}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU

Wyświetl plik

@ -149,7 +149,7 @@ namespace AirScout
// elevation polar chart
pm_Elevation_Polar.PlotType = PlotType.Polar;
pm_Elevation_Polar.Title = String.Empty;
pm_Elevation_Polar.DefaultFontSize = 6F;
pm_Elevation_Polar.DefaultFontSize = (double)Properties.Settings.Default.Charts_FontSize;
pv_Elevation_Polar.BackColor = Color.White;
pv_Elevation_Polar.Dock = DockStyle.Fill;
pv_Elevation_Polar.Model = pm_Elevation_Polar;
@ -187,7 +187,7 @@ namespace AirScout
pv_Elevation_Cartesian.Dock = DockStyle.Fill;
pv_Elevation_Cartesian.Model = pm_Elevation_Cartesian;
pm_Elevation_Cartesian.Title = String.Empty;
pm_Elevation_Cartesian.DefaultFontSize = 6F;
pm_Elevation_Cartesian.DefaultFontSize = (double)Properties.Settings.Default.Charts_FontSize;
// add axes
pm_Elevation_Cartesian.Axes.Clear();
// add x-axis
@ -215,7 +215,7 @@ namespace AirScout
// distance polar chart
pm_Distance_Polar.PlotType = PlotType.Polar;
pm_Distance_Polar.Title = String.Empty;
pm_Distance_Polar.DefaultFontSize = 6F;
pm_Distance_Polar.DefaultFontSize = (double)Properties.Settings.Default.Charts_FontSize;
pv_Distance_Polar.BackColor = Color.White;
pv_Distance_Polar.Dock = DockStyle.Fill;
pv_Distance_Polar.Model = pm_Distance_Polar;
@ -253,7 +253,7 @@ namespace AirScout
pv_Distance_Cartesian.Dock = DockStyle.Fill;
pv_Distance_Cartesian.Model = pm_Distance_Cartesian;
pm_Distance_Cartesian.Title = String.Empty;
pm_Distance_Cartesian.DefaultFontSize = 6F;
pm_Distance_Cartesian.DefaultFontSize = (double)Properties.Settings.Default.Charts_FontSize;
// add axes
pm_Distance_Cartesian.Axes.Clear();
// add x-axis
@ -359,15 +359,17 @@ namespace AirScout
horizon.Clear();
}
private void DrawHorizonPoint(int azimuth, HorizonPoint hp)
private void DrawHorizonPoint(int azimuth, HorizonPoint hp, bool closing = false)
{
Elevation_Polar_Series.Points.Add(new DataPoint(hp.Epsmin / Math.PI * 180.0, azimuth));
pm_Elevation_Polar.InvalidatePlot(true);
Elevation_Cartesian_Series.Points.Add(new DataPoint(azimuth, hp.Epsmin / Math.PI * 180.0));
if (!closing)
Elevation_Cartesian_Series.Points.Add(new DataPoint(azimuth, hp.Epsmin / Math.PI * 180.0));
pm_Elevation_Cartesian.InvalidatePlot(true);
Distance_Polar_Series.Points.Add(new DataPoint(hp.Dist, azimuth));
pm_Distance_Polar.InvalidatePlot(true);
Distance_Cartesian_Series.Points.Add(new DataPoint(azimuth, hp.Dist));
if (!closing)
Distance_Cartesian_Series.Points.Add(new DataPoint(azimuth, hp.Dist));
pm_Distance_Cartesian.InvalidatePlot(true);
LatLon.GPoint gp = LatLon.DestinationPoint(Location.Lat, Location.Lon, azimuth, hp.Dist);
PointLatLng p = new PointLatLng(gp.Lat, gp.Lon);
@ -451,8 +453,8 @@ namespace AirScout
{
DrawHorizonPoint(j, Horizon.Horizon[j]);
}
// draw first point again to close the circle
DrawHorizonPoint(0, Horizon.Horizon[0]);
// draw first point again to close the circle in polar modes
DrawHorizonPoint(0, Horizon.Horizon[0],true);
}
// enable radio buttons
btn_Horizon_Calculate.Enabled = true;

Wyświetl plik

@ -731,7 +731,7 @@ namespace AirScout
string filespec = "AirScout.PlaneFeeds.Plugin.*.dll";
// first copy plugins from application directory to plugin directory if they not exist or newer
CopyPlugins(AppDirectory, PluginDirectory, filespec);
CopyPlugins(Path.Combine(AppDirectory,"Plugin"), PluginDirectory, filespec);
// check for new plugins on the web resource
try
@ -1158,8 +1158,6 @@ namespace AirScout
CheckSettings();
// reset topmost state
SplashDlg.TopMost = false;
// must have internet connection on FirstRun
CheckInternet();
/*
// run database updater once for basic information
bw_DatabaseUpdater.RunWorkerAsync(UPDATERSTARTOPTIONS.FIRSTRUN);
@ -1168,6 +1166,8 @@ namespace AirScout
Application.DoEvents();
*/
SplashDlg.Close();
// must have internet connection on FirstRun
CheckInternet();
// show FirstRunWizard
try
{
@ -1826,7 +1826,7 @@ namespace AirScout
{
// propagation path chart
pm_Path.Title = String.Empty;
pm_Path.DefaultFontSize = 6F;
pm_Path.DefaultFontSize = (double)Properties.Settings.Default.Charts_FontSize;
pm_Path.IsLegendVisible = false;
pv_Path.BackColor = Color.White;
pv_Path.Model = pm_Path;
@ -1894,7 +1894,7 @@ namespace AirScout
// zoomed elevation chart
pm_Elevation.Title = String.Empty;
pm_Elevation.DefaultFontSize = 6F;
pm_Elevation.DefaultFontSize = (double)Properties.Settings.Default.Charts_FontSize;
pm_Elevation.IsLegendVisible = false;
pv_Elevation.BackColor = Color.White;
pv_Elevation.Model = pm_Elevation;
@ -1936,7 +1936,7 @@ namespace AirScout
// spectrum chart
pm_Spectrum.Title = String.Empty;
pm_Spectrum.DefaultFontSize = 6F;
pm_Spectrum.DefaultFontSize = (double)Properties.Settings.Default.Charts_FontSize;
pv_Spectrum.BackColor = Color.White;
pv_Spectrum.Model = pm_Spectrum;
// add Spectrum series
@ -2063,132 +2063,139 @@ namespace AirScout
private void SaveUserSettings()
{
Log.WriteMessage("Saving configuration...");
Properties.Settings.Default.Save();
if (!SupportFunctions.IsMono)
return;
Console.WriteLine("Creating XML document...");
XmlDocument doc = new XmlDocument();
XmlDeclaration xmlDeclaration = doc.CreateXmlDeclaration("1.0", "UTF-8", null);
XmlElement root = doc.DocumentElement;
doc.InsertBefore(xmlDeclaration, root);
XmlElement configuration = doc.CreateElement(string.Empty, "configuration", string.Empty);
doc.AppendChild(configuration);
XmlElement configsections = doc.CreateElement(string.Empty, "configSections", string.Empty);
configuration.AppendChild(configsections);
XmlElement usersettingsgroup = doc.CreateElement(string.Empty, "sectionGroup", string.Empty);
XmlAttribute usersettingsname = doc.CreateAttribute(string.Empty, "name", string.Empty);
usersettingsname.Value = "userSettings";
usersettingsgroup.Attributes.Append(usersettingsname);
XmlElement usersection = doc.CreateElement(string.Empty, "section", string.Empty);
XmlAttribute sectionname = doc.CreateAttribute(string.Empty, "name", string.Empty);
sectionname.Value = "AirScout.PlaneFeeds.Properties.Settings";
usersection.Attributes.Append(sectionname);
XmlAttribute sectiontype = doc.CreateAttribute(string.Empty, "type", string.Empty);
sectiontype.Value = "System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089";
usersection.Attributes.Append(sectiontype);
XmlAttribute sectionallowexedefinition = doc.CreateAttribute(string.Empty, "allowExeDefinition", string.Empty);
sectionallowexedefinition.Value = "MachineToLocalUser";
usersection.Attributes.Append(sectionallowexedefinition);
XmlAttribute sectionrequirepermission = doc.CreateAttribute(string.Empty, "requirePermission", string.Empty);
sectionrequirepermission.Value = "false";
usersection.Attributes.Append(sectionrequirepermission);
usersettingsgroup.AppendChild(usersection);
configsections.AppendChild(usersettingsgroup);
XmlElement usersettings = doc.CreateElement(string.Empty, "userSettings", string.Empty);
configuration.AppendChild(usersettings);
Console.WriteLine("Writing user settings...");
// append AirScout.PlaneFeeds properties
Console.WriteLine("Appending AirScout.PlaneFeeds.Properties.Settings.Default node...");
XmlElement planefeedproperties = doc.CreateElement(string.Empty, AirScout.PlaneFeeds.Properties.Settings.Default.ToString(), string.Empty);
usersettings.AppendChild(planefeedproperties);
foreach (SettingsPropertyValue p in AirScout.PlaneFeeds.Properties.Settings.Default.PropertyValues)
try
{
if ((p != null) && (p.Name != null) && (p.PropertyValue != null) && !p.UsingDefaultValue)
Log.WriteMessage("Saving configuration...");
Properties.Settings.Default.Save();
if (!SupportFunctions.IsMono)
return;
Console.WriteLine("Creating XML document...");
XmlDocument doc = new XmlDocument();
XmlDeclaration xmlDeclaration = doc.CreateXmlDeclaration("1.0", "UTF-8", null);
XmlElement root = doc.DocumentElement;
doc.InsertBefore(xmlDeclaration, root);
XmlElement configuration = doc.CreateElement(string.Empty, "configuration", string.Empty);
doc.AppendChild(configuration);
XmlElement configsections = doc.CreateElement(string.Empty, "configSections", string.Empty);
configuration.AppendChild(configsections);
XmlElement usersettingsgroup = doc.CreateElement(string.Empty, "sectionGroup", string.Empty);
XmlAttribute usersettingsname = doc.CreateAttribute(string.Empty, "name", string.Empty);
usersettingsname.Value = "userSettings";
usersettingsgroup.Attributes.Append(usersettingsname);
XmlElement usersection = doc.CreateElement(string.Empty, "section", string.Empty);
XmlAttribute sectionname = doc.CreateAttribute(string.Empty, "name", string.Empty);
sectionname.Value = "AirScout.PlaneFeeds.Properties.Settings";
usersection.Attributes.Append(sectionname);
XmlAttribute sectiontype = doc.CreateAttribute(string.Empty, "type", string.Empty);
sectiontype.Value = "System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089";
usersection.Attributes.Append(sectiontype);
XmlAttribute sectionallowexedefinition = doc.CreateAttribute(string.Empty, "allowExeDefinition", string.Empty);
sectionallowexedefinition.Value = "MachineToLocalUser";
usersection.Attributes.Append(sectionallowexedefinition);
XmlAttribute sectionrequirepermission = doc.CreateAttribute(string.Empty, "requirePermission", string.Empty);
sectionrequirepermission.Value = "false";
usersection.Attributes.Append(sectionrequirepermission);
usersettingsgroup.AppendChild(usersection);
configsections.AppendChild(usersettingsgroup);
XmlElement usersettings = doc.CreateElement(string.Empty, "userSettings", string.Empty);
configuration.AppendChild(usersettings);
Console.WriteLine("Writing user settings...");
// append AirScout.PlaneFeeds properties
Console.WriteLine("Appending AirScout.PlaneFeeds.Properties.Settings.Default node...");
XmlElement planefeedproperties = doc.CreateElement(string.Empty, AirScout.PlaneFeeds.Properties.Settings.Default.ToString(), string.Empty);
usersettings.AppendChild(planefeedproperties);
foreach (SettingsPropertyValue p in AirScout.PlaneFeeds.Properties.Settings.Default.PropertyValues)
{
// Console.WriteLine("Appending " + p.Name + " = " + p.PropertyValue.ToString());
XmlElement setting = doc.CreateElement(string.Empty, "setting", string.Empty);
XmlAttribute name = doc.CreateAttribute(string.Empty, "name", string.Empty);
name.Value = p.Name.ToString();
setting.Attributes.Append(name);
XmlAttribute serializeas = doc.CreateAttribute(string.Empty, "serializeAs", string.Empty);
serializeas.Value = p.Property.SerializeAs.ToString();
setting.Attributes.Append(serializeas);
XmlElement value = doc.CreateElement(string.Empty, "value", string.Empty);
if (p.PropertyValue != null && p.Property.SerializeAs == SettingsSerializeAs.String)
if ((p != null) && (p.Name != null) && (p.PropertyValue != null) && !p.UsingDefaultValue)
{
XmlText text = doc.CreateTextNode(p.SerializedValue.ToString());
value.AppendChild(text);
}
else
{
if (p.PropertyValue != null && p.Property.SerializeAs == SettingsSerializeAs.Xml)
// Console.WriteLine("Appending " + p.Name + " = " + p.PropertyValue.ToString());
XmlElement setting = doc.CreateElement(string.Empty, "setting", string.Empty);
XmlAttribute name = doc.CreateAttribute(string.Empty, "name", string.Empty);
name.Value = p.Name.ToString();
setting.Attributes.Append(name);
XmlAttribute serializeas = doc.CreateAttribute(string.Empty, "serializeAs", string.Empty);
serializeas.Value = p.Property.SerializeAs.ToString();
setting.Attributes.Append(serializeas);
XmlElement value = doc.CreateElement(string.Empty, "value", string.Empty);
if (p.PropertyValue != null && p.Property.SerializeAs == SettingsSerializeAs.String)
{
MemoryStream ms = new MemoryStream();
XmlWriter writer = XmlWriter.Create(ms, new XmlWriterSettings
{
NewLineOnAttributes = true,
OmitXmlDeclaration = true
});
XmlSerializer serializer = new XmlSerializer(p.PropertyValue.GetType());
serializer.Serialize(writer, p.PropertyValue);
byte[] text2 = new byte[ms.ToArray().Length - 3];
Array.Copy(ms.ToArray(), 3, text2, 0, text2.Length);
XmlText xml = doc.CreateTextNode(Encoding.UTF8.GetString(text2.ToArray<byte>()));
value.AppendChild(xml);
value.InnerXml = WebUtility.HtmlDecode(value.InnerXml);
XmlText text = doc.CreateTextNode(p.SerializedValue.ToString());
value.AppendChild(text);
}
else
{
if (p.PropertyValue != null && p.Property.SerializeAs == SettingsSerializeAs.Xml)
{
MemoryStream ms = new MemoryStream();
XmlWriter writer = XmlWriter.Create(ms, new XmlWriterSettings
{
NewLineOnAttributes = true,
OmitXmlDeclaration = true
});
XmlSerializer serializer = new XmlSerializer(p.PropertyValue.GetType());
serializer.Serialize(writer, p.PropertyValue);
byte[] text2 = new byte[ms.ToArray().Length - 3];
Array.Copy(ms.ToArray(), 3, text2, 0, text2.Length);
XmlText xml = doc.CreateTextNode(Encoding.UTF8.GetString(text2.ToArray<byte>()));
value.AppendChild(xml);
value.InnerXml = WebUtility.HtmlDecode(value.InnerXml);
}
}
setting.AppendChild(value);
planefeedproperties.AppendChild(setting);
}
setting.AppendChild(value);
planefeedproperties.AppendChild(setting);
}
// append AirScout properties
Console.WriteLine("Appending AirScout.Properties.Settings.Default node...");
XmlElement properties = doc.CreateElement(string.Empty, Properties.Settings.Default.ToString(), string.Empty);
usersettings.AppendChild(properties);
foreach (SettingsPropertyValue p in Properties.Settings.Default.PropertyValues)
{
if ((p != null) && (p.Name != null) && (p.PropertyValue != null) && !p.UsingDefaultValue)
{
// Console.WriteLine("Appending " + p.Name + " = " + p.PropertyValue.ToString();
XmlElement setting = doc.CreateElement(string.Empty, "setting", string.Empty);
XmlAttribute name = doc.CreateAttribute(string.Empty, "name", string.Empty);
name.Value = p.Name.ToString();
setting.Attributes.Append(name);
XmlAttribute serializeas = doc.CreateAttribute(string.Empty, "serializeAs", string.Empty);
serializeas.Value = p.Property.SerializeAs.ToString();
setting.Attributes.Append(serializeas);
XmlElement value = doc.CreateElement(string.Empty, "value", string.Empty);
if (p.PropertyValue != null && p.Property.SerializeAs == SettingsSerializeAs.String)
{
XmlText text = doc.CreateTextNode(p.SerializedValue.ToString());
value.AppendChild(text);
}
else
{
if (p.PropertyValue != null && p.Property.SerializeAs == SettingsSerializeAs.Xml)
{
MemoryStream ms = new MemoryStream();
XmlWriter writer = XmlWriter.Create(ms, new XmlWriterSettings
{
NewLineOnAttributes = true,
OmitXmlDeclaration = true
});
XmlSerializer serializer = new XmlSerializer(p.PropertyValue.GetType());
serializer.Serialize(writer, p.PropertyValue);
byte[] text2 = new byte[ms.ToArray().Length - 3];
Array.Copy(ms.ToArray(), 3, text2, 0, text2.Length);
XmlText xml = doc.CreateTextNode(Encoding.UTF8.GetString(text2.ToArray<byte>()));
value.AppendChild(xml);
value.InnerXml = WebUtility.HtmlDecode(value.InnerXml);
}
}
setting.AppendChild(value);
properties.AppendChild(setting);
}
}
doc.Save(GetUserSettingsPath());
}
// append AirScout properties
Console.WriteLine("Appending AirScout.Properties.Settings.Default node...");
XmlElement properties = doc.CreateElement(string.Empty, Properties.Settings.Default.ToString(), string.Empty);
usersettings.AppendChild(properties);
foreach (SettingsPropertyValue p in Properties.Settings.Default.PropertyValues)
catch (Exception ex)
{
if ((p != null) && (p.Name != null) && (p.PropertyValue != null) && !p.UsingDefaultValue)
{
// Console.WriteLine("Appending " + p.Name + " = " + p.PropertyValue.ToString();
XmlElement setting = doc.CreateElement(string.Empty, "setting", string.Empty);
XmlAttribute name = doc.CreateAttribute(string.Empty, "name", string.Empty);
name.Value = p.Name.ToString();
setting.Attributes.Append(name);
XmlAttribute serializeas = doc.CreateAttribute(string.Empty, "serializeAs", string.Empty);
serializeas.Value = p.Property.SerializeAs.ToString();
setting.Attributes.Append(serializeas);
XmlElement value = doc.CreateElement(string.Empty, "value", string.Empty);
if (p.PropertyValue != null && p.Property.SerializeAs == SettingsSerializeAs.String)
{
XmlText text = doc.CreateTextNode(p.SerializedValue.ToString());
value.AppendChild(text);
}
else
{
if (p.PropertyValue != null && p.Property.SerializeAs == SettingsSerializeAs.Xml)
{
MemoryStream ms = new MemoryStream();
XmlWriter writer = XmlWriter.Create(ms, new XmlWriterSettings
{
NewLineOnAttributes = true,
OmitXmlDeclaration = true
});
XmlSerializer serializer = new XmlSerializer(p.PropertyValue.GetType());
serializer.Serialize(writer, p.PropertyValue);
byte[] text2 = new byte[ms.ToArray().Length - 3];
Array.Copy(ms.ToArray(), 3, text2, 0, text2.Length);
XmlText xml = doc.CreateTextNode(Encoding.UTF8.GetString(text2.ToArray<byte>()));
value.AppendChild(xml);
value.InnerXml = WebUtility.HtmlDecode(value.InnerXml);
}
}
setting.AppendChild(value);
properties.AppendChild(setting);
}
Console.WriteLine("Unable to save settings: " + ex.ToString());
}
doc.Save(GetUserSettingsPath());
}
#endregion
@ -2197,9 +2204,6 @@ namespace AirScout
private void OnIdle(object sender, EventArgs args)
{
// enable/disable watchlist button
if (btn_Control_Manage_Watchlist.Enabled == Properties.Settings.Default.Watchlist_SyncWithKST)
btn_Control_Manage_Watchlist.Enabled = !Properties.Settings.Default.Watchlist_SyncWithKST;
}
#endregion
@ -2813,6 +2817,10 @@ namespace AirScout
Say("Options");
if (Dlg.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
// enbale/disable manage watchlist button
btn_Control_Manage_Watchlist.Enabled = !Properties.Settings.Default.Watchlist_SyncWithKST;
// Re-initialze charts
InitializeCharts();
// clear paths cache assuming that new options were set
ElevationPaths.Clear();
PropagationPaths.Clear();
@ -2837,18 +2845,6 @@ namespace AirScout
bw_PlaneFeed2 = null;
bw_PlaneFeed3 = null;
/*
foreach (PlaneFeed feed in PlaneFeeds)
{
if (Properties.Settings.Default.Planes_PlaneFeed1 == feed.Name)
bw_PlaneFeed1 = feed;
if (Properties.Settings.Default.Planes_PlaneFeed2 == feed.Name)
bw_PlaneFeed2 = feed;
if (Properties.Settings.Default.Planes_PlaneFeed3 == feed.Name)
bw_PlaneFeed3 = feed;
}
*/
if (PlaneFeedPlugins != null)
{
foreach (IPlaneFeedPlugin plugin in PlaneFeedPlugins)
@ -4030,6 +4026,7 @@ namespace AirScout
// update listview
lv_Control_Watchlist.BeginUpdate();
lv_Control_Watchlist.Items.Clear();
Properties.Settings.Default.Watchlist.Sort();
// run twice, add checked items first, then all others
foreach (WatchlistItem item in Properties.Settings.Default.Watchlist)
{
@ -4143,6 +4140,7 @@ namespace AirScout
if (item.Overlay == gmo_Callsigns)
{
string call = (string)item.Tag;
// check if callsign clicked and not own callsign
if (Callsign.Check(call) && (call != Properties.Settings.Default.MyCall))
{
if (PathMode == AIRSCOUTPATHMODE.MULTI)
@ -4160,6 +4158,24 @@ namespace AirScout
UpdatePaths();
}
}
else if (PathMode == AIRSCOUTPATHMODE.SINGLE)
{
// search call on watchlist
int index = Properties.Settings.Default.Watchlist.IndexOf(call);
if (index >= 0)
{
string loc = Properties.Settings.Default.Watchlist.ElementAt(index).Loc;
// get location info from database
LocationDesignator ld = LocationFindOrCreate(call, loc);
Properties.Settings.Default.DXCall = ld.Call;
Properties.Settings.Default.DXLat = ld.Lat;
Properties.Settings.Default.DXLon = ld.Lon;
UpdateStatus();
// update paths if running
if (PlayMode == AIRSCOUTPLAYMODE.FORWARD)
UpdatePaths();
}
}
}
}
// check if plane clicked
@ -4635,6 +4651,9 @@ namespace AirScout
private void tp_Control_Multi_Enter(object sender, EventArgs e)
{
// enbale/disable manage watchlist button
btn_Control_Manage_Watchlist.Enabled = !Properties.Settings.Default.Watchlist_SyncWithKST;
if (PathMode != AIRSCOUTPATHMODE.MULTI)
{
PathMode = AIRSCOUTPATHMODE.MULTI;
@ -5876,13 +5895,14 @@ namespace AirScout
{
Stopwatch st = new Stopwatch();
st.Start();
// mark all watchlist items to remove
// mark all watchlist items to remove wich are not currently tracked
foreach (WatchlistItem item in Properties.Settings.Default.Watchlist)
{
// nasty!! Should never be null!
if (item == null)
continue;
item.Remove = true;
if (!item.Checked)
item.Remove = true;
}
// split message
string[] a = msg.Data.Split(',');

Wyświetl plik

@ -125,7 +125,7 @@
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAACc
DQAAAk1TRnQBSQFMAgEBAwEAAWgBCwFoAQsBIAEAASABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo
DQAAAk1TRnQBSQFMAgEBAwEAAXABCwFwAQsBIAEAASABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo
AwABgAMAASADAAEBAQABCAYAARAYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA
AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5
AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA
@ -340,7 +340,7 @@
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAACM
DAAAAk1TRnQBSQFMAwEBAAHQAQkB0AEJASABAAEgAQAE/wEJAQAI/wFCAU0BNgEEBgABNgEEAgABKAMA
DAAAAk1TRnQBSQFMAwEBAAHYAQkB2AEJASABAAEgAQAE/wEJAQAI/wFCAU0BNgEEBgABNgEEAgABKAMA
AYADAAEgAwABAQEAAQgGAAEQGAABgAIAAYADAAKAAQABgAMAAYABAAGAAQACgAIAA8ABAAHAAdwBwAEA
AfABygGmAQABMwUAATMBAAEzAQABMwEAAjMCAAMWAQADHAEAAyIBAAMpAQADVQEAA00BAANCAQADOQEA
AYABfAH/AQACUAH/AQABkwEAAdYBAAH/AewBzAEAAcYB1gHvAQAB1gLnAQABkAGpAa0CAAH/ATMDAAFm

Wyświetl plik

@ -422,6 +422,9 @@
this.bw_SRTM1_MapUpdater = new System.ComponentModel.BackgroundWorker();
this.bw_GLOBE_MapUpdater = new System.ComponentModel.BackgroundWorker();
this.bw_StationDataUpdater = new System.ComponentModel.BackgroundWorker();
this.groupBox37 = new System.Windows.Forms.GroupBox();
this.ud_Options_Charts_FontSize = new System.Windows.Forms.NumericUpDown();
this.label34 = new System.Windows.Forms.Label();
((System.ComponentModel.ISupportInitialize)(this.pb_Donate)).BeginInit();
this.tab_Options_Planes.SuspendLayout();
this.groupBox48.SuspendLayout();
@ -492,6 +495,8 @@
this.groupBox28.SuspendLayout();
this.tab_Options_Info.SuspendLayout();
this.ss_Options.SuspendLayout();
this.groupBox37.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.ud_Options_Charts_FontSize)).BeginInit();
this.SuspendLayout();
//
// btn_Options_OK
@ -1802,6 +1807,7 @@
// tab_Options_Map
//
this.tab_Options_Map.BackColor = System.Drawing.SystemColors.Control;
this.tab_Options_Map.Controls.Add(this.groupBox37);
this.tab_Options_Map.Controls.Add(this.groupBox39);
this.tab_Options_Map.Controls.Add(this.groupBox23);
this.tab_Options_Map.Controls.Add(this.groupBox30);
@ -1945,9 +1951,9 @@
this.groupBox30.Controls.Add(this.label81);
this.groupBox30.Controls.Add(this.label80);
this.groupBox30.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic))), System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.groupBox30.Location = new System.Drawing.Point(446, 301);
this.groupBox30.Location = new System.Drawing.Point(424, 301);
this.groupBox30.Name = "groupBox30";
this.groupBox30.Size = new System.Drawing.Size(211, 154);
this.groupBox30.Size = new System.Drawing.Size(233, 154);
this.groupBox30.TabIndex = 6;
this.groupBox30.TabStop = false;
this.groupBox30.Text = "Plane Icon Sizes per Category";
@ -2074,7 +2080,7 @@
this.groupBox7.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic))), System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.groupBox7.Location = new System.Drawing.Point(14, 301);
this.groupBox7.Name = "groupBox7";
this.groupBox7.Size = new System.Drawing.Size(415, 154);
this.groupBox7.Size = new System.Drawing.Size(394, 154);
this.groupBox7.TabIndex = 5;
this.groupBox7.TabStop = false;
this.groupBox7.Text = "Info Window Elements";
@ -2086,7 +2092,7 @@
this.groupBox29.Controls.Add(this.label75);
this.groupBox29.Location = new System.Drawing.Point(256, 19);
this.groupBox29.Name = "groupBox29";
this.groupBox29.Size = new System.Drawing.Size(139, 123);
this.groupBox29.Size = new System.Drawing.Size(129, 123);
this.groupBox29.TabIndex = 19;
this.groupBox29.TabStop = false;
//
@ -2277,7 +2283,7 @@
this.groupBox22.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic))), System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.groupBox22.Location = new System.Drawing.Point(13, 226);
this.groupBox22.Name = "groupBox22";
this.groupBox22.Size = new System.Drawing.Size(644, 69);
this.groupBox22.Size = new System.Drawing.Size(395, 69);
this.groupBox22.TabIndex = 4;
this.groupBox22.TabStop = false;
this.groupBox22.Text = "Info Window Options";
@ -2324,7 +2330,7 @@
// btn_Options_SelectFont
//
this.btn_Options_SelectFont.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.btn_Options_SelectFont.Location = new System.Drawing.Point(514, 37);
this.btn_Options_SelectFont.Location = new System.Drawing.Point(280, 37);
this.btn_Options_SelectFont.Name = "btn_Options_SelectFont";
this.btn_Options_SelectFont.Size = new System.Drawing.Size(106, 23);
this.btn_Options_SelectFont.TabIndex = 2;
@ -2349,7 +2355,7 @@
this.tb_Options_Map_ToolTipFont.Location = new System.Drawing.Point(72, 39);
this.tb_Options_Map_ToolTipFont.Name = "tb_Options_Map_ToolTipFont";
this.tb_Options_Map_ToolTipFont.ReadOnly = true;
this.tb_Options_Map_ToolTipFont.Size = new System.Drawing.Size(417, 20);
this.tb_Options_Map_ToolTipFont.Size = new System.Drawing.Size(179, 20);
this.tb_Options_Map_ToolTipFont.TabIndex = 0;
this.tb_Options_Map_ToolTipFont.Text = global::AirScout.Properties.Settings.Default.Map_ToolTipFont;
//
@ -5339,6 +5345,48 @@
this.bw_StationDataUpdater.ProgressChanged += new System.ComponentModel.ProgressChangedEventHandler(this.bw_StationDataUpdater_ProgressChanged);
this.bw_StationDataUpdater.RunWorkerCompleted += new System.ComponentModel.RunWorkerCompletedEventHandler(this.bw_StationDataUpdater_RunWorkerCompleted);
//
// groupBox37
//
this.groupBox37.Controls.Add(this.label34);
this.groupBox37.Controls.Add(this.ud_Options_Charts_FontSize);
this.groupBox37.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic))), System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.groupBox37.Location = new System.Drawing.Point(415, 227);
this.groupBox37.Name = "groupBox37";
this.groupBox37.Size = new System.Drawing.Size(242, 68);
this.groupBox37.TabIndex = 9;
this.groupBox37.TabStop = false;
this.groupBox37.Text = "Chart Window Options";
//
// ud_Options_Charts_FontSize
//
this.ud_Options_Charts_FontSize.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::AirScout.Properties.Settings.Default, "Charts_FontSize", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.ud_Options_Charts_FontSize.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.ud_Options_Charts_FontSize.Location = new System.Drawing.Point(184, 39);
this.ud_Options_Charts_FontSize.Maximum = new decimal(new int[] {
16,
0,
0,
0});
this.ud_Options_Charts_FontSize.Minimum = new decimal(new int[] {
6,
0,
0,
0});
this.ud_Options_Charts_FontSize.Name = "ud_Options_Charts_FontSize";
this.ud_Options_Charts_FontSize.Size = new System.Drawing.Size(45, 22);
this.ud_Options_Charts_FontSize.TabIndex = 0;
this.ud_Options_Charts_FontSize.Value = global::AirScout.Properties.Settings.Default.Charts_FontSize;
//
// label34
//
this.label34.AutoSize = true;
this.label34.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.label34.Location = new System.Drawing.Point(7, 41);
this.label34.Name = "label34";
this.label34.Size = new System.Drawing.Size(174, 13);
this.label34.TabIndex = 2;
this.label34.Text = "Font Size for Axes in Diagrams etc.:";
//
// OptionsDlg
//
this.AcceptButton = this.btn_Options_OK;
@ -5470,6 +5518,9 @@
this.tab_Options_Info.PerformLayout();
this.ss_Options.ResumeLayout(false);
this.ss_Options.PerformLayout();
this.groupBox37.ResumeLayout(false);
this.groupBox37.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.ud_Options_Charts_FontSize)).EndInit();
this.ResumeLayout(false);
this.PerformLayout();
@ -5869,5 +5920,8 @@
private System.Windows.Forms.Button btn_Options_PlaneFeed2_Default;
private System.Windows.Forms.Button btn_Options_PlaneFeed1_Default;
private System.Windows.Forms.CheckBox cb_Options_Map_LabelCalls;
private System.Windows.Forms.GroupBox groupBox37;
private System.Windows.Forms.Label label34;
private System.Windows.Forms.NumericUpDown ud_Options_Charts_FontSize;
}
}

Wyświetl plik

@ -1694,7 +1694,14 @@ namespace AirScout
ID = ID + "," + DateTime.UtcNow.ToString("u");
ID = ID + "," + System.Security.Principal.WindowsIdentity.GetCurrent().Name;
feed.DisclaimerAccepted = ID;
feed.SaveSettings();
try
{
feed.SaveSettings();
}
catch (Exception ex)
{
Log.WriteMessage(ex.ToString());
}
}
else
{
@ -1740,7 +1747,14 @@ namespace AirScout
ID = ID + "," + DateTime.UtcNow.ToString("u");
ID = ID + "," + System.Security.Principal.WindowsIdentity.GetCurrent().Name;
feed.DisclaimerAccepted = ID;
feed.SaveSettings();
try
{
feed.SaveSettings();
}
catch (Exception ex)
{
Log.WriteMessage(ex.ToString());
}
}
else
{
@ -1786,7 +1800,14 @@ namespace AirScout
ID = ID + "," + DateTime.UtcNow.ToString("u");
ID = ID + "," + System.Security.Principal.WindowsIdentity.GetCurrent().Name;
feed.DisclaimerAccepted = ID;
feed.SaveSettings();
try
{
feed.SaveSettings();
}
catch (Exception ex)
{
Log.WriteMessage(ex.ToString());
}
}
else
{

Wyświetl plik

@ -1,4 +1,5 @@
using System;
using System.Runtime.InteropServices;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
@ -8,6 +9,11 @@ namespace AirScout
{
static class Program
{
[DllImport("kernel32.dll")]
static extern bool AttachConsole(int dwProcessId);
private const int ATTACH_PARENT_PROCESS = -1;
// Mutex to ensure that only one instance is running
static System.Threading.Mutex singleton = new Mutex(true, Application.ProductName);
/// <summary>
@ -25,12 +31,21 @@ namespace AirScout
}
else
*/
try
{
// redirect console output to parent process;
// must be before any calls to Console.WriteLine()
// this will crash on Linux/Mono for sure --> handle exception
AttachConsole(ATTACH_PARENT_PROCESS);
}
catch (Exception ex)
{
// do nothing
}
// run program normally
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new MapDlg());
}
}
}
}

Wyświetl plik

@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
// Sie können alle Werte angeben oder die standardmäßigen Build- und Revisionsnummern
// übernehmen, indem Sie "*" eingeben:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.3.1.0")]
[assembly: AssemblyFileVersion("1.3.1.0")]
[assembly: AssemblyVersion("1.3.2.0")]
[assembly: AssemblyFileVersion("1.3.2.0")]

Wyświetl plik

@ -1536,7 +1536,7 @@ namespace AirScout.Properties {
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("False")]
[global::System.Configuration.DefaultSettingValueAttribute("True")]
public bool Watchlist_SyncWithKST {
get {
return ((bool)(this["Watchlist_SyncWithKST"]));
@ -2232,5 +2232,17 @@ Digital data base on the World Wide Web (URL: http://www.ngdc.noaa.gov/mgg/topo/
this["Map_LabelCalls"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("6")]
public decimal Charts_FontSize {
get {
return ((decimal)(this["Charts_FontSize"]));
}
set {
this["Charts_FontSize"] = value;
}
}
}
}

Wyświetl plik

@ -381,7 +381,7 @@
<Value Profile="(Default)">http://www.airscout.eu</Value>
</Setting>
<Setting Name="Watchlist_SyncWithKST" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
<Value Profile="(Default)">True</Value>
</Setting>
<Setting Name="Watchlist_Activated" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">True</Value>
@ -586,5 +586,8 @@ MEaSUREs data and products are available at no charge from the LP DAAC.See https
<Setting Name="Map_LabelCalls" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">True</Value>
</Setting>
<Setting Name="Charts_FontSize" Type="System.Decimal" Scope="User">
<Value Profile="(Default)">6</Value>
</Setting>
</Settings>
</SettingsFile>

Wyświetl plik

@ -209,3 +209,14 @@ Initial Version
- Feature: New web feed from OpenSky Network implenented (a free community)
- Bugfix: AirScout crashed when the "Info" tab in the "Options" dialog box is opened twice after doing some other stuff --> fixed (tnx G0LGS)
2020-xx-xx: V1.3.2.0
====================
- Bugfix: Several limitations on Windows XP, program crashes while opening Options Dialog, users cannot save plane feed settings --> fixed (tnx OK1TEH)
- Feature: Users can click on the watchlist markers on the map to change path immediately in SINGLE mode (tnx GM4JTJ)
- Feature: Change font size in charts via "Options/Map" (tnx LZ2ZP)
- Bugfix: Radio Horizon shows an unwanted strike through in Cartesian diagram --> fixed (tnx LZ2ZP)
- Feature: Redirect console output, users can run AirScout from a command line and see all console output for debugging (like on Linux)
- Bugfix: Watchlist was not properly sorted when synchronized with wtKST --> fixed
- Bugfix: "Orphan paths" when watchlist synchronized with wtKST and user leaves the chat --> fixed, call is kept on watchlist now as long as it is selected

Wyświetl plik

@ -8,7 +8,7 @@ namespace AirScout
/// <summary>
/// Holds the watchlist item
/// </summary>
public class WatchlistItem
public class WatchlistItem : IComparable<WatchlistItem>
{
public string Call { get; set; }
public string Loc { get; set; }
@ -28,7 +28,7 @@ namespace AirScout
}
public WatchlistItem(string call, string loc, bool oor) : this(call, loc, oor, false, false) { }
public WatchlistItem(string call, string loc, bool oor, bool check, bool selected )
public WatchlistItem(string call, string loc, bool oor, bool check, bool selected)
{
Call = call;
Loc = loc;
@ -38,13 +38,25 @@ namespace AirScout
Remove = false;
}
}
public int CompareTo(WatchlistItem other)
{
// If other is not a valid object reference, this instance is greater.
if (other == null) return 1;
/// <summary>
/// Holds the watchlist, e.g. a list of watchlist items
/// </summary>
public class Watchlist : List<WatchlistItem>
{
// compare call signs first
int i = String.Compare(this.Call, other.Call);
if (i != 0)
return i;
// then compare locs when calls are equal
return String.Compare(this.Loc, other.Loc);
}
}
/// <summary>
/// Holds the watchlist, e.g. a list of watchlist items
/// </summary>
public class Watchlist : List<WatchlistItem>
{
public Watchlist()
{

Wyświetl plik

@ -385,7 +385,7 @@
<value>http://www.airscout.eu</value>
</setting>
<setting name="Watchlist_SyncWithKST" serializeAs="String">
<value>False</value>
<value>True</value>
</setting>
<setting name="Watchlist_Activated" serializeAs="String">
<value>True</value>
@ -585,6 +585,9 @@ MEaSUREs data and products are available at no charge from the LP DAAC.See https
<setting name="Map_LabelCalls" serializeAs="String">
<value>True</value>
</setting>
<setting name="Charts_FontSize" serializeAs="String">
<value>6</value>
</setting>
</AirScout.Properties.Settings>
</userSettings>
<startup>

Wyświetl plik

@ -15,6 +15,21 @@
<TargetFrameworkProfile />
<NuGetPackageImportStamp>
</NuGetPackageImportStamp>
<PublishUrl>publish\</PublishUrl>
<Install>true</Install>
<InstallFrom>Disk</InstallFrom>
<UpdateEnabled>false</UpdateEnabled>
<UpdateMode>Foreground</UpdateMode>
<UpdateInterval>7</UpdateInterval>
<UpdateIntervalUnits>Days</UpdateIntervalUnits>
<UpdatePeriodically>false</UpdatePeriodically>
<UpdateRequired>false</UpdateRequired>
<MapFileExtensions>true</MapFileExtensions>
<ApplicationRevision>0</ApplicationRevision>
<ApplicationVersion>1.0.0.%2a</ApplicationVersion>
<IsWebBootstrapper>false</IsWebBootstrapper>
<UseApplicationTrust>false</UseApplicationTrust>
<BootstrapperEnabled>true</BootstrapperEnabled>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
@ -117,6 +132,10 @@
<Project>{ee86e933-d883-4b18-80eb-0fba55ec67c6}</Project>
<Name>ScoutBase.Core</Name>
</ProjectReference>
<ProjectReference Include="..\ScoutBase\ScoutBase.Database\ScoutBase.Database.csproj">
<Project>{89E6C7A3-6064-479E-A710-37C7293CF47C}</Project>
<Name>ScoutBase.Database</Name>
</ProjectReference>
<ProjectReference Include="..\ScoutBase\ScoutBase.Elevation\ScoutBase.Elevation.csproj">
<Project>{009cabfd-726d-481f-972d-0a218e0ad9b9}</Project>
<Name>ScoutBase.Elevation</Name>
@ -126,6 +145,13 @@
<Name>SQLiteDatabase</Name>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
<Visible>False</Visible>
<ProductName>.NET Framework 3.5 SP1</ProductName>
<Install>false</Install>
</BootstrapperPackage>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<Import Project="..\packages\System.Data.SQLite.Core.1.0.112.0\build\net40\System.Data.SQLite.Core.targets" Condition="Exists('..\packages\System.Data.SQLite.Core.1.0.112.0\build\net40\System.Data.SQLite.Core.targets')" />
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
@ -134,6 +160,10 @@
</PropertyGroup>
<Error Condition="!Exists('..\packages\System.Data.SQLite.Core.1.0.112.0\build\net40\System.Data.SQLite.Core.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\System.Data.SQLite.Core.1.0.112.0\build\net40\System.Data.SQLite.Core.targets'))" />
</Target>
<PropertyGroup>
<PostBuildEvent>
</PostBuildEvent>
</PropertyGroup>
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">

Wyświetl plik

@ -373,33 +373,47 @@ namespace System.Data.SQLite
public DataTable Select (string sql)
{
DataTable dt = new DataTable();
lock (DBCommand)
try
{
DBCommand.CommandText = sql;
DBCommand.Parameters.Clear();
SQLiteDataAdapter da = new SQLiteDataAdapter(DBCommand);
da.Fill(dt);
lock (DBCommand)
{
DBCommand.CommandText = sql;
DBCommand.Parameters.Clear();
SQLiteDataAdapter da = new SQLiteDataAdapter(DBCommand);
da.Fill(dt);
}
// Linux/Mono hack --> cut column names to its right length
for (int i = 0; i < dt.Columns.Count; i++)
{
int j = 0;
while ((j < dt.Columns[i].ColumnName.Length) && (Char.IsLetter(dt.Columns[i].ColumnName[j]) || Char.IsDigit(dt.Columns[i].ColumnName[j])))
j++;
dt.Columns[i].ColumnName = dt.Columns[i].ColumnName.Substring(0, j);
Console.Write("'" + dt.Columns[i].ColumnName + "[" + dt.Columns[i].ColumnName.Length + "]', ");
}
Console.WriteLine();
}
// Linux/Mono hack --> cut column names to its right length
for (int i = 0; i < dt.Columns.Count; i++)
catch (Exception ex)
{
int j = 0;
while ((j < dt.Columns[i].ColumnName.Length) && (Char.IsLetter(dt.Columns[i].ColumnName[j]) || Char.IsDigit(dt.Columns[i].ColumnName[j])))
j++;
dt.Columns[i].ColumnName = dt.Columns[i].ColumnName.Substring(0, j);
Console.Write("'" + dt.Columns[i].ColumnName + "[" + dt.Columns[i].ColumnName.Length + "]', ");
Console.WriteLine("SQLiteDatabase.Select: fatal error while executing command <" + sql + ">\n\n" + ex.ToString());
}
Console.WriteLine();
return dt;
}
public DataTable Select (SQLiteCommand cmd)
{
DataTable dt = new DataTable();
lock (cmd)
try
{
SQLiteDataAdapter da = new SQLiteDataAdapter(cmd);
da.Fill(dt);
lock (cmd)
{
SQLiteDataAdapter da = new SQLiteDataAdapter(cmd);
da.Fill(dt);
}
}
catch (Exception ex)
{
Console.WriteLine("SQLiteDatabase.Select: fatal error while executing command <" + cmd.CommandText + ">\n\n" + ex.ToString());
}
return dt;
}