From 9916d150a8996a2132be060d6937347f97c50a7c Mon Sep 17 00:00:00 2001 From: dl2alf Date: Mon, 30 Jan 2023 07:00:58 +0100 Subject: [PATCH] V1.4.2.0 --- AirScout.Aircrafts/AircraftDatabase.cs | 288 +- AirScout.Aircrafts/AircraftDatabaseUpdater.cs | 10 + AirScout.Aircrafts/PlaneInfoCache.cs | 13 +- AirScout.Aircrafts/PlaneInfoChecker.cs | 12 +- AirScout.CAT/CATWorker.cs | 180 +- AirScout.CAT/OmniRigX.cs | 28 +- AirScout.CAT/Properties/Settings.Designer.cs | 4 +- AirScout.CAT/Properties/Settings.settings | 2 +- AirScout.CAT/app.config | 2 +- .../AirScoutServer.cs | 16 +- .../Properties/AssemblyInfo.cs | 4 +- AirScout.PlaneFeeds.Plugin.OpenSky/OpenSky.cs | 105 +- .../Properties/AssemblyInfo.cs | 4 +- .../AirScout.PlaneFeeds.Plugin.RB24.csproj | 87 + .../Properties/AssemblyInfo.cs | 36 + .../Properties/Settings.Designer.cs | 26 + .../Properties/Settings.settings | 5 + AirScout.PlaneFeeds.Plugin.RB24/RB24.cs | 640 + AirScout.PlaneFeeds.Plugin.RB24/app.config | 105 + .../packages.config | 6 + .../Properties/AssemblyInfo.cs | 4 +- AirScout.PlaneFeeds.Plugin.RTL1090/RTL1090.cs | 29 +- ...cout.PlaneFeeds.Plugin.RadarVirtuel.csproj | 91 + .../Properties/AssemblyInfo.cs | 36 + .../Properties/Settings.Designer.cs | 26 + .../Properties/Settings.settings | 5 + .../RadarVirtuel.cs | 659 + .../app.config | 5 + .../packages.config | 6 + ...cout.PlaneFeeds.Plugin.VRSWebServer.csproj | 95 + .../AircraftJson.cs | 455 + .../AircraftListJson.cs | 125 + .../FeedJson.cs | 44 + .../Properties/AssemblyInfo.cs | 36 + .../Properties/Settings.Designer.cs | 26 + .../Properties/Settings.settings | 5 + .../TLS.cs | 282 + .../VRSWebServer.cs | 941 + .../app.config | 61 + .../packages.config | 7 + .../PlaneFeedPluginArguments.cs | 3 + AirScout.PlaneFeeds/PlaneFeed.cs | 133 +- AirScout.PlaneFeeds/PlaneFeedWorkEventArgs.cs | 4 + AirScout.sln | 40 + AirScout/AirScout - Kopie.csproj | 4077 +++ AirScout/AirScout.csproj | 3434 +++ AirScout/MapDlg.Designer.cs | 40 +- AirScout/MapDlg.cs | 823 +- AirScout/MapDlg.resx | 13 +- AirScout/OptionsDlg.Designer.cs | 3167 +-- AirScout/OptionsDlg.cs | 5 + AirScout/OptionsDlg.resx | 8 +- AirScout/Properties/AssemblyInfo.cs | 6 +- AirScout/Properties/Settings.Designer.cs | 50 +- AirScout/Properties/Settings.settings | 14 +- AirScout/VersionHistory.txt | 20 +- AirScout/Webserver.cs | 105 +- AirScout/WebserverStartArgs.cs | 13 + AirScout/app.config | 14 +- AirScout/packages.config | 1 + .../css/dataTables.bootstrap.css | 187 + .../css/dataTables.bootstrap.min.css | 1 + .../css/dataTables.bootstrap4.css | 202 + .../css/dataTables.bootstrap4.min.css | 1 + .../css/dataTables.foundation.css | 118 + .../css/dataTables.foundation.min.css | 1 + .../css/dataTables.jqueryui.css | 481 + .../css/dataTables.jqueryui.min.css | 1 + .../css/dataTables.semanticui.css | 102 + .../css/dataTables.semanticui.min.css | 1 + .../css/jquery.dataTables.css | 448 + .../css/jquery.dataTables.min.css | 1 + .../DataTables-1.10.16/images/sort_asc.png | Bin 0 -> 160 bytes .../images/sort_asc_disabled.png | Bin 0 -> 148 bytes .../DataTables-1.10.16/images/sort_both.png | Bin 0 -> 201 bytes .../DataTables-1.10.16/images/sort_desc.png | Bin 0 -> 158 bytes .../images/sort_desc_disabled.png | Bin 0 -> 146 bytes .../js/dataTables.bootstrap.js | 182 + .../js/dataTables.bootstrap.min.js | 110 + .../js/dataTables.bootstrap4.js | 184 + .../js/dataTables.bootstrap4.min.js | 112 + .../js/dataTables.foundation.js | 177 + .../js/dataTables.foundation.min.js | 109 + .../js/dataTables.jqueryui.js | 179 + .../js/dataTables.jqueryui.min.js | 91 + .../js/dataTables.semanticui.js | 208 + .../js/dataTables.semanticui.min.js | 120 + .../js/jquery.dataTables.js | 14846 +++++++++++ .../js/jquery.dataTables.min.js | 4766 ++++ .../extra-libs/DataTables/datatables.css | 216 + .../extra-libs/DataTables/datatables.js | 15043 +++++++++++ .../extra-libs/DataTables/datatables.min.css | 15 + .../extra-libs/DataTables/datatables.min.js | 4891 ++++ .../assets/extra-libs/calendar/calendar.css | 66 + .../extra-libs/gritter/jquery.gritter.css | 91 + .../extra-libs/gritter/jquery.gritter.min.js | 223 + .../multicheck/datatable-checkbox-init.js | 21 + .../multicheck/jquery.multicheck.js | 33 + .../extra-libs/multicheck/multicheck.css | 63 + .../assets/extra-libs/sparkline/sparkline.js | 2460 ++ .../assets/images/background/error-bg.jpg | Bin 0 -> 32694 bytes .../assets/images/background/img4.jpg | Bin 0 -> 100486 bytes .../assets/images/background/img5.jpg | Bin 0 -> 54216 bytes .../assets/images/background/img6.jpg | Bin 0 -> 78173 bytes .../dashboard/assets/images/big/img1.jpg | Bin 0 -> 145591 bytes .../dashboard/assets/images/big/img2.jpg | Bin 0 -> 69177 bytes .../dashboard/assets/images/big/img3.jpg | Bin 0 -> 101629 bytes .../dashboard/assets/images/big/img4.jpg | Bin 0 -> 100486 bytes .../dashboard/assets/images/big/img5.jpg | Bin 0 -> 54216 bytes .../dashboard/assets/images/big/img6.jpg | Bin 0 -> 78173 bytes .../dashboard/assets/images/custom-select.png | Bin 0 -> 14991 bytes .../dashboard/assets/images/favicon.png | Bin 0 -> 15530 bytes .../dashboard/assets/images/free-demo.jpg | Bin 0 -> 34594 bytes .../dashboard/assets/images/logo-icon.png | Bin 0 -> 47320 bytes .../dashboard/assets/images/logo-text.png | Bin 0 -> 1728 bytes .../wwwroot/dashboard/assets/images/logo.png | Bin 0 -> 1336 bytes .../dashboard/assets/images/users/1-old.jpg | Bin 0 -> 31418 bytes .../dashboard/assets/images/users/1.jpg | Bin 0 -> 10208 bytes .../dashboard/assets/images/users/1.png | Bin 0 -> 7157 bytes .../dashboard/assets/images/users/2.jpg | Bin 0 -> 75554 bytes .../dashboard/assets/images/users/2.png | Bin 0 -> 23280 bytes .../dashboard/assets/images/users/3.jpg | Bin 0 -> 43005 bytes .../dashboard/assets/images/users/3.png | Bin 0 -> 21452 bytes .../dashboard/assets/images/users/4.jpg | Bin 0 -> 72937 bytes .../dashboard/assets/images/users/5.jpg | Bin 0 -> 78151 bytes .../dashboard/assets/images/users/6.jpg | Bin 0 -> 62316 bytes .../dashboard/assets/images/users/7.jpg | Bin 0 -> 80126 bytes .../dashboard/assets/images/users/8.jpg | Bin 0 -> 55544 bytes .../dashboard/assets/images/users/agent.jpg | Bin 0 -> 5746 bytes .../dashboard/assets/images/users/agent2.jpg | Bin 0 -> 2919 bytes .../dashboard/assets/images/users/d1.jpg | Bin 0 -> 15693 bytes .../dashboard/assets/images/users/d2.jpg | Bin 0 -> 14066 bytes .../dashboard/assets/images/users/d3.jpg | Bin 0 -> 14875 bytes .../dashboard/assets/images/users/d4.jpg | Bin 0 -> 16192 bytes .../dashboard/assets/images/users/d5.jpg | Bin 0 -> 14585 bytes .../dashboard/assets/images/users/profile.png | Bin 0 -> 32184 bytes .../dist/css/bootstrap-datepicker.min.css | 7 + .../bootstrap-datepicker.standalone.min.css | 7 + .../dist/css/bootstrap-datepicker3.min.css | 7 + .../bootstrap-datepicker3.standalone.min.css | 7 + .../dist/js/bootstrap-datepicker.min.js | 1631 ++ .../locales/bootstrap-datepicker-en-CA.min.js | 51 + .../locales/bootstrap-datepicker.ar-tn.min.js | 55 + .../locales/bootstrap-datepicker.ar.min.js | 55 + .../locales/bootstrap-datepicker.az.min.js | 45 + .../locales/bootstrap-datepicker.bg.min.js | 44 + .../locales/bootstrap-datepicker.bn.min.js | 56 + .../locales/bootstrap-datepicker.br.min.js | 40 + .../locales/bootstrap-datepicker.bs.min.js | 46 + .../locales/bootstrap-datepicker.ca.min.js | 48 + .../locales/bootstrap-datepicker.cs.min.js | 48 + .../locales/bootstrap-datepicker.cy.min.js | 36 + .../locales/bootstrap-datepicker.da.min.js | 48 + .../locales/bootstrap-datepicker.de.min.js | 48 + .../locales/bootstrap-datepicker.el.min.js | 47 + .../locales/bootstrap-datepicker.en-AU.min.js | 48 + .../locales/bootstrap-datepicker.en-CA.min.js | 48 + .../locales/bootstrap-datepicker.en-GB.min.js | 48 + .../locales/bootstrap-datepicker.en-IE.min.js | 48 + .../locales/bootstrap-datepicker.en-NZ.min.js | 48 + .../locales/bootstrap-datepicker.en-ZA.min.js | 48 + .../locales/bootstrap-datepicker.eo.min.js | 47 + .../locales/bootstrap-datepicker.es.min.js | 48 + .../locales/bootstrap-datepicker.et.min.js | 55 + .../locales/bootstrap-datepicker.eu.min.js | 48 + .../locales/bootstrap-datepicker.fa.min.js | 48 + .../locales/bootstrap-datepicker.fi.min.js | 47 + .../locales/bootstrap-datepicker.fo.min.js | 45 + .../locales/bootstrap-datepicker.fr-CH.min.js | 48 + .../locales/bootstrap-datepicker.fr.min.js | 48 + .../locales/bootstrap-datepicker.gl.min.js | 47 + .../locales/bootstrap-datepicker.he.min.js | 37 + .../locales/bootstrap-datepicker.hi.min.js | 48 + .../locales/bootstrap-datepicker.hr.min.js | 44 + .../locales/bootstrap-datepicker.hu.min.js | 48 + .../locales/bootstrap-datepicker.hy.min.js | 48 + .../locales/bootstrap-datepicker.id.min.js | 37 + .../locales/bootstrap-datepicker.is.min.js | 44 + .../locales/bootstrap-datepicker.it-CH.min.js | 47 + .../locales/bootstrap-datepicker.it.min.js | 48 + .../locales/bootstrap-datepicker.ja.min.js | 39 + .../locales/bootstrap-datepicker.ka.min.js | 47 + .../locales/bootstrap-datepicker.kh.min.js | 40 + .../locales/bootstrap-datepicker.kk.min.js | 45 + .../locales/bootstrap-datepicker.km.min.js | 37 + .../locales/bootstrap-datepicker.ko.min.js | 48 + .../locales/bootstrap-datepicker.kr.min.js | 46 + .../locales/bootstrap-datepicker.lt.min.js | 48 + .../locales/bootstrap-datepicker.lv.min.js | 47 + .../locales/bootstrap-datepicker.me.min.js | 47 + .../locales/bootstrap-datepicker.mk.min.js | 45 + .../locales/bootstrap-datepicker.mn.min.js | 39 + .../locales/bootstrap-datepicker.ms.min.js | 37 + .../locales/bootstrap-datepicker.nl-BE.min.js | 48 + .../locales/bootstrap-datepicker.nl.min.js | 48 + .../locales/bootstrap-datepicker.no.min.js | 48 + .../locales/bootstrap-datepicker.oc.min.js | 48 + .../locales/bootstrap-datepicker.pl.min.js | 47 + .../locales/bootstrap-datepicker.pt-BR.min.js | 47 + .../locales/bootstrap-datepicker.pt.min.js | 47 + .../locales/bootstrap-datepicker.ro.min.js | 39 + .../bootstrap-datepicker.rs-latin.min.js | 49 + .../locales/bootstrap-datepicker.rs.min.js | 49 + .../locales/bootstrap-datepicker.ru.min.js | 48 + .../locales/bootstrap-datepicker.si.min.js | 48 + .../locales/bootstrap-datepicker.sk.min.js | 47 + .../locales/bootstrap-datepicker.sl.min.js | 45 + .../locales/bootstrap-datepicker.sq.min.js | 44 + .../bootstrap-datepicker.sr-latin.min.js | 46 + .../locales/bootstrap-datepicker.sr.min.js | 46 + .../locales/bootstrap-datepicker.sv.min.js | 47 + .../locales/bootstrap-datepicker.sw.min.js | 44 + .../locales/bootstrap-datepicker.ta.min.js | 48 + .../locales/bootstrap-datepicker.tg.min.js | 48 + .../locales/bootstrap-datepicker.th.min.js | 45 + .../locales/bootstrap-datepicker.tk.min.js | 48 + .../locales/bootstrap-datepicker.tr.min.js | 47 + .../locales/bootstrap-datepicker.uk.min.js | 47 + .../bootstrap-datepicker.uz-cyrl.min.js | 48 + .../bootstrap-datepicker.uz-latn.min.js | 48 + .../locales/bootstrap-datepicker.vi.min.js | 46 + .../locales/bootstrap-datepicker.zh-CN.min.js | 48 + .../locales/bootstrap-datepicker.zh-TW.min.js | 47 + .../bootstrap/dist/css/bootstrap-grid.css | 4997 ++++ .../bootstrap/dist/css/bootstrap-grid.css.map | 1 + .../bootstrap/dist/css/bootstrap-grid.min.css | 7 + .../dist/css/bootstrap-grid.min.css.map | 1 + .../bootstrap/dist/css/bootstrap-grid.rtl.css | 4996 ++++ .../dist/css/bootstrap-grid.rtl.css.map | 1 + .../dist/css/bootstrap-grid.rtl.min.css | 7 + .../dist/css/bootstrap-grid.rtl.min.css.map | 1 + .../bootstrap/dist/css/bootstrap-reboot.css | 429 + .../dist/css/bootstrap-reboot.css.map | 1 + .../dist/css/bootstrap-reboot.min.css | 8 + .../dist/css/bootstrap-reboot.min.css.map | 1 + .../dist/css/bootstrap-reboot.rtl.css | 426 + .../dist/css/bootstrap-reboot.rtl.css.map | 1 + .../dist/css/bootstrap-reboot.rtl.min.css | 8 + .../dist/css/bootstrap-reboot.rtl.min.css.map | 1 + .../dist/css/bootstrap-utilities.css | 4617 ++++ .../dist/css/bootstrap-utilities.css.map | 1 + .../dist/css/bootstrap-utilities.min.css | 7 + .../dist/css/bootstrap-utilities.min.css.map | 1 + .../dist/css/bootstrap-utilities.rtl.css | 4608 ++++ .../dist/css/bootstrap-utilities.rtl.css.map | 1 + .../dist/css/bootstrap-utilities.rtl.min.css | 7 + .../css/bootstrap-utilities.rtl.min.css.map | 1 + .../libs/bootstrap/dist/css/bootstrap.css | 10717 ++++++++ .../libs/bootstrap/dist/css/bootstrap.css.map | 1 + .../libs/bootstrap/dist/css/bootstrap.min.css | 7 + .../bootstrap/dist/css/bootstrap.min.css.map | 1 + .../libs/bootstrap/dist/css/bootstrap.rtl.css | 10693 ++++++++ .../bootstrap/dist/css/bootstrap.rtl.css.map | 1 + .../bootstrap/dist/css/bootstrap.rtl.min.css | 7 + .../dist/css/bootstrap.rtl.min.css.map | 1 + .../bootstrap/dist/js/bootstrap.bundle.js | 7723 ++++++ .../bootstrap/dist/js/bootstrap.bundle.js.map | 1 + .../bootstrap/dist/js/bootstrap.bundle.min.js | 4510 ++++ .../dist/js/bootstrap.bundle.min.js.map | 1 + .../libs/bootstrap/dist/js/bootstrap.esm.js | 5628 ++++ .../bootstrap/dist/js/bootstrap.esm.js.map | 1 + .../bootstrap/dist/js/bootstrap.esm.min.js | 3598 +++ .../dist/js/bootstrap.esm.min.js.map | 1 + .../libs/bootstrap/dist/js/bootstrap.js | 5717 ++++ .../libs/bootstrap/dist/js/bootstrap.js.map | 1 + .../libs/bootstrap/dist/js/bootstrap.min.js | 3308 +++ .../bootstrap/dist/js/bootstrap.min.js.map | 1 + .../dashboard/assets/libs/chart/chart.js | 56 + .../assets/libs/chart/excanvas.min.js | 1317 + .../assets/libs/chart/jquery.flot.min.js | 2737 ++ .../assets/libs/chart/jquery.flot.pie.min.js | 631 + .../libs/chart/jquery.flot.resize.min.js | 98 + .../assets/libs/chart/jquery.peity.min.js | 141 + .../assets/libs/chart/jquery.ui.custom.js | 7307 ++++++ .../assets/libs/chart/matrix.charts.js | 130 + .../assets/libs/chart/matrix.dashboard.js | 167 + .../assets/libs/chart/matrix.interface.js | 39 + .../assets/libs/chart/turning-series.js | 222 + .../css/dataTables.bootstrap4.css | 202 + .../js/dataTables.bootstrap4.js | 184 + .../assets/libs/datatables/license.txt | 20 + .../media/css/jquery.dataTables.min.css | 1 + .../datatables/media/images/Sorting icons.psd | Bin 0 -> 27490 bytes .../libs/datatables/media/images/favicon.ico | Bin 0 -> 894 bytes .../libs/datatables/media/images/sort_asc.png | Bin 0 -> 160 bytes .../media/images/sort_asc_disabled.png | Bin 0 -> 148 bytes .../datatables/media/images/sort_both.png | Bin 0 -> 201 bytes .../datatables/media/images/sort_desc.png | Bin 0 -> 158 bytes .../media/images/sort_desc_disabled.png | Bin 0 -> 146 bytes .../media/js/jquery.dataTables.min.js | 4796 ++++ .../assets/libs/flot.tooltip/.bower.json | 24 + .../assets/libs/flot.tooltip/bower.json | 14 + .../libs/flot.tooltip/js/excanvas.min.js | 1287 + .../libs/flot.tooltip/js/jquery.flot.js | 3605 +++ .../flot.tooltip/js/jquery.flot.tooltip.js | 624 + .../js/jquery.flot.tooltip.min.js | 359 + .../js/jquery.flot.tooltip.source.js | 613 + .../dashboard/assets/libs/flot/.bower.json | 19 + .../dashboard/assets/libs/flot/.gitignore | 3 + .../dashboard/assets/libs/flot/.travis.yml | 3 + .../wwwroot/dashboard/assets/libs/flot/API.md | 1498 ++ .../assets/libs/flot/CONTRIBUTING.md | 98 + .../wwwroot/dashboard/assets/libs/flot/FAQ.md | 75 + .../dashboard/assets/libs/flot/LICENSE.txt | 22 + .../dashboard/assets/libs/flot/Makefile | 12 + .../dashboard/assets/libs/flot/NEWS.md | 1026 + .../dashboard/assets/libs/flot/PLUGINS.md | 143 + .../dashboard/assets/libs/flot/README.md | 110 + .../dashboard/assets/libs/flot/component.json | 8 + .../assets/libs/flot/css/float-chart.css | 36 + .../examples/ajax/data-eu-gdp-growth-1.json | 7 + .../examples/ajax/data-eu-gdp-growth-2.json | 9 + .../examples/ajax/data-eu-gdp-growth-3.json | 11 + .../examples/ajax/data-eu-gdp-growth-4.json | 13 + .../examples/ajax/data-eu-gdp-growth-5.json | 15 + .../examples/ajax/data-eu-gdp-growth.json | 15 + .../examples/ajax/data-japan-gdp-growth.json | 15 + .../examples/ajax/data-usa-gdp-growth.json | 15 + .../assets/libs/flot/examples/ajax/index.html | 193 + .../libs/flot/examples/annotating/index.html | 110 + .../flot/examples/axes-interacting/index.html | 142 + .../flot/examples/axes-multiple/index.html | 1056 + .../flot/examples/axes-time-zones/date.js | 1235 + .../flot/examples/axes-time-zones/index.html | 123 + .../flot/examples/axes-time-zones/tz/africa | 1181 + .../examples/axes-time-zones/tz/antarctica | 413 + .../flot/examples/axes-time-zones/tz/asia | 2717 ++ .../examples/axes-time-zones/tz/australasia | 1719 ++ .../flot/examples/axes-time-zones/tz/backward | 117 + .../flot/examples/axes-time-zones/tz/etcetera | 81 + .../flot/examples/axes-time-zones/tz/europe | 2856 ++ .../flot/examples/axes-time-zones/tz/factory | 10 + .../examples/axes-time-zones/tz/iso3166.tab | 276 + .../examples/axes-time-zones/tz/leapseconds | 100 + .../examples/axes-time-zones/tz/northamerica | 3235 +++ .../examples/axes-time-zones/tz/pacificnew | 28 + .../flot/examples/axes-time-zones/tz/solar87 | 390 + .../flot/examples/axes-time-zones/tz/solar88 | 390 + .../flot/examples/axes-time-zones/tz/solar89 | 395 + .../examples/axes-time-zones/tz/southamerica | 1711 ++ .../flot/examples/axes-time-zones/tz/systemv | 38 + .../examples/axes-time-zones/tz/yearistype.sh | 38 + .../flot/examples/axes-time-zones/tz/zone.tab | 441 + .../libs/flot/examples/axes-time/index.html | 760 + .../assets/libs/flot/examples/background.png | Bin 0 -> 231 bytes .../flot/examples/basic-options/index.html | 110 + .../libs/flot/examples/basic-usage/index.html | 71 + .../libs/flot/examples/canvas/index.html | 1052 + .../libs/flot/examples/categories/index.html | 77 + .../assets/libs/flot/examples/examples.css | 97 + .../examples/image/hs-2004-27-a-large-web.jpg | Bin 0 -> 34489 bytes .../libs/flot/examples/image/index.html | 92 + .../assets/libs/flot/examples/index.html | 147 + .../libs/flot/examples/interacting/index.html | 146 + .../flot/examples/navigate/arrow-down.gif | Bin 0 -> 916 bytes .../flot/examples/navigate/arrow-left.gif | Bin 0 -> 891 bytes .../flot/examples/navigate/arrow-right.gif | Bin 0 -> 897 bytes .../libs/flot/examples/navigate/arrow-up.gif | Bin 0 -> 916 bytes .../libs/flot/examples/navigate/index.html | 188 + .../libs/flot/examples/percentiles/index.html | 489 + .../libs/flot/examples/realtime/index.html | 137 + .../libs/flot/examples/resize/index.html | 107 + .../libs/flot/examples/selection/index.html | 301 + .../flot/examples/series-errorbars/index.html | 182 + .../libs/flot/examples/series-pie/index.html | 1141 + .../flot/examples/series-toggle/index.html | 284 + .../flot/examples/series-types/index.html | 110 + .../shared/jquery-ui/jquery-ui.min.css | 6 + .../libs/flot/examples/stacking/index.html | 120 + .../libs/flot/examples/symbols/index.html | 89 + .../libs/flot/examples/threshold/index.html | 91 + .../libs/flot/examples/tracking/index.html | 162 + .../libs/flot/examples/visitors/index.html | 255 + .../libs/flot/examples/zooming/index.html | 164 + .../dashboard/assets/libs/flot/excanvas.js | 1632 ++ .../assets/libs/flot/excanvas.min.js | 1281 + .../assets/libs/flot/flot.jquery.json | 31 + .../assets/libs/flot/jquery.colorhelpers.js | 222 + .../assets/libs/flot/jquery.flot.canvas.js | 374 + .../libs/flot/jquery.flot.categories.js | 190 + .../assets/libs/flot/jquery.flot.crosshair.js | 170 + .../assets/libs/flot/jquery.flot.errorbars.js | 450 + .../libs/flot/jquery.flot.fillbetween.js | 225 + .../assets/libs/flot/jquery.flot.image.js | 253 + .../dashboard/assets/libs/flot/jquery.flot.js | 3605 +++ .../assets/libs/flot/jquery.flot.navigate.js | 489 + .../assets/libs/flot/jquery.flot.pie.js | 917 + .../assets/libs/flot/jquery.flot.resize.js | 183 + .../assets/libs/flot/jquery.flot.selection.js | 375 + .../assets/libs/flot/jquery.flot.stack.js | 192 + .../assets/libs/flot/jquery.flot.symbol.js | 70 + .../assets/libs/flot/jquery.flot.threshold.js | 157 + .../assets/libs/flot/jquery.flot.time.js | 515 + .../dashboard/assets/libs/flot/jquery.js | 10294 ++++++++ .../dashboard/assets/libs/flot/package.json | 11 + .../fullcalendar/dist/fullcalendar.min.css | 5 + .../fullcalendar/dist/fullcalendar.min.js | 11182 ++++++++ .../dist/fullcalendar.print.min.css | 9 + .../assets/libs/fullcalendar/dist/gcal.min.js | 258 + .../libs/fullcalendar/dist/locale-all.js | 11427 ++++++++ .../libs/fullcalendar/dist/locale/af.js | 185 + .../libs/fullcalendar/dist/locale/ar-dz.js | 182 + .../libs/fullcalendar/dist/locale/ar-kw.js | 182 + .../libs/fullcalendar/dist/locale/ar-ly.js | 289 + .../libs/fullcalendar/dist/locale/ar-ma.js | 182 + .../libs/fullcalendar/dist/locale/ar-sa.js | 227 + .../libs/fullcalendar/dist/locale/ar-tn.js | 182 + .../libs/fullcalendar/dist/locale/ar.js | 305 + .../libs/fullcalendar/dist/locale/bg.js | 204 + .../libs/fullcalendar/dist/locale/bs.js | 255 + .../libs/fullcalendar/dist/locale/ca.js | 214 + .../libs/fullcalendar/dist/locale/cs.js | 261 + .../libs/fullcalendar/dist/locale/da.js | 174 + .../libs/fullcalendar/dist/locale/de-at.js | 193 + .../libs/fullcalendar/dist/locale/de-ch.js | 193 + .../libs/fullcalendar/dist/locale/de.js | 193 + .../libs/fullcalendar/dist/locale/el.js | 212 + .../libs/fullcalendar/dist/locale/en-au.js | 179 + .../libs/fullcalendar/dist/locale/en-ca.js | 127 + .../libs/fullcalendar/dist/locale/en-gb.js | 179 + .../libs/fullcalendar/dist/locale/en-ie.js | 128 + .../libs/fullcalendar/dist/locale/en-nz.js | 179 + .../libs/fullcalendar/dist/locale/es-do.js | 218 + .../libs/fullcalendar/dist/locale/es-us.js | 194 + .../libs/fullcalendar/dist/locale/es.js | 218 + .../libs/fullcalendar/dist/locale/et.js | 202 + .../libs/fullcalendar/dist/locale/eu.js | 182 + .../libs/fullcalendar/dist/locale/fa.js | 224 + .../libs/fullcalendar/dist/locale/fi.js | 233 + .../libs/fullcalendar/dist/locale/fr-ca.js | 190 + .../libs/fullcalendar/dist/locale/fr-ch.js | 191 + .../libs/fullcalendar/dist/locale/fr.js | 192 + .../libs/fullcalendar/dist/locale/gl.js | 191 + .../libs/fullcalendar/dist/locale/he.js | 199 + .../libs/fullcalendar/dist/locale/hi.js | 239 + .../libs/fullcalendar/dist/locale/hr.js | 261 + .../libs/fullcalendar/dist/locale/hu.js | 221 + .../libs/fullcalendar/dist/locale/id.js | 194 + .../libs/fullcalendar/dist/locale/is.js | 227 + .../libs/fullcalendar/dist/locale/it.js | 186 + .../libs/fullcalendar/dist/locale/ja.js | 193 + .../libs/fullcalendar/dist/locale/ka.js | 208 + .../libs/fullcalendar/dist/locale/kk.js | 203 + .../libs/fullcalendar/dist/locale/ko.js | 191 + .../libs/fullcalendar/dist/locale/lb.js | 217 + .../libs/fullcalendar/dist/locale/lt.js | 236 + .../libs/fullcalendar/dist/locale/lv.js | 209 + .../libs/fullcalendar/dist/locale/mk.js | 203 + .../libs/fullcalendar/dist/locale/ms-my.js | 196 + .../libs/fullcalendar/dist/locale/ms.js | 196 + .../libs/fullcalendar/dist/locale/nb.js | 177 + .../libs/fullcalendar/dist/locale/nl-be.js | 208 + .../libs/fullcalendar/dist/locale/nl.js | 209 + .../libs/fullcalendar/dist/locale/nn.js | 174 + .../libs/fullcalendar/dist/locale/pl.js | 234 + .../libs/fullcalendar/dist/locale/pt-br.js | 181 + .../libs/fullcalendar/dist/locale/pt.js | 180 + .../libs/fullcalendar/dist/locale/ro.js | 193 + .../libs/fullcalendar/dist/locale/ru.js | 296 + .../libs/fullcalendar/dist/locale/sk.js | 243 + .../libs/fullcalendar/dist/locale/sl.js | 318 + .../libs/fullcalendar/dist/locale/sq.js | 185 + .../libs/fullcalendar/dist/locale/sr-cyrl.js | 228 + .../libs/fullcalendar/dist/locale/sr.js | 227 + .../libs/fullcalendar/dist/locale/sv.js | 188 + .../libs/fullcalendar/dist/locale/th.js | 181 + .../libs/fullcalendar/dist/locale/tr.js | 207 + .../libs/fullcalendar/dist/locale/uk.js | 274 + .../libs/fullcalendar/dist/locale/vi.js | 191 + .../libs/fullcalendar/dist/locale/zh-cn.js | 215 + .../libs/fullcalendar/dist/locale/zh-tw.js | 214 + .../inputmask/bindings/inputmask.binding.js | 36 + .../inputmask.dependencyLib.jqlite.js | 164 + .../inputmask.dependencyLib.jquery.js | 17 + .../dependencyLibs/inputmask.dependencyLib.js | 363 + .../dist/inputmask/global/document.js | 13 + .../inputmask/dist/inputmask/global/window.js | 13 + .../inputmask/inputmask.date.extensions.js | 806 + .../dist/inputmask/inputmask.extensions.js | 121 + .../inputmask/dist/inputmask/inputmask.js | 4004 +++ .../inputmask/inputmask.numeric.extensions.js | 836 + .../inputmask/inputmask.phone.extensions.js | 149 + .../inputmask/inputmask.regex.extensions.js | 225 + .../dist/inputmask/jquery.inputmask.js | 100 + .../dist/inputmask/phone-codes/phone-be.js | 297 + .../dist/inputmask/phone-codes/phone-nl.js | 1113 + .../dist/inputmask/phone-codes/phone-ru.js | 21692 ++++++++++++++++ .../dist/inputmask/phone-codes/phone-uk.js | 1215 + .../dist/inputmask/phone-codes/phone.js | 2418 ++ .../inputmask/dist/jquery.inputmask.bundle.js | 7009 +++++ .../bindings/inputmask.binding.min.js | 36 + .../inputmask.dependencyLib.jqlite.min.js | 134 + .../inputmask.dependencyLib.jquery.min.js | 17 + .../inputmask.dependencyLib.min.js | 291 + .../dist/min/inputmask/global/document.min.js | 13 + .../dist/min/inputmask/global/window.min.js | 13 + .../inputmask.date.extensions.min.js | 670 + .../min/inputmask/inputmask.extensions.min.js | 96 + .../dist/min/inputmask/inputmask.min.js | 2910 +++ .../inputmask.numeric.extensions.min.js | 634 + .../inputmask.phone.extensions.min.js | 120 + .../inputmask.regex.extensions.min.js | 178 + .../min/inputmask/jquery.inputmask.min.js | 82 + .../min/inputmask/phone-codes/phone-be.min.js | 227 + .../min/inputmask/phone-codes/phone-nl.min.js | 1093 + .../min/inputmask/phone-codes/phone-ru.min.js | 21687 +++++++++++++++ .../min/inputmask/phone-codes/phone-uk.min.js | 1215 + .../min/inputmask/phone-codes/phone.min.js | 2418 ++ .../dist/min/jquery.inputmask.bundle.min.js | 5260 ++++ .../assets/libs/jquery-asColor/LICENSE | 165 + .../assets/libs/jquery-asColor/README.md | 278 + .../jquery-asColor/dist/jquery-asColor.es.js | 958 + .../jquery-asColor/dist/jquery-asColor.js | 1139 + .../jquery-asColor/dist/jquery-asColor.min.js | 813 + .../dist/jquery-asColor.min.js.map | 1 + .../assets/libs/jquery-asColor/package.json | 142 + .../assets/libs/jquery-asColor/src/asColor.js | 285 + .../libs/jquery-asColor/src/colorStrings.js | 174 + .../libs/jquery-asColor/src/converter.js | 251 + .../libs/jquery-asColor/src/defaults.js | 16 + .../assets/libs/jquery-asColor/src/info.js | 3 + .../assets/libs/jquery-asColor/src/main.js | 29 + .../assets/libs/jquery-asColor/src/names.js | 150 + .../assets/libs/jquery-asColor/src/util.js | 53 + .../dist/css/asColorPicker.min.css | 9 + .../dist/images/alpha.png | Bin 0 -> 3158 bytes .../jquery-asColorPicker/dist/images/hue.png | Bin 0 -> 1805 bytes .../dist/images/saturation.png | Bin 0 -> 14976 bytes .../dist/images/transparent.png | Bin 0 -> 1233 bytes .../dist/jquery-asColorPicker.es.js | 2257 ++ .../dist/jquery-asColorPicker.min.js | 1781 ++ .../assets/libs/jquery-asGradient/LICENSE | 165 + .../assets/libs/jquery-asGradient/README.md | 293 + .../dist/jquery-asGradient.es.js | 693 + .../dist/jquery-asGradient.js | 860 + .../dist/jquery-asGradient.min.js | 611 + .../dist/jquery-asGradient.min.js.map | 1 + .../libs/jquery-asGradient/package.json | 144 + .../libs/jquery-asGradient/src/asGradient.js | 230 + .../libs/jquery-asGradient/src/colorStop.js | 27 + .../libs/jquery-asGradient/src/defaults.js | 21 + .../jquery-asGradient/src/gradientString.js | 252 + .../jquery-asGradient/src/gradientTypes.js | 60 + .../assets/libs/jquery-asGradient/src/info.js | 3 + .../jquery-asGradient/src/keywordAngleMap.js | 14 + .../assets/libs/jquery-asGradient/src/main.js | 28 + .../jquery-asGradient/src/regExpStrings.js | 0 .../assets/libs/jquery-asGradient/src/util.js | 62 + .../libs/jquery-minicolors/component.json | 16 + .../assets/libs/jquery-minicolors/index.html | 875 + .../jquery-minicolors/jquery.minicolors.css | 319 + .../jquery.minicolors.min.js | 788 + .../jquery-minicolors/jquery.minicolors.png | Bin 0 -> 68627 bytes .../jquery-minicolors/without-bootstrap.html | 285 + .../assets/libs/jquery-steps/LICENSE.txt | 21 + .../jquery-steps/build/jquery.steps-1.1.0.zip | Bin 0 -> 19455 bytes .../jquery-steps/build/jquery.steps.min.js | 722 + .../assets/libs/jquery-steps/jquery.steps.css | 381 + .../jquery-steps/lib/jquery-1.10.2.min.js | 5680 ++++ .../jquery-steps/lib/jquery-1.11.1.min.js | 5785 +++++ .../libs/jquery-steps/lib/jquery-1.9.1.min.js | 5650 ++++ .../jquery-steps/lib/jquery.cookie-1.3.1.js | 93 + .../jquery-steps/lib/modernizr-2.6.2.min.js | 877 + .../assets/libs/jquery-steps/nuget/NuGet.exe | Bin 0 -> 1611440 bytes .../jquery-steps/nuget/jQuery.Steps.nuspec | 25 + .../assets/libs/jquery-steps/steps.css | 366 + .../libs/jquery-steps/steps.jquery.json | 34 + .../dist/additional-methods.js | 1569 ++ .../dist/jquery.validate.min.js | 1167 + .../dist/localization/messages_ar.js | 34 + .../dist/localization/messages_az.js | 46 + .../dist/localization/messages_bg.js | 40 + .../dist/localization/messages_bn_BD.js | 38 + .../dist/localization/messages_ca.js | 40 + .../dist/localization/messages_cs.js | 34 + .../dist/localization/messages_da.js | 31 + .../dist/localization/messages_de.js | 41 + .../dist/localization/messages_el.js | 44 + .../dist/localization/messages_es.js | 43 + .../dist/localization/messages_es_AR.js | 44 + .../dist/localization/messages_es_PE.js | 44 + .../dist/localization/messages_et.js | 40 + .../dist/localization/messages_eu.js | 40 + .../dist/localization/messages_fa.js | 39 + .../dist/localization/messages_fi.js | 43 + .../dist/localization/messages_fr.js | 75 + .../dist/localization/messages_ge.js | 40 + .../dist/localization/messages_gl.js | 49 + .../dist/localization/messages_he.js | 34 + .../dist/localization/messages_hr.js | 36 + .../dist/localization/messages_hu.js | 36 + .../dist/localization/messages_hy_AM.js | 34 + .../dist/localization/messages_id.js | 39 + .../dist/localization/messages_is.js | 36 + .../dist/localization/messages_it.js | 40 + .../dist/localization/messages_ja.js | 37 + .../dist/localization/messages_ka.js | 40 + .../dist/localization/messages_kk.js | 38 + .../dist/localization/messages_ko.js | 36 + .../dist/localization/messages_lt.js | 40 + .../dist/localization/messages_lv.js | 40 + .../dist/localization/messages_mk.js | 36 + .../dist/localization/messages_my.js | 42 + .../dist/localization/messages_nl.js | 53 + .../dist/localization/messages_no.js | 37 + .../dist/localization/messages_pl.js | 46 + .../dist/localization/messages_pt_BR.js | 134 + .../dist/localization/messages_pt_PT.js | 51 + .../dist/localization/messages_ro.js | 46 + .../dist/localization/messages_ru.js | 44 + .../dist/localization/messages_sd.js | 34 + .../dist/localization/messages_si.js | 34 + .../dist/localization/messages_sk.js | 31 + .../dist/localization/messages_sl.js | 36 + .../dist/localization/messages_sr.js | 36 + .../dist/localization/messages_sr_lat.js | 36 + .../dist/localization/messages_sv.js | 36 + .../dist/localization/messages_th.js | 36 + .../dist/localization/messages_tj.js | 36 + .../dist/localization/messages_tr.js | 45 + .../dist/localization/messages_uk.js | 38 + .../dist/localization/messages_ur.js | 36 + .../dist/localization/messages_vi.js | 34 + .../dist/localization/messages_zh.js | 34 + .../dist/localization/messages_zh_TW.js | 35 + .../dist/localization/methods_de.js | 26 + .../dist/localization/methods_es_CL.js | 26 + .../dist/localization/methods_fi.js | 23 + .../dist/localization/methods_nl.js | 29 + .../dist/localization/methods_pt.js | 20 + .../js/jquery.flot.tooltip.min.js | 406 + .../js/jquery.flot.tooltip.source.js | 699 + .../dashboard/assets/libs/jquery/dist/core.js | 417 + .../assets/libs/jquery/dist/jquery.min.js | 5392 ++++ .../libs/jquery/dist/jquery.slim.min.js | 4327 +++ .../assets/libs/magnific-popup/animation.css | 292 + .../dist/jquery.magnific-popup.min.js | 1060 + .../magnific-popup/dist/magnific-popup.css | 351 + .../assets/libs/magnific-popup/meg.init.js | 135 + .../dashboard/assets/libs/moment/ender.js | 1 + .../dashboard/assets/libs/moment/locale/af.js | 81 + .../assets/libs/moment/locale/ar-dz.js | 66 + .../assets/libs/moment/locale/ar-kw.js | 66 + .../assets/libs/moment/locale/ar-ly.js | 181 + .../assets/libs/moment/locale/ar-ma.js | 66 + .../assets/libs/moment/locale/ar-sa.js | 116 + .../assets/libs/moment/locale/ar-tn.js | 66 + .../dashboard/assets/libs/moment/locale/ar.js | 197 + .../dashboard/assets/libs/moment/locale/az.js | 113 + .../dashboard/assets/libs/moment/locale/be.js | 149 + .../dashboard/assets/libs/moment/locale/bg.js | 96 + .../dashboard/assets/libs/moment/locale/bm.js | 62 + .../dashboard/assets/libs/moment/locale/bn.js | 129 + .../dashboard/assets/libs/moment/locale/bo.js | 133 + .../dashboard/assets/libs/moment/locale/br.js | 112 + .../dashboard/assets/libs/moment/locale/bs.js | 158 + .../dashboard/assets/libs/moment/locale/ca.js | 105 + .../dashboard/assets/libs/moment/locale/cs.js | 189 + .../dashboard/assets/libs/moment/locale/cv.js | 74 + .../dashboard/assets/libs/moment/locale/cy.js | 108 + .../dashboard/assets/libs/moment/locale/da.js | 64 + .../assets/libs/moment/locale/de-at.js | 82 + .../assets/libs/moment/locale/de-ch.js | 82 + .../dashboard/assets/libs/moment/locale/de.js | 82 + .../dashboard/assets/libs/moment/locale/dv.js | 100 + .../dashboard/assets/libs/moment/locale/el.js | 116 + .../assets/libs/moment/locale/en-au.js | 79 + .../assets/libs/moment/locale/en-ca.js | 75 + .../assets/libs/moment/locale/en-gb.js | 79 + .../assets/libs/moment/locale/en-ie.js | 79 + .../assets/libs/moment/locale/en-il.js | 74 + .../assets/libs/moment/locale/en-nz.js | 79 + .../dashboard/assets/libs/moment/locale/eo.js | 75 + .../assets/libs/moment/locale/es-do.js | 115 + .../assets/libs/moment/locale/es-us.js | 90 + .../dashboard/assets/libs/moment/locale/es.js | 115 + .../dashboard/assets/libs/moment/locale/et.js | 88 + .../dashboard/assets/libs/moment/locale/eu.js | 74 + .../dashboard/assets/libs/moment/locale/fa.js | 124 + .../dashboard/assets/libs/moment/locale/fi.js | 134 + .../dashboard/assets/libs/moment/locale/fo.js | 67 + .../assets/libs/moment/locale/fr-ca.js | 81 + .../assets/libs/moment/locale/fr-ch.js | 85 + .../dashboard/assets/libs/moment/locale/fr.js | 90 + .../dashboard/assets/libs/moment/locale/fy.js | 85 + .../dashboard/assets/libs/moment/locale/gd.js | 109 + .../dashboard/assets/libs/moment/locale/gl.js | 82 + .../assets/libs/moment/locale/gom-latn.js | 128 + .../dashboard/assets/libs/moment/locale/gu.js | 133 + .../dashboard/assets/libs/moment/locale/he.js | 103 + .../dashboard/assets/libs/moment/locale/hi.js | 129 + .../dashboard/assets/libs/moment/locale/hr.js | 164 + .../dashboard/assets/libs/moment/locale/hu.js | 121 + .../assets/libs/moment/locale/hy-am.js | 105 + .../dashboard/assets/libs/moment/locale/id.js | 86 + .../dashboard/assets/libs/moment/locale/is.js | 144 + .../dashboard/assets/libs/moment/locale/it.js | 75 + .../dashboard/assets/libs/moment/locale/ja.js | 95 + .../dashboard/assets/libs/moment/locale/jv.js | 86 + .../dashboard/assets/libs/moment/locale/ka.js | 106 + .../dashboard/assets/libs/moment/locale/kk.js | 93 + .../dashboard/assets/libs/moment/locale/km.js | 114 + .../dashboard/assets/libs/moment/locale/kn.js | 135 + .../dashboard/assets/libs/moment/locale/ko.js | 84 + .../dashboard/assets/libs/moment/locale/ky.js | 95 + .../dashboard/assets/libs/moment/locale/lb.js | 145 + .../dashboard/assets/libs/moment/locale/lo.js | 77 + .../dashboard/assets/libs/moment/locale/lt.js | 137 + .../dashboard/assets/libs/moment/locale/lv.js | 104 + .../dashboard/assets/libs/moment/locale/me.js | 126 + .../dashboard/assets/libs/moment/locale/mi.js | 71 + .../dashboard/assets/libs/moment/locale/mk.js | 96 + .../dashboard/assets/libs/moment/locale/ml.js | 93 + .../dashboard/assets/libs/moment/locale/mn.js | 111 + .../dashboard/assets/libs/moment/locale/mr.js | 213 + .../assets/libs/moment/locale/ms-my.js | 86 + .../dashboard/assets/libs/moment/locale/ms.js | 86 + .../dashboard/assets/libs/moment/locale/mt.js | 67 + .../dashboard/assets/libs/moment/locale/my.js | 100 + .../dashboard/assets/libs/moment/locale/nb.js | 67 + .../dashboard/assets/libs/moment/locale/ne.js | 132 + .../assets/libs/moment/locale/nl-be.js | 112 + .../dashboard/assets/libs/moment/locale/nl.js | 112 + .../dashboard/assets/libs/moment/locale/nn.js | 64 + .../assets/libs/moment/locale/pa-in.js | 133 + .../dashboard/assets/libs/moment/locale/pl.js | 140 + .../assets/libs/moment/locale/pt-br.js | 68 + .../dashboard/assets/libs/moment/locale/pt.js | 72 + .../dashboard/assets/libs/moment/locale/ro.js | 82 + .../dashboard/assets/libs/moment/locale/ru.js | 221 + .../dashboard/assets/libs/moment/locale/sd.js | 91 + .../dashboard/assets/libs/moment/locale/se.js | 68 + .../dashboard/assets/libs/moment/locale/si.js | 80 + .../dashboard/assets/libs/moment/locale/sk.js | 160 + .../dashboard/assets/libs/moment/locale/sl.js | 178 + .../dashboard/assets/libs/moment/locale/sq.js | 74 + .../assets/libs/moment/locale/sr-cyrl.js | 123 + .../dashboard/assets/libs/moment/locale/sr.js | 125 + .../dashboard/assets/libs/moment/locale/ss.js | 95 + .../dashboard/assets/libs/moment/locale/sv.js | 79 + .../dashboard/assets/libs/moment/locale/sw.js | 64 + .../dashboard/assets/libs/moment/locale/ta.js | 142 + .../dashboard/assets/libs/moment/locale/te.js | 97 + .../assets/libs/moment/locale/tet.js | 77 + .../dashboard/assets/libs/moment/locale/tg.js | 122 + .../dashboard/assets/libs/moment/locale/th.js | 74 + .../assets/libs/moment/locale/tl-ph.js | 68 + .../assets/libs/moment/locale/tlh.js | 137 + .../dashboard/assets/libs/moment/locale/tr.js | 101 + .../assets/libs/moment/locale/tzl.js | 99 + .../assets/libs/moment/locale/tzm-latn.js | 65 + .../assets/libs/moment/locale/tzm.js | 65 + .../assets/libs/moment/locale/ug-cn.js | 122 + .../dashboard/assets/libs/moment/locale/uk.js | 165 + .../dashboard/assets/libs/moment/locale/ur.js | 91 + .../assets/libs/moment/locale/uz-latn.js | 63 + .../dashboard/assets/libs/moment/locale/uz.js | 62 + .../dashboard/assets/libs/moment/locale/vi.js | 86 + .../assets/libs/moment/locale/x-pseudo.js | 82 + .../dashboard/assets/libs/moment/locale/yo.js | 64 + .../assets/libs/moment/locale/zh-cn.js | 115 + .../assets/libs/moment/locale/zh-hk.js | 109 + .../assets/libs/moment/locale/zh-tw.js | 109 + .../assets/libs/moment/min/locales.min.js | 10657 ++++++++ .../moment/min/moment-with-locales.min.js | 13530 ++++++++++ .../assets/libs/moment/min/moment.min.js | 2891 ++ .../dashboard/assets/libs/moment/moment.js | 4960 ++++ .../dashboard/assets/libs/moment/package.js | 11 + .../dist/css/perfect-scrollbar.min.css | 2 + .../dist/js/perfect-scrollbar.jquery.min.js | 1355 + .../dist/js/perfect-scrollbar.min.js | 1337 + .../dist/perfect-scrollbar.common.js | 1342 + .../dist/perfect-scrollbar.esm.js | 1340 + .../dist/perfect-scrollbar.jquery.min.js | 1927 ++ .../dist/perfect-scrollbar.min.js | 912 + .../popper.js/dist/esm/popper-utils.min.js | 552 + .../libs/popper.js/dist/esm/popper.min.js | 1131 + .../libs/popper.js/dist/popper-utils.min.js | 500 + .../assets/libs/popper.js/dist/popper.min.js | 991 + .../popper.js/dist/umd/popper-utils.min.js | 559 + .../libs/popper.js/dist/umd/popper.min.js | 1207 + .../assets/libs/quill/dist/quill.bubble.css | 952 + .../assets/libs/quill/dist/quill.core.css | 397 + .../assets/libs/quill/dist/quill.core.js | 12169 +++++++++ .../assets/libs/quill/dist/quill.min.js | 12117 +++++++++ .../assets/libs/quill/dist/quill.snow.css | 945 + .../libs/select2/dist/css/select2.min.css | 1 + .../assets/libs/select2/dist/js/i18n/af.js | 39 + .../assets/libs/select2/dist/js/i18n/ar.js | 36 + .../assets/libs/select2/dist/js/i18n/az.js | 33 + .../assets/libs/select2/dist/js/i18n/bg.js | 36 + .../assets/libs/select2/dist/js/i18n/bs.js | 46 + .../libs/select2/dist/js/i18n/build.txt | 220 + .../assets/libs/select2/dist/js/i18n/ca.js | 39 + .../assets/libs/select2/dist/js/i18n/cs.js | 60 + .../assets/libs/select2/dist/js/i18n/da.js | 37 + .../assets/libs/select2/dist/js/i18n/de.js | 39 + .../assets/libs/select2/dist/js/i18n/dsb.js | 44 + .../assets/libs/select2/dist/js/i18n/el.js | 39 + .../assets/libs/select2/dist/js/i18n/en.js | 39 + .../assets/libs/select2/dist/js/i18n/es.js | 39 + .../assets/libs/select2/dist/js/i18n/et.js | 36 + .../assets/libs/select2/dist/js/i18n/eu.js | 45 + .../assets/libs/select2/dist/js/i18n/fa.js | 39 + .../assets/libs/select2/dist/js/i18n/fi.js | 36 + .../assets/libs/select2/dist/js/i18n/fr.js | 41 + .../assets/libs/select2/dist/js/i18n/gl.js | 40 + .../assets/libs/select2/dist/js/i18n/he.js | 46 + .../assets/libs/select2/dist/js/i18n/hi.js | 39 + .../assets/libs/select2/dist/js/i18n/hr.js | 45 + .../assets/libs/select2/dist/js/i18n/hsb.js | 44 + .../assets/libs/select2/dist/js/i18n/hu.js | 36 + .../assets/libs/select2/dist/js/i18n/hy.js | 39 + .../assets/libs/select2/dist/js/i18n/id.js | 36 + .../assets/libs/select2/dist/js/i18n/is.js | 35 + .../assets/libs/select2/dist/js/i18n/it.js | 39 + .../assets/libs/select2/dist/js/i18n/ja.js | 39 + .../assets/libs/select2/dist/js/i18n/km.js | 39 + .../assets/libs/select2/dist/js/i18n/ko.js | 39 + .../assets/libs/select2/dist/js/i18n/lt.js | 43 + .../assets/libs/select2/dist/js/i18n/lv.js | 39 + .../assets/libs/select2/dist/js/i18n/mk.js | 36 + .../assets/libs/select2/dist/js/i18n/ms.js | 36 + .../assets/libs/select2/dist/js/i18n/nb.js | 36 + .../assets/libs/select2/dist/js/i18n/nl.js | 40 + .../assets/libs/select2/dist/js/i18n/pl.js | 43 + .../assets/libs/select2/dist/js/i18n/ps.js | 39 + .../assets/libs/select2/dist/js/i18n/pt-BR.js | 39 + .../assets/libs/select2/dist/js/i18n/pt.js | 39 + .../assets/libs/select2/dist/js/i18n/ro.js | 39 + .../assets/libs/select2/dist/js/i18n/ru.js | 46 + .../assets/libs/select2/dist/js/i18n/sk.js | 59 + .../assets/libs/select2/dist/js/i18n/sl.js | 39 + .../libs/select2/dist/js/i18n/sr-Cyrl.js | 46 + .../assets/libs/select2/dist/js/i18n/sr.js | 46 + .../assets/libs/select2/dist/js/i18n/sv.js | 39 + .../assets/libs/select2/dist/js/i18n/th.js | 39 + .../assets/libs/select2/dist/js/i18n/tk.js | 39 + .../assets/libs/select2/dist/js/i18n/tr.js | 39 + .../assets/libs/select2/dist/js/i18n/uk.js | 55 + .../assets/libs/select2/dist/js/i18n/vi.js | 36 + .../assets/libs/select2/dist/js/i18n/zh-CN.js | 39 + .../assets/libs/select2/dist/js/i18n/zh-TW.js | 36 + .../libs/select2/dist/js/select2.full.min.js | 4364 ++++ .../libs/select2/dist/js/select2.min.js | 3919 +++ .../assets/libs/toastr/build/toastr.min.css | 1 + .../assets/libs/toastr/build/toastr.min.js | 337 + .../assets/libs/toastr/toastr-icon.png | Bin 0 -> 25510 bytes .../dashboard/assets/libs/toastr/toastr.js | 517 + .../css/icons/font-awesome/css/fa-brands.css | 13 + .../icons/font-awesome/css/fa-brands.min.css | 5 + .../css/icons/font-awesome/css/fa-regular.css | 14 + .../icons/font-awesome/css/fa-regular.min.css | 5 + .../css/icons/font-awesome/css/fa-solid.css | 15 + .../icons/font-awesome/css/fa-solid.min.css | 5 + .../font-awesome/css/fontawesome-all.css | 2855 ++ .../font-awesome/css/fontawesome-all.min.css | 5 + .../icons/font-awesome/css/fontawesome.css | 2825 ++ .../font-awesome/css/fontawesome.min.css | 5 + .../icons/font-awesome/less/_animated.less | 19 + .../font-awesome/less/_bordered-pulled.less | 16 + .../css/icons/font-awesome/less/_core.less | 12 + .../icons/font-awesome/less/_fixed-width.less | 6 + .../css/icons/font-awesome/less/_icons.less | 876 + .../css/icons/font-awesome/less/_larger.less | 27 + .../css/icons/font-awesome/less/_list.less | 18 + .../css/icons/font-awesome/less/_mixins.less | 57 + .../font-awesome/less/_rotated-flipped.less | 23 + .../font-awesome/less/_screen-reader.less | 5 + .../css/icons/font-awesome/less/_stacked.less | 22 + .../icons/font-awesome/less/_variables.less | 885 + .../icons/font-awesome/less/fa-brands.less | 21 + .../icons/font-awesome/less/fa-regular.less | 22 + .../css/icons/font-awesome/less/fa-solid.less | 23 + .../icons/font-awesome/less/fontawesome.less | 16 + .../icons/font-awesome/scss/_animated.scss | 20 + .../font-awesome/scss/_bordered-pulled.scss | 28 + .../css/icons/font-awesome/scss/_core.scss | 16 + .../icons/font-awesome/scss/_fixed-width.scss | 6 + .../css/icons/font-awesome/scss/_icons.scss | 2622 ++ .../css/icons/font-awesome/scss/_larger.scss | 23 + .../css/icons/font-awesome/scss/_list.scss | 20 + .../css/icons/font-awesome/scss/_mixins.scss | 56 + .../font-awesome/scss/_rotated-flipped.scss | 35 + .../font-awesome/scss/_screen-reader.scss | 9 + .../css/icons/font-awesome/scss/_stacked.scss | 31 + .../icons/font-awesome/scss/_variables.scss | 889 + .../icons/font-awesome/scss/fa-brands.scss | 22 + .../icons/font-awesome/scss/fa-regular.scss | 23 + .../css/icons/font-awesome/scss/fa-solid.scss | 24 + .../icons/font-awesome/scss/fontawesome.scss | 16 + .../font-awesome/webfonts/fa-brands-400.eot | Bin 0 -> 98940 bytes .../font-awesome/webfonts/fa-brands-400.svg | 1011 + .../font-awesome/webfonts/fa-brands-400.ttf | Bin 0 -> 98704 bytes .../font-awesome/webfonts/fa-brands-400.woff | Bin 0 -> 63904 bytes .../font-awesome/webfonts/fa-brands-400.woff2 | Bin 0 -> 54684 bytes .../font-awesome/webfonts/fa-regular-400.eot | Bin 0 -> 30788 bytes .../font-awesome/webfonts/fa-regular-400.svg | 366 + .../font-awesome/webfonts/fa-regular-400.ttf | Bin 0 -> 30560 bytes .../font-awesome/webfonts/fa-regular-400.woff | Bin 0 -> 14672 bytes .../webfonts/fa-regular-400.woff2 | Bin 0 -> 12224 bytes .../font-awesome/webfonts/fa-solid-900.eot | Bin 0 -> 115152 bytes .../font-awesome/webfonts/fa-solid-900.svg | 1644 ++ .../font-awesome/webfonts/fa-solid-900.ttf | Bin 0 -> 114932 bytes .../font-awesome/webfonts/fa-solid-900.woff | Bin 0 -> 55484 bytes .../font-awesome/webfonts/fa-solid-900.woff2 | Bin 0 -> 44004 bytes .../css/material-design-iconic-font.css | 5166 ++++ .../css/material-design-iconic-font.min.css | 1 + .../css/materialdesignicons.min.css | 2 + .../css/materialdesignicons.min.css.map | 0 .../fonts/Material-Design-Iconic-Font.eot | Bin 0 -> 42495 bytes .../fonts/Material-Design-Iconic-Font.svg | 787 + .../fonts/Material-Design-Iconic-Font.ttf | Bin 0 -> 99212 bytes .../fonts/Material-Design-Iconic-Font.woff | Bin 0 -> 50312 bytes .../fonts/Material-Design-Iconic-Font.woff2 | Bin 0 -> 38384 bytes .../fonts/materialdesignicons-webfont.eot | Bin 0 -> 261608 bytes .../fonts/materialdesignicons-webfont.svg | 5520 ++++ .../fonts/materialdesignicons-webfont.ttf | Bin 0 -> 261388 bytes .../fonts/materialdesignicons-webfont.woff | Bin 0 -> 129588 bytes .../fonts/materialdesignicons-webfont.woff2 | Bin 0 -> 99736 bytes .../css/icons/themify-icons/fonts/themify.eot | Bin 0 -> 78748 bytes .../css/icons/themify-icons/fonts/themify.svg | 362 + .../css/icons/themify-icons/fonts/themify.ttf | Bin 0 -> 78584 bytes .../icons/themify-icons/fonts/themify.woff | Bin 0 -> 56108 bytes .../dist/css/icons/themify-icons/ie7/ie7.css | 1056 + .../dist/css/icons/themify-icons/ie7/ie7.js | 386 + .../css/icons/themify-icons/themify-icons.css | 1081 + .../icons/themify-icons/themify-icons.less | 1081 + .../weather-icons/css/weather-icons-core.css | 50 + .../css/weather-icons-variables.css | 0 .../weather-icons/css/weather-icons-wind.css | 5331 ++++ .../css/weather-icons-wind.min.css | 5331 ++++ .../icons/weather-icons/css/weather-icons.css | 2361 ++ .../weather-icons/css/weather-icons.min.css | 21 + .../fonts/weathericons-regular-webfont.eot | Bin 0 -> 99774 bytes .../fonts/weathericons-regular-webfont.svg | 257 + .../fonts/weathericons-regular-webfont.ttf | Bin 0 -> 99564 bytes .../fonts/weathericons-regular-webfont.woff | Bin 0 -> 56468 bytes .../fonts/weathericons-regular-webfont.woff2 | Bin 0 -> 44720 bytes .../less/css/variables-beaufort.css | 0 .../weather-icons/less/css/variables-day.css | 0 .../less/css/variables-direction.css | 0 .../weather-icons/less/css/variables-misc.css | 0 .../weather-icons/less/css/variables-moon.css | 0 .../less/css/variables-neutral.css | 0 .../less/css/variables-night.css | 0 .../weather-icons/less/css/variables-time.css | 0 .../less/css/variables-wind-names.css | 0 .../less/icon-classes/classes-beaufort.less | 13 + .../less/icon-classes/classes-day.less | 26 + .../less/icon-classes/classes-direction.less | 8 + .../less/icon-classes/classes-misc.less | 23 + .../icon-classes/classes-moon-aliases.less | 28 + .../less/icon-classes/classes-moon.less | 56 + .../less/icon-classes/classes-neutral.less | 40 + .../less/icon-classes/classes-night.less | 44 + .../less/icon-classes/classes-time.less | 12 + .../icon-classes/classes-wind-aliases.less | 96 + .../icon-classes/classes-wind-degrees.less | 724 + .../less/icon-classes/classes-wind.less | 14 + .../icon-variables/variables-beaufort.less | 13 + .../less/icon-variables/variables-day.less | 26 + .../icon-variables/variables-direction.less | 8 + .../less/icon-variables/variables-misc.less | 23 + .../less/icon-variables/variables-moon.less | 56 + .../icon-variables/variables-neutral.less | 40 + .../less/icon-variables/variables-night.less | 44 + .../less/icon-variables/variables-time.less | 12 + .../icon-variables/variables-wind-names.less | 32 + .../less/mappings/wi-forecast-io.less | 13 + .../weather-icons/less/mappings/wi-owm.less | 181 + .../less/mappings/wi-wmo4680.less | 85 + .../weather-icons/less/mappings/wi-yahoo.less | 49 + .../less/weather-icons-classes.less | 9 + .../less/weather-icons-core.less | 53 + .../less/weather-icons-variables.less | 9 + .../less/weather-icons-wind.less | 5 + .../less/weather-icons-wind.min.less | 5 + .../weather-icons/less/weather-icons.less | 30 + .../weather-icons/less/weather-icons.min.less | 30 + .../sass/icon-classes/classes-beaufort.scss | 39 + .../sass/icon-classes/classes-day.scss | 78 + .../sass/icon-classes/classes-direction.scss | 24 + .../sass/icon-classes/classes-misc.scss | 69 + .../icon-classes/classes-moon-aliases.scss | 84 + .../sass/icon-classes/classes-moon.scss | 168 + .../sass/icon-classes/classes-neutral.scss | 120 + .../sass/icon-classes/classes-night.scss | 132 + .../sass/icon-classes/classes-time.scss | 36 + .../icon-classes/classes-wind-aliases.scss | 104 + .../icon-classes/classes-wind-degrees.scss | 2172 ++ .../sass/icon-classes/classes-wind.scss | 17 + .../icon-variables/variables-beaufort.scss | 13 + .../sass/icon-variables/variables-day.scss | 26 + .../icon-variables/variables-direction.scss | 8 + .../sass/icon-variables/variables-misc.scss | 23 + .../sass/icon-variables/variables-moon.scss | 56 + .../icon-variables/variables-neutral.scss | 40 + .../sass/icon-variables/variables-night.scss | 44 + .../sass/icon-variables/variables-time.scss | 12 + .../icon-variables/variables-wind-names.scss | 32 + .../sass/mappings/wi-forecast-io.scss | 39 + .../weather-icons/sass/mappings/wi-owm.scss | 537 + .../sass/mappings/wi-wmo4680.scss | 243 + .../weather-icons/sass/mappings/wi-yahoo.scss | 147 + .../sass/weather-icons-classes.scss | 9 + .../sass/weather-icons-core.scss | 65 + .../sass/weather-icons-variables.scss | 8 + .../sass/weather-icons-wind.min.scss | 5 + .../sass/weather-icons-wind.scss | 5 + .../weather-icons/sass/weather-icons.min.scss | 30 + .../weather-icons/sass/weather-icons.scss | 30 + .../dist/css/materialdesignicons.min.css.map | 0 AirScout/wwwroot/dashboard/dist/css/style.css | 15 + .../wwwroot/dashboard/dist/css/style.min.css | 21 + .../dashboard/dist/js/app-style-switcher.js | 115 + AirScout/wwwroot/dashboard/dist/js/custom.js | 120 + .../wwwroot/dashboard/dist/js/custom.min.js | 120 + .../dashboard/dist/js/jquery-ui.min.js | 12599 +++++++++ .../dist/js/jquery.ui.touch-punch-improved.js | 207 + .../dist/js/pages/calendar/cal-init.js | 141 + .../dist/js/pages/chart/chart-init.js | 76 + .../dist/js/pages/chart/chart-page-init.js | 142 + .../dist/js/pages/dashboards/dashboard1.js | 118 + .../dist/js/pages/maps/map-google.init.js | 299 + .../dashboard/dist/js/pages/mask/mask.init.js | 31 + .../sparkline/jquery.charts-sparkline.js | 240 + .../wwwroot/dashboard/dist/js/sidebarmenu.js | 52 + AirScout/wwwroot/dashboard/dist/js/waves.js | 206 + .../dashboard/html/authentication-login.html | 227 + .../html/authentication-register.html | 191 + AirScout/wwwroot/dashboard/html/charts.html | 871 + .../wwwroot/dashboard/html/error-403.html | 100 + .../wwwroot/dashboard/html/error-404.html | 100 + .../wwwroot/dashboard/html/error-405.html | 100 + .../wwwroot/dashboard/html/error-500.html | 100 + .../wwwroot/dashboard/html/form-basic.html | 1592 ++ .../wwwroot/dashboard/html/form-wizard.html | 836 + AirScout/wwwroot/dashboard/html/grid.html | 882 + .../dashboard/html/icon-fontawesome.html | 4075 +++ .../wwwroot/dashboard/html/icon-material.html | 9447 +++++++ AirScout/wwwroot/dashboard/html/index.html | 650 + AirScout/wwwroot/dashboard/html/index2.html | 1491 ++ .../wwwroot/dashboard/html/pages-buttons.html | 1160 + .../dashboard/html/pages-calendar.html | 912 + .../wwwroot/dashboard/html/pages-chat.html | 805 + .../dashboard/html/pages-elements.html | 1727 ++ .../wwwroot/dashboard/html/pages-gallery.html | 1164 + .../wwwroot/dashboard/html/pages-invoice.html | 817 + AirScout/wwwroot/dashboard/html/tables.html | 1390 + AirScout/wwwroot/dashboard/html/widgets.html | 1867 ++ .../dashboard/src/scss/_landingpage.scss | 136 + .../src/scss/bootstrap/_accordion.scss | 124 + .../dashboard/src/scss/bootstrap/_alert.scss | 55 + .../dashboard/src/scss/bootstrap/_badge.scss | 29 + .../src/scss/bootstrap/_breadcrumb.scss | 35 + .../src/scss/bootstrap/_button-group.scss | 140 + .../src/scss/bootstrap/_buttons.scss | 121 + .../dashboard/src/scss/bootstrap/_card.scss | 217 + .../src/scss/bootstrap/_carousel.scss | 228 + .../dashboard/src/scss/bootstrap/_close.scss | 41 + .../src/scss/bootstrap/_containers.scss | 41 + .../src/scss/bootstrap/_dropdown.scss | 234 + .../dashboard/src/scss/bootstrap/_forms.scss | 9 + .../src/scss/bootstrap/_functions.scss | 279 + .../dashboard/src/scss/bootstrap/_grid.scss | 21 + .../src/scss/bootstrap/_helpers.scss | 7 + .../dashboard/src/scss/bootstrap/_images.scss | 41 + .../src/scss/bootstrap/_list-group.scss | 158 + .../dashboard/src/scss/bootstrap/_mixins.scss | 41 + .../dashboard/src/scss/bootstrap/_modal.scss | 243 + .../dashboard/src/scss/bootstrap/_nav.scss | 124 + .../dashboard/src/scss/bootstrap/_navbar.scss | 287 + .../src/scss/bootstrap/_pagination.scss | 78 + .../src/scss/bootstrap/_popover.scss | 180 + .../src/scss/bootstrap/_progress.scss | 47 + .../dashboard/src/scss/bootstrap/_reboot.scss | 615 + .../dashboard/src/scss/bootstrap/_root.scss | 16 + .../src/scss/bootstrap/_spinners.scss | 67 + .../dashboard/src/scss/bootstrap/_tables.scss | 155 + .../dashboard/src/scss/bootstrap/_toasts.scss | 52 + .../src/scss/bootstrap/_tooltip.scss | 119 + .../src/scss/bootstrap/_transitions.scss | 19 + .../dashboard/src/scss/bootstrap/_type.scss | 102 + .../src/scss/bootstrap/_utilities.scss | 645 + .../src/scss/bootstrap/_variables.scss | 1365 + .../src/scss/bootstrap/bootstrap-grid.scss | 65 + .../src/scss/bootstrap/bootstrap-reboot.scss | 15 + .../scss/bootstrap/bootstrap-utilities.scss | 17 + .../src/scss/bootstrap/bootstrap.scss | 51 + .../bootstrap/forms/_floating-labels.scss | 61 + .../src/scss/bootstrap/forms/_form-check.scss | 155 + .../scss/bootstrap/forms/_form-control.scss | 235 + .../src/scss/bootstrap/forms/_form-range.scss | 98 + .../scss/bootstrap/forms/_form-select.scss | 73 + .../src/scss/bootstrap/forms/_form-text.scss | 11 + .../scss/bootstrap/forms/_input-group.scss | 124 + .../src/scss/bootstrap/forms/_labels.scss | 36 + .../src/scss/bootstrap/forms/_validation.scss | 16 + .../src/scss/bootstrap/helpers/_clearfix.scss | 3 + .../bootstrap/helpers/_colored-links.scss | 16 + .../src/scss/bootstrap/helpers/_position.scss | 30 + .../src/scss/bootstrap/helpers/_ratio.scss | 26 + .../bootstrap/helpers/_stretched-link.scss | 15 + .../bootstrap/helpers/_text-truncation.scss | 7 + .../bootstrap/helpers/_visually-hidden.scss | 8 + .../src/scss/bootstrap/mixins/_alert.scss | 9 + .../scss/bootstrap/mixins/_border-radius.scss | 75 + .../scss/bootstrap/mixins/_box-shadow.scss | 18 + .../scss/bootstrap/mixins/_breakpoints.scss | 139 + .../src/scss/bootstrap/mixins/_buttons.scss | 157 + .../src/scss/bootstrap/mixins/_caret.scss | 62 + .../src/scss/bootstrap/mixins/_clearfix.scss | 9 + .../src/scss/bootstrap/mixins/_container.scss | 9 + .../src/scss/bootstrap/mixins/_deprecate.scss | 15 + .../src/scss/bootstrap/mixins/_forms.scss | 122 + .../src/scss/bootstrap/mixins/_gradients.scss | 93 + .../src/scss/bootstrap/mixins/_grid.scss | 139 + .../src/scss/bootstrap/mixins/_image.scss | 15 + .../scss/bootstrap/mixins/_list-group.scss | 22 + .../src/scss/bootstrap/mixins/_lists.scss | 7 + .../scss/bootstrap/mixins/_pagination.scss | 29 + .../scss/bootstrap/mixins/_reset-text.scss | 17 + .../src/scss/bootstrap/mixins/_resize.scss | 6 + .../bootstrap/mixins/_table-variants.scss | 21 + .../scss/bootstrap/mixins/_text-truncate.scss | 8 + .../scss/bootstrap/mixins/_transition.scss | 31 + .../src/scss/bootstrap/mixins/_utilities.scss | 83 + .../bootstrap/mixins/_visually-hidden.scss | 28 + .../src/scss/bootstrap/utilities/_api.scss | 48 + .../src/scss/bootstrap/vendor/_rfs.scss | 341 + .../dashboard/src/scss/components.scss | 7 + .../src/scss/core/animation/animation.scss | 2914 +++ .../src/scss/core/breadcrumb/breadcrumb.scss | 22 + .../src/scss/core/buttons/buttons.scss | 170 + .../wwwroot/dashboard/src/scss/core/core.scss | 30 + .../dashboard/src/scss/core/extra/extra.scss | 324 + .../src/scss/core/layout/layout.scss | 168 + .../src/scss/core/loader/spinner.scss | 58 + .../perfect-scrollbar/perfect-scrollbar.scss | 166 + .../scss/core/scafholdings/scafholding.scss | 520 + .../src/scss/core/sidebar/sidebar.scss | 177 + .../src/scss/core/tables/table-pages.scss | 61 + .../src/scss/core/topbar/header.scss | 165 + .../src/scss/core/topbar/notify.scss | 83 + .../scss/core/wave-effects/wave-effects.scss | 127 + .../wwwroot/dashboard/src/scss/custom.scss | 1 + .../src/scss/mixins/padding-margin.scss | 45 + .../wwwroot/dashboard/src/scss/pages.scss | 1 + .../src/scss/pages/dashboards/dashboard1.scss | 30 + .../dashboard/src/scss/responsive.scss | 38 + .../wwwroot/dashboard/src/scss/style.scss | 32 + .../src/scss/theme-colors/theme-colors.scss | 25 + .../wwwroot/dashboard/src/scss/variable.scss | 296 + .../src/scss/widgets/chat-widgets.scss | 74 + .../dashboard/src/scss/widgets/comments.scss | 30 + .../dashboard/src/scss/widgets/feeds.scss | 25 + .../dashboard/src/scss/widgets/gal-card.scss | 112 + .../dashboard/src/scss/widgets/profile.scss | 25 + .../dashboard/src/scss/widgets/steamline.scss | 86 + .../dashboard/src/scss/widgets/task.scss | 44 + .../dashboard/src/scss/widgets/widgets.scss | 14 + AirScout/wwwroot/index.html | 15 + AirScout/wwwroot/leaflet/images/layers-2x.png | Bin 0 -> 1259 bytes AirScout/wwwroot/leaflet/images/layers.png | Bin 0 -> 696 bytes .../leaflet/images/marker-icon-2x-black.png | Bin 0 -> 3183 bytes .../leaflet/images/marker-icon-2x-blue.png | Bin 0 -> 4033 bytes .../leaflet/images/marker-icon-2x-gold.png | Bin 0 -> 4274 bytes .../leaflet/images/marker-icon-2x-green.png | Bin 0 -> 4203 bytes .../leaflet/images/marker-icon-2x-grey.png | Bin 0 -> 3534 bytes .../leaflet/images/marker-icon-2x-orange.png | Bin 0 -> 4167 bytes .../leaflet/images/marker-icon-2x-red.png | Bin 0 -> 4230 bytes .../leaflet/images/marker-icon-2x-violet.png | Bin 0 -> 4190 bytes .../leaflet/images/marker-icon-2x-yellow.png | Bin 0 -> 4159 bytes .../wwwroot/leaflet/images/marker-icon-2x.png | Bin 0 -> 2464 bytes .../leaflet/images/marker-icon-black.png | Bin 0 -> 1523 bytes .../leaflet/images/marker-icon-blue.png | Bin 0 -> 1747 bytes .../leaflet/images/marker-icon-gold.png | Bin 0 -> 1862 bytes .../leaflet/images/marker-icon-green.png | Bin 0 -> 1822 bytes .../leaflet/images/marker-icon-grey.png | Bin 0 -> 1691 bytes .../leaflet/images/marker-icon-orange.png | Bin 0 -> 1862 bytes .../leaflet/images/marker-icon-red.png | Bin 0 -> 1870 bytes .../leaflet/images/marker-icon-violet.png | Bin 0 -> 1859 bytes .../leaflet/images/marker-icon-yellow.png | Bin 0 -> 1862 bytes .../wwwroot/leaflet/images/marker-icon.png | Bin 0 -> 1466 bytes .../wwwroot/leaflet/images/marker-shadow.png | Bin 0 -> 608 bytes AirScout/wwwroot/leaflet/leaflet-src.esm.js | 14033 ++++++++++ .../wwwroot/leaflet/leaflet-src.esm.js.map | 1 + AirScout/wwwroot/leaflet/leaflet-src.js | 14126 ++++++++++ AirScout/wwwroot/leaflet/leaflet-src.js.map | 1 + AirScout/wwwroot/leaflet/leaflet.css | 749 + AirScout/wwwroot/leaflet/leaflet.js | 6 + AirScout/wwwroot/leaflet/leaflet.js.map | 1 + .../wwwroot/leaflet/leaflet.rotatedMarker.js | 57 + .../resources/icons/plane_darkorange.png | Bin 0 -> 720 bytes .../wwwroot/resources/icons/plane_gray.png | Bin 0 -> 650 bytes .../wwwroot/resources/icons/plane_magenta.png | Bin 0 -> 683 bytes .../wwwroot/resources/icons/plane_red.png | Bin 0 -> 701 bytes .../resources/js/airscout.aircrafts.js | 9 + .../wwwroot/resources/js/airscout.core.js | 86 + AirScout/wwwroot/resources/js/airscout.js | 14 + AirScout/wwwroot/resources/js/jquery.js | 10909 ++++++++ AirScout/wwwroot/resources/js/jquery.min.js | 2 + .../wwwroot/resources/js/scoutbase.core.js | 212 + LibADSB/ADSBDecoder.cs | 43 +- LibADSB/AirbornePositionMsg.cs | 74 +- LibADSB/AirspeedHeadingMsg.cs | 21 + LibADSB/VelocityOverGroundMsg.cs | 19 + ScoutBase/ScoutBase.CAT/CATUpdater.cs | 8 +- ScoutBase/ScoutBase.CAT/ScoutBase.CAT.csproj | 12 +- ScoutBase/ScoutBase.CAT/packages.config | 1 - ScoutBase/ScoutBase.Core/Propagation.cs | 17 +- .../ScoutBase.Propagation/PropagationPath.cs | 3 - WinTest/WinTest.cs | 1 + 1214 files changed, 625316 insertions(+), 2241 deletions(-) create mode 100644 AirScout.PlaneFeeds.Plugin.RB24/AirScout.PlaneFeeds.Plugin.RB24.csproj create mode 100644 AirScout.PlaneFeeds.Plugin.RB24/Properties/AssemblyInfo.cs create mode 100644 AirScout.PlaneFeeds.Plugin.RB24/Properties/Settings.Designer.cs create mode 100644 AirScout.PlaneFeeds.Plugin.RB24/Properties/Settings.settings create mode 100644 AirScout.PlaneFeeds.Plugin.RB24/RB24.cs create mode 100644 AirScout.PlaneFeeds.Plugin.RB24/app.config create mode 100644 AirScout.PlaneFeeds.Plugin.RB24/packages.config create mode 100644 AirScout.PlaneFeeds.Plugin.RadarVirtuel/AirScout.PlaneFeeds.Plugin.RadarVirtuel.csproj create mode 100644 AirScout.PlaneFeeds.Plugin.RadarVirtuel/Properties/AssemblyInfo.cs create mode 100644 AirScout.PlaneFeeds.Plugin.RadarVirtuel/Properties/Settings.Designer.cs create mode 100644 AirScout.PlaneFeeds.Plugin.RadarVirtuel/Properties/Settings.settings create mode 100644 AirScout.PlaneFeeds.Plugin.RadarVirtuel/RadarVirtuel.cs create mode 100644 AirScout.PlaneFeeds.Plugin.RadarVirtuel/app.config create mode 100644 AirScout.PlaneFeeds.Plugin.RadarVirtuel/packages.config create mode 100644 AirScout.PlaneFeeds.Plugin.VRSWebServer/AirScout.PlaneFeeds.Plugin.VRSWebServer.csproj create mode 100644 AirScout.PlaneFeeds.Plugin.VRSWebServer/AircraftJson.cs create mode 100644 AirScout.PlaneFeeds.Plugin.VRSWebServer/AircraftListJson.cs create mode 100644 AirScout.PlaneFeeds.Plugin.VRSWebServer/FeedJson.cs create mode 100644 AirScout.PlaneFeeds.Plugin.VRSWebServer/Properties/AssemblyInfo.cs create mode 100644 AirScout.PlaneFeeds.Plugin.VRSWebServer/Properties/Settings.Designer.cs create mode 100644 AirScout.PlaneFeeds.Plugin.VRSWebServer/Properties/Settings.settings create mode 100644 AirScout.PlaneFeeds.Plugin.VRSWebServer/TLS.cs create mode 100644 AirScout.PlaneFeeds.Plugin.VRSWebServer/VRSWebServer.cs create mode 100644 AirScout.PlaneFeeds.Plugin.VRSWebServer/app.config create mode 100644 AirScout.PlaneFeeds.Plugin.VRSWebServer/packages.config create mode 100644 AirScout/AirScout - Kopie.csproj create mode 100644 AirScout/WebserverStartArgs.cs create mode 100644 AirScout/wwwroot/dashboard/assets/extra-libs/DataTables/DataTables-1.10.16/css/dataTables.bootstrap.css create mode 100644 AirScout/wwwroot/dashboard/assets/extra-libs/DataTables/DataTables-1.10.16/css/dataTables.bootstrap.min.css create mode 100644 AirScout/wwwroot/dashboard/assets/extra-libs/DataTables/DataTables-1.10.16/css/dataTables.bootstrap4.css create mode 100644 AirScout/wwwroot/dashboard/assets/extra-libs/DataTables/DataTables-1.10.16/css/dataTables.bootstrap4.min.css create mode 100644 AirScout/wwwroot/dashboard/assets/extra-libs/DataTables/DataTables-1.10.16/css/dataTables.foundation.css create mode 100644 AirScout/wwwroot/dashboard/assets/extra-libs/DataTables/DataTables-1.10.16/css/dataTables.foundation.min.css create mode 100644 AirScout/wwwroot/dashboard/assets/extra-libs/DataTables/DataTables-1.10.16/css/dataTables.jqueryui.css create mode 100644 AirScout/wwwroot/dashboard/assets/extra-libs/DataTables/DataTables-1.10.16/css/dataTables.jqueryui.min.css create mode 100644 AirScout/wwwroot/dashboard/assets/extra-libs/DataTables/DataTables-1.10.16/css/dataTables.semanticui.css create mode 100644 AirScout/wwwroot/dashboard/assets/extra-libs/DataTables/DataTables-1.10.16/css/dataTables.semanticui.min.css create mode 100644 AirScout/wwwroot/dashboard/assets/extra-libs/DataTables/DataTables-1.10.16/css/jquery.dataTables.css create mode 100644 AirScout/wwwroot/dashboard/assets/extra-libs/DataTables/DataTables-1.10.16/css/jquery.dataTables.min.css create mode 100644 AirScout/wwwroot/dashboard/assets/extra-libs/DataTables/DataTables-1.10.16/images/sort_asc.png create mode 100644 AirScout/wwwroot/dashboard/assets/extra-libs/DataTables/DataTables-1.10.16/images/sort_asc_disabled.png create mode 100644 AirScout/wwwroot/dashboard/assets/extra-libs/DataTables/DataTables-1.10.16/images/sort_both.png create mode 100644 AirScout/wwwroot/dashboard/assets/extra-libs/DataTables/DataTables-1.10.16/images/sort_desc.png create mode 100644 AirScout/wwwroot/dashboard/assets/extra-libs/DataTables/DataTables-1.10.16/images/sort_desc_disabled.png create mode 100644 AirScout/wwwroot/dashboard/assets/extra-libs/DataTables/DataTables-1.10.16/js/dataTables.bootstrap.js create mode 100644 AirScout/wwwroot/dashboard/assets/extra-libs/DataTables/DataTables-1.10.16/js/dataTables.bootstrap.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/extra-libs/DataTables/DataTables-1.10.16/js/dataTables.bootstrap4.js create mode 100644 AirScout/wwwroot/dashboard/assets/extra-libs/DataTables/DataTables-1.10.16/js/dataTables.bootstrap4.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/extra-libs/DataTables/DataTables-1.10.16/js/dataTables.foundation.js create mode 100644 AirScout/wwwroot/dashboard/assets/extra-libs/DataTables/DataTables-1.10.16/js/dataTables.foundation.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/extra-libs/DataTables/DataTables-1.10.16/js/dataTables.jqueryui.js create mode 100644 AirScout/wwwroot/dashboard/assets/extra-libs/DataTables/DataTables-1.10.16/js/dataTables.jqueryui.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/extra-libs/DataTables/DataTables-1.10.16/js/dataTables.semanticui.js create mode 100644 AirScout/wwwroot/dashboard/assets/extra-libs/DataTables/DataTables-1.10.16/js/dataTables.semanticui.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/extra-libs/DataTables/DataTables-1.10.16/js/jquery.dataTables.js create mode 100644 AirScout/wwwroot/dashboard/assets/extra-libs/DataTables/DataTables-1.10.16/js/jquery.dataTables.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/extra-libs/DataTables/datatables.css create mode 100644 AirScout/wwwroot/dashboard/assets/extra-libs/DataTables/datatables.js create mode 100644 AirScout/wwwroot/dashboard/assets/extra-libs/DataTables/datatables.min.css create mode 100644 AirScout/wwwroot/dashboard/assets/extra-libs/DataTables/datatables.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/extra-libs/calendar/calendar.css create mode 100644 AirScout/wwwroot/dashboard/assets/extra-libs/gritter/jquery.gritter.css create mode 100644 AirScout/wwwroot/dashboard/assets/extra-libs/gritter/jquery.gritter.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/extra-libs/multicheck/datatable-checkbox-init.js create mode 100644 AirScout/wwwroot/dashboard/assets/extra-libs/multicheck/jquery.multicheck.js create mode 100644 AirScout/wwwroot/dashboard/assets/extra-libs/multicheck/multicheck.css create mode 100644 AirScout/wwwroot/dashboard/assets/extra-libs/sparkline/sparkline.js create mode 100644 AirScout/wwwroot/dashboard/assets/images/background/error-bg.jpg create mode 100644 AirScout/wwwroot/dashboard/assets/images/background/img4.jpg create mode 100644 AirScout/wwwroot/dashboard/assets/images/background/img5.jpg create mode 100644 AirScout/wwwroot/dashboard/assets/images/background/img6.jpg create mode 100644 AirScout/wwwroot/dashboard/assets/images/big/img1.jpg create mode 100644 AirScout/wwwroot/dashboard/assets/images/big/img2.jpg create mode 100644 AirScout/wwwroot/dashboard/assets/images/big/img3.jpg create mode 100644 AirScout/wwwroot/dashboard/assets/images/big/img4.jpg create mode 100644 AirScout/wwwroot/dashboard/assets/images/big/img5.jpg create mode 100644 AirScout/wwwroot/dashboard/assets/images/big/img6.jpg create mode 100644 AirScout/wwwroot/dashboard/assets/images/custom-select.png create mode 100644 AirScout/wwwroot/dashboard/assets/images/favicon.png create mode 100644 AirScout/wwwroot/dashboard/assets/images/free-demo.jpg create mode 100644 AirScout/wwwroot/dashboard/assets/images/logo-icon.png create mode 100644 AirScout/wwwroot/dashboard/assets/images/logo-text.png create mode 100644 AirScout/wwwroot/dashboard/assets/images/logo.png create mode 100644 AirScout/wwwroot/dashboard/assets/images/users/1-old.jpg create mode 100644 AirScout/wwwroot/dashboard/assets/images/users/1.jpg create mode 100644 AirScout/wwwroot/dashboard/assets/images/users/1.png create mode 100644 AirScout/wwwroot/dashboard/assets/images/users/2.jpg create mode 100644 AirScout/wwwroot/dashboard/assets/images/users/2.png create mode 100644 AirScout/wwwroot/dashboard/assets/images/users/3.jpg create mode 100644 AirScout/wwwroot/dashboard/assets/images/users/3.png create mode 100644 AirScout/wwwroot/dashboard/assets/images/users/4.jpg create mode 100644 AirScout/wwwroot/dashboard/assets/images/users/5.jpg create mode 100644 AirScout/wwwroot/dashboard/assets/images/users/6.jpg create mode 100644 AirScout/wwwroot/dashboard/assets/images/users/7.jpg create mode 100644 AirScout/wwwroot/dashboard/assets/images/users/8.jpg create mode 100644 AirScout/wwwroot/dashboard/assets/images/users/agent.jpg create mode 100644 AirScout/wwwroot/dashboard/assets/images/users/agent2.jpg create mode 100644 AirScout/wwwroot/dashboard/assets/images/users/d1.jpg create mode 100644 AirScout/wwwroot/dashboard/assets/images/users/d2.jpg create mode 100644 AirScout/wwwroot/dashboard/assets/images/users/d3.jpg create mode 100644 AirScout/wwwroot/dashboard/assets/images/users/d4.jpg create mode 100644 AirScout/wwwroot/dashboard/assets/images/users/d5.jpg create mode 100644 AirScout/wwwroot/dashboard/assets/images/users/profile.png create mode 100644 AirScout/wwwroot/dashboard/assets/libs/bootstrap-datepicker/dist/css/bootstrap-datepicker.min.css create mode 100644 AirScout/wwwroot/dashboard/assets/libs/bootstrap-datepicker/dist/css/bootstrap-datepicker.standalone.min.css create mode 100644 AirScout/wwwroot/dashboard/assets/libs/bootstrap-datepicker/dist/css/bootstrap-datepicker3.min.css create mode 100644 AirScout/wwwroot/dashboard/assets/libs/bootstrap-datepicker/dist/css/bootstrap-datepicker3.standalone.min.css create mode 100644 AirScout/wwwroot/dashboard/assets/libs/bootstrap-datepicker/dist/js/bootstrap-datepicker.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/bootstrap-datepicker/dist/locales/bootstrap-datepicker-en-CA.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/bootstrap-datepicker/dist/locales/bootstrap-datepicker.ar-tn.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/bootstrap-datepicker/dist/locales/bootstrap-datepicker.ar.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/bootstrap-datepicker/dist/locales/bootstrap-datepicker.az.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/bootstrap-datepicker/dist/locales/bootstrap-datepicker.bg.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/bootstrap-datepicker/dist/locales/bootstrap-datepicker.bn.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/bootstrap-datepicker/dist/locales/bootstrap-datepicker.br.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/bootstrap-datepicker/dist/locales/bootstrap-datepicker.bs.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/bootstrap-datepicker/dist/locales/bootstrap-datepicker.ca.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/bootstrap-datepicker/dist/locales/bootstrap-datepicker.cs.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/bootstrap-datepicker/dist/locales/bootstrap-datepicker.cy.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/bootstrap-datepicker/dist/locales/bootstrap-datepicker.da.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/bootstrap-datepicker/dist/locales/bootstrap-datepicker.de.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/bootstrap-datepicker/dist/locales/bootstrap-datepicker.el.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/bootstrap-datepicker/dist/locales/bootstrap-datepicker.en-AU.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/bootstrap-datepicker/dist/locales/bootstrap-datepicker.en-CA.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/bootstrap-datepicker/dist/locales/bootstrap-datepicker.en-GB.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/bootstrap-datepicker/dist/locales/bootstrap-datepicker.en-IE.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/bootstrap-datepicker/dist/locales/bootstrap-datepicker.en-NZ.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/bootstrap-datepicker/dist/locales/bootstrap-datepicker.en-ZA.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/bootstrap-datepicker/dist/locales/bootstrap-datepicker.eo.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/bootstrap-datepicker/dist/locales/bootstrap-datepicker.es.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/bootstrap-datepicker/dist/locales/bootstrap-datepicker.et.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/bootstrap-datepicker/dist/locales/bootstrap-datepicker.eu.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/bootstrap-datepicker/dist/locales/bootstrap-datepicker.fa.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/bootstrap-datepicker/dist/locales/bootstrap-datepicker.fi.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/bootstrap-datepicker/dist/locales/bootstrap-datepicker.fo.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/bootstrap-datepicker/dist/locales/bootstrap-datepicker.fr-CH.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/bootstrap-datepicker/dist/locales/bootstrap-datepicker.fr.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/bootstrap-datepicker/dist/locales/bootstrap-datepicker.gl.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/bootstrap-datepicker/dist/locales/bootstrap-datepicker.he.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/bootstrap-datepicker/dist/locales/bootstrap-datepicker.hi.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/bootstrap-datepicker/dist/locales/bootstrap-datepicker.hr.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/bootstrap-datepicker/dist/locales/bootstrap-datepicker.hu.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/bootstrap-datepicker/dist/locales/bootstrap-datepicker.hy.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/bootstrap-datepicker/dist/locales/bootstrap-datepicker.id.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/bootstrap-datepicker/dist/locales/bootstrap-datepicker.is.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/bootstrap-datepicker/dist/locales/bootstrap-datepicker.it-CH.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/bootstrap-datepicker/dist/locales/bootstrap-datepicker.it.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/bootstrap-datepicker/dist/locales/bootstrap-datepicker.ja.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/bootstrap-datepicker/dist/locales/bootstrap-datepicker.ka.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/bootstrap-datepicker/dist/locales/bootstrap-datepicker.kh.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/bootstrap-datepicker/dist/locales/bootstrap-datepicker.kk.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/bootstrap-datepicker/dist/locales/bootstrap-datepicker.km.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/bootstrap-datepicker/dist/locales/bootstrap-datepicker.ko.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/bootstrap-datepicker/dist/locales/bootstrap-datepicker.kr.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/bootstrap-datepicker/dist/locales/bootstrap-datepicker.lt.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/bootstrap-datepicker/dist/locales/bootstrap-datepicker.lv.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/bootstrap-datepicker/dist/locales/bootstrap-datepicker.me.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/bootstrap-datepicker/dist/locales/bootstrap-datepicker.mk.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/bootstrap-datepicker/dist/locales/bootstrap-datepicker.mn.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/bootstrap-datepicker/dist/locales/bootstrap-datepicker.ms.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/bootstrap-datepicker/dist/locales/bootstrap-datepicker.nl-BE.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/bootstrap-datepicker/dist/locales/bootstrap-datepicker.nl.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/bootstrap-datepicker/dist/locales/bootstrap-datepicker.no.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/bootstrap-datepicker/dist/locales/bootstrap-datepicker.oc.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/bootstrap-datepicker/dist/locales/bootstrap-datepicker.pl.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/bootstrap-datepicker/dist/locales/bootstrap-datepicker.pt-BR.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/bootstrap-datepicker/dist/locales/bootstrap-datepicker.pt.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/bootstrap-datepicker/dist/locales/bootstrap-datepicker.ro.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/bootstrap-datepicker/dist/locales/bootstrap-datepicker.rs-latin.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/bootstrap-datepicker/dist/locales/bootstrap-datepicker.rs.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/bootstrap-datepicker/dist/locales/bootstrap-datepicker.ru.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/bootstrap-datepicker/dist/locales/bootstrap-datepicker.si.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/bootstrap-datepicker/dist/locales/bootstrap-datepicker.sk.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/bootstrap-datepicker/dist/locales/bootstrap-datepicker.sl.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/bootstrap-datepicker/dist/locales/bootstrap-datepicker.sq.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/bootstrap-datepicker/dist/locales/bootstrap-datepicker.sr-latin.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/bootstrap-datepicker/dist/locales/bootstrap-datepicker.sr.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/bootstrap-datepicker/dist/locales/bootstrap-datepicker.sv.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/bootstrap-datepicker/dist/locales/bootstrap-datepicker.sw.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/bootstrap-datepicker/dist/locales/bootstrap-datepicker.ta.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/bootstrap-datepicker/dist/locales/bootstrap-datepicker.tg.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/bootstrap-datepicker/dist/locales/bootstrap-datepicker.th.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/bootstrap-datepicker/dist/locales/bootstrap-datepicker.tk.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/bootstrap-datepicker/dist/locales/bootstrap-datepicker.tr.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/bootstrap-datepicker/dist/locales/bootstrap-datepicker.uk.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/bootstrap-datepicker/dist/locales/bootstrap-datepicker.uz-cyrl.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/bootstrap-datepicker/dist/locales/bootstrap-datepicker.uz-latn.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/bootstrap-datepicker/dist/locales/bootstrap-datepicker.vi.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/bootstrap-datepicker/dist/locales/bootstrap-datepicker.zh-CN.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/bootstrap-datepicker/dist/locales/bootstrap-datepicker.zh-TW.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/bootstrap/dist/css/bootstrap-grid.css create mode 100644 AirScout/wwwroot/dashboard/assets/libs/bootstrap/dist/css/bootstrap-grid.css.map create mode 100644 AirScout/wwwroot/dashboard/assets/libs/bootstrap/dist/css/bootstrap-grid.min.css create mode 100644 AirScout/wwwroot/dashboard/assets/libs/bootstrap/dist/css/bootstrap-grid.min.css.map create mode 100644 AirScout/wwwroot/dashboard/assets/libs/bootstrap/dist/css/bootstrap-grid.rtl.css create mode 100644 AirScout/wwwroot/dashboard/assets/libs/bootstrap/dist/css/bootstrap-grid.rtl.css.map create mode 100644 AirScout/wwwroot/dashboard/assets/libs/bootstrap/dist/css/bootstrap-grid.rtl.min.css create mode 100644 AirScout/wwwroot/dashboard/assets/libs/bootstrap/dist/css/bootstrap-grid.rtl.min.css.map create mode 100644 AirScout/wwwroot/dashboard/assets/libs/bootstrap/dist/css/bootstrap-reboot.css create mode 100644 AirScout/wwwroot/dashboard/assets/libs/bootstrap/dist/css/bootstrap-reboot.css.map create mode 100644 AirScout/wwwroot/dashboard/assets/libs/bootstrap/dist/css/bootstrap-reboot.min.css create mode 100644 AirScout/wwwroot/dashboard/assets/libs/bootstrap/dist/css/bootstrap-reboot.min.css.map create mode 100644 AirScout/wwwroot/dashboard/assets/libs/bootstrap/dist/css/bootstrap-reboot.rtl.css create mode 100644 AirScout/wwwroot/dashboard/assets/libs/bootstrap/dist/css/bootstrap-reboot.rtl.css.map create mode 100644 AirScout/wwwroot/dashboard/assets/libs/bootstrap/dist/css/bootstrap-reboot.rtl.min.css create mode 100644 AirScout/wwwroot/dashboard/assets/libs/bootstrap/dist/css/bootstrap-reboot.rtl.min.css.map create mode 100644 AirScout/wwwroot/dashboard/assets/libs/bootstrap/dist/css/bootstrap-utilities.css create mode 100644 AirScout/wwwroot/dashboard/assets/libs/bootstrap/dist/css/bootstrap-utilities.css.map create mode 100644 AirScout/wwwroot/dashboard/assets/libs/bootstrap/dist/css/bootstrap-utilities.min.css create mode 100644 AirScout/wwwroot/dashboard/assets/libs/bootstrap/dist/css/bootstrap-utilities.min.css.map create mode 100644 AirScout/wwwroot/dashboard/assets/libs/bootstrap/dist/css/bootstrap-utilities.rtl.css create mode 100644 AirScout/wwwroot/dashboard/assets/libs/bootstrap/dist/css/bootstrap-utilities.rtl.css.map create mode 100644 AirScout/wwwroot/dashboard/assets/libs/bootstrap/dist/css/bootstrap-utilities.rtl.min.css create mode 100644 AirScout/wwwroot/dashboard/assets/libs/bootstrap/dist/css/bootstrap-utilities.rtl.min.css.map create mode 100644 AirScout/wwwroot/dashboard/assets/libs/bootstrap/dist/css/bootstrap.css create mode 100644 AirScout/wwwroot/dashboard/assets/libs/bootstrap/dist/css/bootstrap.css.map create mode 100644 AirScout/wwwroot/dashboard/assets/libs/bootstrap/dist/css/bootstrap.min.css create mode 100644 AirScout/wwwroot/dashboard/assets/libs/bootstrap/dist/css/bootstrap.min.css.map create mode 100644 AirScout/wwwroot/dashboard/assets/libs/bootstrap/dist/css/bootstrap.rtl.css create mode 100644 AirScout/wwwroot/dashboard/assets/libs/bootstrap/dist/css/bootstrap.rtl.css.map create mode 100644 AirScout/wwwroot/dashboard/assets/libs/bootstrap/dist/css/bootstrap.rtl.min.css create mode 100644 AirScout/wwwroot/dashboard/assets/libs/bootstrap/dist/css/bootstrap.rtl.min.css.map create mode 100644 AirScout/wwwroot/dashboard/assets/libs/bootstrap/dist/js/bootstrap.bundle.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/bootstrap/dist/js/bootstrap.bundle.js.map create mode 100644 AirScout/wwwroot/dashboard/assets/libs/bootstrap/dist/js/bootstrap.bundle.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/bootstrap/dist/js/bootstrap.bundle.min.js.map create mode 100644 AirScout/wwwroot/dashboard/assets/libs/bootstrap/dist/js/bootstrap.esm.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/bootstrap/dist/js/bootstrap.esm.js.map create mode 100644 AirScout/wwwroot/dashboard/assets/libs/bootstrap/dist/js/bootstrap.esm.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/bootstrap/dist/js/bootstrap.esm.min.js.map create mode 100644 AirScout/wwwroot/dashboard/assets/libs/bootstrap/dist/js/bootstrap.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/bootstrap/dist/js/bootstrap.js.map create mode 100644 AirScout/wwwroot/dashboard/assets/libs/bootstrap/dist/js/bootstrap.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/bootstrap/dist/js/bootstrap.min.js.map create mode 100644 AirScout/wwwroot/dashboard/assets/libs/chart/chart.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/chart/excanvas.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/chart/jquery.flot.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/chart/jquery.flot.pie.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/chart/jquery.flot.resize.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/chart/jquery.peity.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/chart/jquery.ui.custom.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/chart/matrix.charts.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/chart/matrix.dashboard.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/chart/matrix.interface.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/chart/turning-series.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/datatables.net-bs4/css/dataTables.bootstrap4.css create mode 100644 AirScout/wwwroot/dashboard/assets/libs/datatables.net-bs4/js/dataTables.bootstrap4.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/datatables/license.txt create mode 100644 AirScout/wwwroot/dashboard/assets/libs/datatables/media/css/jquery.dataTables.min.css create mode 100644 AirScout/wwwroot/dashboard/assets/libs/datatables/media/images/Sorting icons.psd create mode 100644 AirScout/wwwroot/dashboard/assets/libs/datatables/media/images/favicon.ico create mode 100644 AirScout/wwwroot/dashboard/assets/libs/datatables/media/images/sort_asc.png create mode 100644 AirScout/wwwroot/dashboard/assets/libs/datatables/media/images/sort_asc_disabled.png create mode 100644 AirScout/wwwroot/dashboard/assets/libs/datatables/media/images/sort_both.png create mode 100644 AirScout/wwwroot/dashboard/assets/libs/datatables/media/images/sort_desc.png create mode 100644 AirScout/wwwroot/dashboard/assets/libs/datatables/media/images/sort_desc_disabled.png create mode 100644 AirScout/wwwroot/dashboard/assets/libs/datatables/media/js/jquery.dataTables.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/flot.tooltip/.bower.json create mode 100644 AirScout/wwwroot/dashboard/assets/libs/flot.tooltip/bower.json create mode 100644 AirScout/wwwroot/dashboard/assets/libs/flot.tooltip/js/excanvas.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/flot.tooltip/js/jquery.flot.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/flot.tooltip/js/jquery.flot.tooltip.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/flot.tooltip/js/jquery.flot.tooltip.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/flot.tooltip/js/jquery.flot.tooltip.source.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/flot/.bower.json create mode 100644 AirScout/wwwroot/dashboard/assets/libs/flot/.gitignore create mode 100644 AirScout/wwwroot/dashboard/assets/libs/flot/.travis.yml create mode 100644 AirScout/wwwroot/dashboard/assets/libs/flot/API.md create mode 100644 AirScout/wwwroot/dashboard/assets/libs/flot/CONTRIBUTING.md create mode 100644 AirScout/wwwroot/dashboard/assets/libs/flot/FAQ.md create mode 100644 AirScout/wwwroot/dashboard/assets/libs/flot/LICENSE.txt create mode 100644 AirScout/wwwroot/dashboard/assets/libs/flot/Makefile create mode 100644 AirScout/wwwroot/dashboard/assets/libs/flot/NEWS.md create mode 100644 AirScout/wwwroot/dashboard/assets/libs/flot/PLUGINS.md create mode 100644 AirScout/wwwroot/dashboard/assets/libs/flot/README.md create mode 100644 AirScout/wwwroot/dashboard/assets/libs/flot/component.json create mode 100644 AirScout/wwwroot/dashboard/assets/libs/flot/css/float-chart.css create mode 100644 AirScout/wwwroot/dashboard/assets/libs/flot/examples/ajax/data-eu-gdp-growth-1.json create mode 100644 AirScout/wwwroot/dashboard/assets/libs/flot/examples/ajax/data-eu-gdp-growth-2.json create mode 100644 AirScout/wwwroot/dashboard/assets/libs/flot/examples/ajax/data-eu-gdp-growth-3.json create mode 100644 AirScout/wwwroot/dashboard/assets/libs/flot/examples/ajax/data-eu-gdp-growth-4.json create mode 100644 AirScout/wwwroot/dashboard/assets/libs/flot/examples/ajax/data-eu-gdp-growth-5.json create mode 100644 AirScout/wwwroot/dashboard/assets/libs/flot/examples/ajax/data-eu-gdp-growth.json create mode 100644 AirScout/wwwroot/dashboard/assets/libs/flot/examples/ajax/data-japan-gdp-growth.json create mode 100644 AirScout/wwwroot/dashboard/assets/libs/flot/examples/ajax/data-usa-gdp-growth.json create mode 100644 AirScout/wwwroot/dashboard/assets/libs/flot/examples/ajax/index.html create mode 100644 AirScout/wwwroot/dashboard/assets/libs/flot/examples/annotating/index.html create mode 100644 AirScout/wwwroot/dashboard/assets/libs/flot/examples/axes-interacting/index.html create mode 100644 AirScout/wwwroot/dashboard/assets/libs/flot/examples/axes-multiple/index.html create mode 100644 AirScout/wwwroot/dashboard/assets/libs/flot/examples/axes-time-zones/date.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/flot/examples/axes-time-zones/index.html create mode 100644 AirScout/wwwroot/dashboard/assets/libs/flot/examples/axes-time-zones/tz/africa create mode 100644 AirScout/wwwroot/dashboard/assets/libs/flot/examples/axes-time-zones/tz/antarctica create mode 100644 AirScout/wwwroot/dashboard/assets/libs/flot/examples/axes-time-zones/tz/asia create mode 100644 AirScout/wwwroot/dashboard/assets/libs/flot/examples/axes-time-zones/tz/australasia create mode 100644 AirScout/wwwroot/dashboard/assets/libs/flot/examples/axes-time-zones/tz/backward create mode 100644 AirScout/wwwroot/dashboard/assets/libs/flot/examples/axes-time-zones/tz/etcetera create mode 100644 AirScout/wwwroot/dashboard/assets/libs/flot/examples/axes-time-zones/tz/europe create mode 100644 AirScout/wwwroot/dashboard/assets/libs/flot/examples/axes-time-zones/tz/factory create mode 100644 AirScout/wwwroot/dashboard/assets/libs/flot/examples/axes-time-zones/tz/iso3166.tab create mode 100644 AirScout/wwwroot/dashboard/assets/libs/flot/examples/axes-time-zones/tz/leapseconds create mode 100644 AirScout/wwwroot/dashboard/assets/libs/flot/examples/axes-time-zones/tz/northamerica create mode 100644 AirScout/wwwroot/dashboard/assets/libs/flot/examples/axes-time-zones/tz/pacificnew create mode 100644 AirScout/wwwroot/dashboard/assets/libs/flot/examples/axes-time-zones/tz/solar87 create mode 100644 AirScout/wwwroot/dashboard/assets/libs/flot/examples/axes-time-zones/tz/solar88 create mode 100644 AirScout/wwwroot/dashboard/assets/libs/flot/examples/axes-time-zones/tz/solar89 create mode 100644 AirScout/wwwroot/dashboard/assets/libs/flot/examples/axes-time-zones/tz/southamerica create mode 100644 AirScout/wwwroot/dashboard/assets/libs/flot/examples/axes-time-zones/tz/systemv create mode 100644 AirScout/wwwroot/dashboard/assets/libs/flot/examples/axes-time-zones/tz/yearistype.sh create mode 100644 AirScout/wwwroot/dashboard/assets/libs/flot/examples/axes-time-zones/tz/zone.tab create mode 100644 AirScout/wwwroot/dashboard/assets/libs/flot/examples/axes-time/index.html create mode 100644 AirScout/wwwroot/dashboard/assets/libs/flot/examples/background.png create mode 100644 AirScout/wwwroot/dashboard/assets/libs/flot/examples/basic-options/index.html create mode 100644 AirScout/wwwroot/dashboard/assets/libs/flot/examples/basic-usage/index.html create mode 100644 AirScout/wwwroot/dashboard/assets/libs/flot/examples/canvas/index.html create mode 100644 AirScout/wwwroot/dashboard/assets/libs/flot/examples/categories/index.html create mode 100644 AirScout/wwwroot/dashboard/assets/libs/flot/examples/examples.css create mode 100644 AirScout/wwwroot/dashboard/assets/libs/flot/examples/image/hs-2004-27-a-large-web.jpg create mode 100644 AirScout/wwwroot/dashboard/assets/libs/flot/examples/image/index.html create mode 100644 AirScout/wwwroot/dashboard/assets/libs/flot/examples/index.html create mode 100644 AirScout/wwwroot/dashboard/assets/libs/flot/examples/interacting/index.html create mode 100644 AirScout/wwwroot/dashboard/assets/libs/flot/examples/navigate/arrow-down.gif create mode 100644 AirScout/wwwroot/dashboard/assets/libs/flot/examples/navigate/arrow-left.gif create mode 100644 AirScout/wwwroot/dashboard/assets/libs/flot/examples/navigate/arrow-right.gif create mode 100644 AirScout/wwwroot/dashboard/assets/libs/flot/examples/navigate/arrow-up.gif create mode 100644 AirScout/wwwroot/dashboard/assets/libs/flot/examples/navigate/index.html create mode 100644 AirScout/wwwroot/dashboard/assets/libs/flot/examples/percentiles/index.html create mode 100644 AirScout/wwwroot/dashboard/assets/libs/flot/examples/realtime/index.html create mode 100644 AirScout/wwwroot/dashboard/assets/libs/flot/examples/resize/index.html create mode 100644 AirScout/wwwroot/dashboard/assets/libs/flot/examples/selection/index.html create mode 100644 AirScout/wwwroot/dashboard/assets/libs/flot/examples/series-errorbars/index.html create mode 100644 AirScout/wwwroot/dashboard/assets/libs/flot/examples/series-pie/index.html create mode 100644 AirScout/wwwroot/dashboard/assets/libs/flot/examples/series-toggle/index.html create mode 100644 AirScout/wwwroot/dashboard/assets/libs/flot/examples/series-types/index.html create mode 100644 AirScout/wwwroot/dashboard/assets/libs/flot/examples/shared/jquery-ui/jquery-ui.min.css create mode 100644 AirScout/wwwroot/dashboard/assets/libs/flot/examples/stacking/index.html create mode 100644 AirScout/wwwroot/dashboard/assets/libs/flot/examples/symbols/index.html create mode 100644 AirScout/wwwroot/dashboard/assets/libs/flot/examples/threshold/index.html create mode 100644 AirScout/wwwroot/dashboard/assets/libs/flot/examples/tracking/index.html create mode 100644 AirScout/wwwroot/dashboard/assets/libs/flot/examples/visitors/index.html create mode 100644 AirScout/wwwroot/dashboard/assets/libs/flot/examples/zooming/index.html create mode 100644 AirScout/wwwroot/dashboard/assets/libs/flot/excanvas.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/flot/excanvas.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/flot/flot.jquery.json create mode 100644 AirScout/wwwroot/dashboard/assets/libs/flot/jquery.colorhelpers.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/flot/jquery.flot.canvas.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/flot/jquery.flot.categories.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/flot/jquery.flot.crosshair.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/flot/jquery.flot.errorbars.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/flot/jquery.flot.fillbetween.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/flot/jquery.flot.image.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/flot/jquery.flot.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/flot/jquery.flot.navigate.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/flot/jquery.flot.pie.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/flot/jquery.flot.resize.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/flot/jquery.flot.selection.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/flot/jquery.flot.stack.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/flot/jquery.flot.symbol.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/flot/jquery.flot.threshold.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/flot/jquery.flot.time.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/flot/jquery.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/flot/package.json create mode 100644 AirScout/wwwroot/dashboard/assets/libs/fullcalendar/dist/fullcalendar.min.css create mode 100644 AirScout/wwwroot/dashboard/assets/libs/fullcalendar/dist/fullcalendar.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/fullcalendar/dist/fullcalendar.print.min.css create mode 100644 AirScout/wwwroot/dashboard/assets/libs/fullcalendar/dist/gcal.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/fullcalendar/dist/locale-all.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/fullcalendar/dist/locale/af.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/fullcalendar/dist/locale/ar-dz.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/fullcalendar/dist/locale/ar-kw.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/fullcalendar/dist/locale/ar-ly.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/fullcalendar/dist/locale/ar-ma.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/fullcalendar/dist/locale/ar-sa.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/fullcalendar/dist/locale/ar-tn.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/fullcalendar/dist/locale/ar.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/fullcalendar/dist/locale/bg.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/fullcalendar/dist/locale/bs.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/fullcalendar/dist/locale/ca.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/fullcalendar/dist/locale/cs.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/fullcalendar/dist/locale/da.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/fullcalendar/dist/locale/de-at.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/fullcalendar/dist/locale/de-ch.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/fullcalendar/dist/locale/de.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/fullcalendar/dist/locale/el.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/fullcalendar/dist/locale/en-au.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/fullcalendar/dist/locale/en-ca.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/fullcalendar/dist/locale/en-gb.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/fullcalendar/dist/locale/en-ie.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/fullcalendar/dist/locale/en-nz.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/fullcalendar/dist/locale/es-do.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/fullcalendar/dist/locale/es-us.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/fullcalendar/dist/locale/es.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/fullcalendar/dist/locale/et.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/fullcalendar/dist/locale/eu.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/fullcalendar/dist/locale/fa.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/fullcalendar/dist/locale/fi.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/fullcalendar/dist/locale/fr-ca.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/fullcalendar/dist/locale/fr-ch.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/fullcalendar/dist/locale/fr.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/fullcalendar/dist/locale/gl.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/fullcalendar/dist/locale/he.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/fullcalendar/dist/locale/hi.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/fullcalendar/dist/locale/hr.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/fullcalendar/dist/locale/hu.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/fullcalendar/dist/locale/id.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/fullcalendar/dist/locale/is.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/fullcalendar/dist/locale/it.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/fullcalendar/dist/locale/ja.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/fullcalendar/dist/locale/ka.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/fullcalendar/dist/locale/kk.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/fullcalendar/dist/locale/ko.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/fullcalendar/dist/locale/lb.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/fullcalendar/dist/locale/lt.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/fullcalendar/dist/locale/lv.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/fullcalendar/dist/locale/mk.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/fullcalendar/dist/locale/ms-my.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/fullcalendar/dist/locale/ms.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/fullcalendar/dist/locale/nb.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/fullcalendar/dist/locale/nl-be.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/fullcalendar/dist/locale/nl.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/fullcalendar/dist/locale/nn.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/fullcalendar/dist/locale/pl.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/fullcalendar/dist/locale/pt-br.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/fullcalendar/dist/locale/pt.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/fullcalendar/dist/locale/ro.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/fullcalendar/dist/locale/ru.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/fullcalendar/dist/locale/sk.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/fullcalendar/dist/locale/sl.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/fullcalendar/dist/locale/sq.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/fullcalendar/dist/locale/sr-cyrl.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/fullcalendar/dist/locale/sr.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/fullcalendar/dist/locale/sv.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/fullcalendar/dist/locale/th.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/fullcalendar/dist/locale/tr.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/fullcalendar/dist/locale/uk.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/fullcalendar/dist/locale/vi.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/fullcalendar/dist/locale/zh-cn.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/fullcalendar/dist/locale/zh-tw.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/inputmask/dist/inputmask/bindings/inputmask.binding.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/inputmask/dist/inputmask/dependencyLibs/inputmask.dependencyLib.jqlite.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/inputmask/dist/inputmask/dependencyLibs/inputmask.dependencyLib.jquery.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/inputmask/dist/inputmask/dependencyLibs/inputmask.dependencyLib.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/inputmask/dist/inputmask/global/document.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/inputmask/dist/inputmask/global/window.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/inputmask/dist/inputmask/inputmask.date.extensions.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/inputmask/dist/inputmask/inputmask.extensions.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/inputmask/dist/inputmask/inputmask.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/inputmask/dist/inputmask/inputmask.numeric.extensions.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/inputmask/dist/inputmask/inputmask.phone.extensions.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/inputmask/dist/inputmask/inputmask.regex.extensions.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/inputmask/dist/inputmask/jquery.inputmask.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/inputmask/dist/inputmask/phone-codes/phone-be.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/inputmask/dist/inputmask/phone-codes/phone-nl.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/inputmask/dist/inputmask/phone-codes/phone-ru.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/inputmask/dist/inputmask/phone-codes/phone-uk.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/inputmask/dist/inputmask/phone-codes/phone.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/inputmask/dist/jquery.inputmask.bundle.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/inputmask/dist/min/inputmask/bindings/inputmask.binding.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/inputmask/dist/min/inputmask/dependencyLibs/inputmask.dependencyLib.jqlite.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/inputmask/dist/min/inputmask/dependencyLibs/inputmask.dependencyLib.jquery.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/inputmask/dist/min/inputmask/dependencyLibs/inputmask.dependencyLib.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/inputmask/dist/min/inputmask/global/document.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/inputmask/dist/min/inputmask/global/window.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/inputmask/dist/min/inputmask/inputmask.date.extensions.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/inputmask/dist/min/inputmask/inputmask.extensions.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/inputmask/dist/min/inputmask/inputmask.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/inputmask/dist/min/inputmask/inputmask.numeric.extensions.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/inputmask/dist/min/inputmask/inputmask.phone.extensions.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/inputmask/dist/min/inputmask/inputmask.regex.extensions.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/inputmask/dist/min/inputmask/jquery.inputmask.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/inputmask/dist/min/inputmask/phone-codes/phone-be.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/inputmask/dist/min/inputmask/phone-codes/phone-nl.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/inputmask/dist/min/inputmask/phone-codes/phone-ru.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/inputmask/dist/min/inputmask/phone-codes/phone-uk.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/inputmask/dist/min/inputmask/phone-codes/phone.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/inputmask/dist/min/jquery.inputmask.bundle.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/jquery-asColor/LICENSE create mode 100644 AirScout/wwwroot/dashboard/assets/libs/jquery-asColor/README.md create mode 100644 AirScout/wwwroot/dashboard/assets/libs/jquery-asColor/dist/jquery-asColor.es.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/jquery-asColor/dist/jquery-asColor.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/jquery-asColor/dist/jquery-asColor.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/jquery-asColor/dist/jquery-asColor.min.js.map create mode 100644 AirScout/wwwroot/dashboard/assets/libs/jquery-asColor/package.json create mode 100644 AirScout/wwwroot/dashboard/assets/libs/jquery-asColor/src/asColor.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/jquery-asColor/src/colorStrings.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/jquery-asColor/src/converter.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/jquery-asColor/src/defaults.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/jquery-asColor/src/info.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/jquery-asColor/src/main.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/jquery-asColor/src/names.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/jquery-asColor/src/util.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/jquery-asColorPicker/dist/css/asColorPicker.min.css create mode 100644 AirScout/wwwroot/dashboard/assets/libs/jquery-asColorPicker/dist/images/alpha.png create mode 100644 AirScout/wwwroot/dashboard/assets/libs/jquery-asColorPicker/dist/images/hue.png create mode 100644 AirScout/wwwroot/dashboard/assets/libs/jquery-asColorPicker/dist/images/saturation.png create mode 100644 AirScout/wwwroot/dashboard/assets/libs/jquery-asColorPicker/dist/images/transparent.png create mode 100644 AirScout/wwwroot/dashboard/assets/libs/jquery-asColorPicker/dist/jquery-asColorPicker.es.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/jquery-asColorPicker/dist/jquery-asColorPicker.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/jquery-asGradient/LICENSE create mode 100644 AirScout/wwwroot/dashboard/assets/libs/jquery-asGradient/README.md create mode 100644 AirScout/wwwroot/dashboard/assets/libs/jquery-asGradient/dist/jquery-asGradient.es.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/jquery-asGradient/dist/jquery-asGradient.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/jquery-asGradient/dist/jquery-asGradient.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/jquery-asGradient/dist/jquery-asGradient.min.js.map create mode 100644 AirScout/wwwroot/dashboard/assets/libs/jquery-asGradient/package.json create mode 100644 AirScout/wwwroot/dashboard/assets/libs/jquery-asGradient/src/asGradient.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/jquery-asGradient/src/colorStop.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/jquery-asGradient/src/defaults.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/jquery-asGradient/src/gradientString.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/jquery-asGradient/src/gradientTypes.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/jquery-asGradient/src/info.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/jquery-asGradient/src/keywordAngleMap.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/jquery-asGradient/src/main.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/jquery-asGradient/src/regExpStrings.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/jquery-asGradient/src/util.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/jquery-minicolors/component.json create mode 100644 AirScout/wwwroot/dashboard/assets/libs/jquery-minicolors/index.html create mode 100644 AirScout/wwwroot/dashboard/assets/libs/jquery-minicolors/jquery.minicolors.css create mode 100644 AirScout/wwwroot/dashboard/assets/libs/jquery-minicolors/jquery.minicolors.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/jquery-minicolors/jquery.minicolors.png create mode 100644 AirScout/wwwroot/dashboard/assets/libs/jquery-minicolors/without-bootstrap.html create mode 100644 AirScout/wwwroot/dashboard/assets/libs/jquery-steps/LICENSE.txt create mode 100644 AirScout/wwwroot/dashboard/assets/libs/jquery-steps/build/jquery.steps-1.1.0.zip create mode 100644 AirScout/wwwroot/dashboard/assets/libs/jquery-steps/build/jquery.steps.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/jquery-steps/jquery.steps.css create mode 100644 AirScout/wwwroot/dashboard/assets/libs/jquery-steps/lib/jquery-1.10.2.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/jquery-steps/lib/jquery-1.11.1.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/jquery-steps/lib/jquery-1.9.1.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/jquery-steps/lib/jquery.cookie-1.3.1.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/jquery-steps/lib/modernizr-2.6.2.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/jquery-steps/nuget/NuGet.exe create mode 100644 AirScout/wwwroot/dashboard/assets/libs/jquery-steps/nuget/jQuery.Steps.nuspec create mode 100644 AirScout/wwwroot/dashboard/assets/libs/jquery-steps/steps.css create mode 100644 AirScout/wwwroot/dashboard/assets/libs/jquery-steps/steps.jquery.json create mode 100644 AirScout/wwwroot/dashboard/assets/libs/jquery-validation/dist/additional-methods.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/jquery-validation/dist/jquery.validate.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/jquery-validation/dist/localization/messages_ar.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/jquery-validation/dist/localization/messages_az.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/jquery-validation/dist/localization/messages_bg.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/jquery-validation/dist/localization/messages_bn_BD.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/jquery-validation/dist/localization/messages_ca.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/jquery-validation/dist/localization/messages_cs.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/jquery-validation/dist/localization/messages_da.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/jquery-validation/dist/localization/messages_de.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/jquery-validation/dist/localization/messages_el.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/jquery-validation/dist/localization/messages_es.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/jquery-validation/dist/localization/messages_es_AR.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/jquery-validation/dist/localization/messages_es_PE.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/jquery-validation/dist/localization/messages_et.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/jquery-validation/dist/localization/messages_eu.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/jquery-validation/dist/localization/messages_fa.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/jquery-validation/dist/localization/messages_fi.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/jquery-validation/dist/localization/messages_fr.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/jquery-validation/dist/localization/messages_ge.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/jquery-validation/dist/localization/messages_gl.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/jquery-validation/dist/localization/messages_he.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/jquery-validation/dist/localization/messages_hr.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/jquery-validation/dist/localization/messages_hu.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/jquery-validation/dist/localization/messages_hy_AM.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/jquery-validation/dist/localization/messages_id.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/jquery-validation/dist/localization/messages_is.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/jquery-validation/dist/localization/messages_it.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/jquery-validation/dist/localization/messages_ja.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/jquery-validation/dist/localization/messages_ka.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/jquery-validation/dist/localization/messages_kk.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/jquery-validation/dist/localization/messages_ko.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/jquery-validation/dist/localization/messages_lt.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/jquery-validation/dist/localization/messages_lv.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/jquery-validation/dist/localization/messages_mk.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/jquery-validation/dist/localization/messages_my.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/jquery-validation/dist/localization/messages_nl.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/jquery-validation/dist/localization/messages_no.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/jquery-validation/dist/localization/messages_pl.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/jquery-validation/dist/localization/messages_pt_BR.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/jquery-validation/dist/localization/messages_pt_PT.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/jquery-validation/dist/localization/messages_ro.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/jquery-validation/dist/localization/messages_ru.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/jquery-validation/dist/localization/messages_sd.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/jquery-validation/dist/localization/messages_si.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/jquery-validation/dist/localization/messages_sk.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/jquery-validation/dist/localization/messages_sl.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/jquery-validation/dist/localization/messages_sr.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/jquery-validation/dist/localization/messages_sr_lat.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/jquery-validation/dist/localization/messages_sv.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/jquery-validation/dist/localization/messages_th.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/jquery-validation/dist/localization/messages_tj.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/jquery-validation/dist/localization/messages_tr.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/jquery-validation/dist/localization/messages_uk.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/jquery-validation/dist/localization/messages_ur.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/jquery-validation/dist/localization/messages_vi.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/jquery-validation/dist/localization/messages_zh.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/jquery-validation/dist/localization/messages_zh_TW.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/jquery-validation/dist/localization/methods_de.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/jquery-validation/dist/localization/methods_es_CL.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/jquery-validation/dist/localization/methods_fi.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/jquery-validation/dist/localization/methods_nl.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/jquery-validation/dist/localization/methods_pt.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/jquery.flot.tooltip/js/jquery.flot.tooltip.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/jquery.flot.tooltip/js/jquery.flot.tooltip.source.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/jquery/dist/core.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/jquery/dist/jquery.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/jquery/dist/jquery.slim.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/magnific-popup/animation.css create mode 100644 AirScout/wwwroot/dashboard/assets/libs/magnific-popup/dist/jquery.magnific-popup.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/magnific-popup/dist/magnific-popup.css create mode 100644 AirScout/wwwroot/dashboard/assets/libs/magnific-popup/meg.init.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/moment/ender.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/moment/locale/af.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/moment/locale/ar-dz.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/moment/locale/ar-kw.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/moment/locale/ar-ly.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/moment/locale/ar-ma.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/moment/locale/ar-sa.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/moment/locale/ar-tn.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/moment/locale/ar.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/moment/locale/az.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/moment/locale/be.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/moment/locale/bg.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/moment/locale/bm.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/moment/locale/bn.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/moment/locale/bo.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/moment/locale/br.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/moment/locale/bs.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/moment/locale/ca.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/moment/locale/cs.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/moment/locale/cv.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/moment/locale/cy.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/moment/locale/da.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/moment/locale/de-at.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/moment/locale/de-ch.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/moment/locale/de.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/moment/locale/dv.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/moment/locale/el.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/moment/locale/en-au.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/moment/locale/en-ca.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/moment/locale/en-gb.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/moment/locale/en-ie.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/moment/locale/en-il.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/moment/locale/en-nz.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/moment/locale/eo.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/moment/locale/es-do.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/moment/locale/es-us.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/moment/locale/es.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/moment/locale/et.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/moment/locale/eu.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/moment/locale/fa.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/moment/locale/fi.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/moment/locale/fo.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/moment/locale/fr-ca.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/moment/locale/fr-ch.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/moment/locale/fr.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/moment/locale/fy.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/moment/locale/gd.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/moment/locale/gl.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/moment/locale/gom-latn.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/moment/locale/gu.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/moment/locale/he.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/moment/locale/hi.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/moment/locale/hr.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/moment/locale/hu.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/moment/locale/hy-am.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/moment/locale/id.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/moment/locale/is.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/moment/locale/it.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/moment/locale/ja.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/moment/locale/jv.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/moment/locale/ka.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/moment/locale/kk.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/moment/locale/km.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/moment/locale/kn.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/moment/locale/ko.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/moment/locale/ky.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/moment/locale/lb.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/moment/locale/lo.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/moment/locale/lt.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/moment/locale/lv.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/moment/locale/me.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/moment/locale/mi.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/moment/locale/mk.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/moment/locale/ml.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/moment/locale/mn.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/moment/locale/mr.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/moment/locale/ms-my.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/moment/locale/ms.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/moment/locale/mt.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/moment/locale/my.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/moment/locale/nb.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/moment/locale/ne.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/moment/locale/nl-be.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/moment/locale/nl.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/moment/locale/nn.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/moment/locale/pa-in.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/moment/locale/pl.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/moment/locale/pt-br.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/moment/locale/pt.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/moment/locale/ro.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/moment/locale/ru.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/moment/locale/sd.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/moment/locale/se.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/moment/locale/si.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/moment/locale/sk.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/moment/locale/sl.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/moment/locale/sq.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/moment/locale/sr-cyrl.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/moment/locale/sr.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/moment/locale/ss.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/moment/locale/sv.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/moment/locale/sw.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/moment/locale/ta.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/moment/locale/te.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/moment/locale/tet.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/moment/locale/tg.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/moment/locale/th.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/moment/locale/tl-ph.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/moment/locale/tlh.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/moment/locale/tr.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/moment/locale/tzl.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/moment/locale/tzm-latn.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/moment/locale/tzm.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/moment/locale/ug-cn.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/moment/locale/uk.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/moment/locale/ur.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/moment/locale/uz-latn.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/moment/locale/uz.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/moment/locale/vi.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/moment/locale/x-pseudo.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/moment/locale/yo.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/moment/locale/zh-cn.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/moment/locale/zh-hk.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/moment/locale/zh-tw.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/moment/min/locales.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/moment/min/moment-with-locales.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/moment/min/moment.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/moment/moment.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/moment/package.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/perfect-scrollbar/dist/css/perfect-scrollbar.min.css create mode 100644 AirScout/wwwroot/dashboard/assets/libs/perfect-scrollbar/dist/js/perfect-scrollbar.jquery.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/perfect-scrollbar/dist/js/perfect-scrollbar.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/perfect-scrollbar/dist/perfect-scrollbar.common.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/perfect-scrollbar/dist/perfect-scrollbar.esm.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/perfect-scrollbar/dist/perfect-scrollbar.jquery.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/perfect-scrollbar/dist/perfect-scrollbar.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/popper.js/dist/esm/popper-utils.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/popper.js/dist/esm/popper.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/popper.js/dist/popper-utils.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/popper.js/dist/popper.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/popper.js/dist/umd/popper-utils.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/popper.js/dist/umd/popper.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/quill/dist/quill.bubble.css create mode 100644 AirScout/wwwroot/dashboard/assets/libs/quill/dist/quill.core.css create mode 100644 AirScout/wwwroot/dashboard/assets/libs/quill/dist/quill.core.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/quill/dist/quill.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/quill/dist/quill.snow.css create mode 100644 AirScout/wwwroot/dashboard/assets/libs/select2/dist/css/select2.min.css create mode 100644 AirScout/wwwroot/dashboard/assets/libs/select2/dist/js/i18n/af.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/select2/dist/js/i18n/ar.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/select2/dist/js/i18n/az.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/select2/dist/js/i18n/bg.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/select2/dist/js/i18n/bs.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/select2/dist/js/i18n/build.txt create mode 100644 AirScout/wwwroot/dashboard/assets/libs/select2/dist/js/i18n/ca.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/select2/dist/js/i18n/cs.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/select2/dist/js/i18n/da.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/select2/dist/js/i18n/de.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/select2/dist/js/i18n/dsb.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/select2/dist/js/i18n/el.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/select2/dist/js/i18n/en.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/select2/dist/js/i18n/es.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/select2/dist/js/i18n/et.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/select2/dist/js/i18n/eu.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/select2/dist/js/i18n/fa.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/select2/dist/js/i18n/fi.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/select2/dist/js/i18n/fr.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/select2/dist/js/i18n/gl.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/select2/dist/js/i18n/he.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/select2/dist/js/i18n/hi.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/select2/dist/js/i18n/hr.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/select2/dist/js/i18n/hsb.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/select2/dist/js/i18n/hu.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/select2/dist/js/i18n/hy.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/select2/dist/js/i18n/id.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/select2/dist/js/i18n/is.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/select2/dist/js/i18n/it.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/select2/dist/js/i18n/ja.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/select2/dist/js/i18n/km.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/select2/dist/js/i18n/ko.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/select2/dist/js/i18n/lt.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/select2/dist/js/i18n/lv.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/select2/dist/js/i18n/mk.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/select2/dist/js/i18n/ms.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/select2/dist/js/i18n/nb.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/select2/dist/js/i18n/nl.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/select2/dist/js/i18n/pl.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/select2/dist/js/i18n/ps.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/select2/dist/js/i18n/pt-BR.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/select2/dist/js/i18n/pt.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/select2/dist/js/i18n/ro.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/select2/dist/js/i18n/ru.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/select2/dist/js/i18n/sk.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/select2/dist/js/i18n/sl.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/select2/dist/js/i18n/sr-Cyrl.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/select2/dist/js/i18n/sr.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/select2/dist/js/i18n/sv.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/select2/dist/js/i18n/th.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/select2/dist/js/i18n/tk.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/select2/dist/js/i18n/tr.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/select2/dist/js/i18n/uk.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/select2/dist/js/i18n/vi.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/select2/dist/js/i18n/zh-CN.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/select2/dist/js/i18n/zh-TW.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/select2/dist/js/select2.full.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/select2/dist/js/select2.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/toastr/build/toastr.min.css create mode 100644 AirScout/wwwroot/dashboard/assets/libs/toastr/build/toastr.min.js create mode 100644 AirScout/wwwroot/dashboard/assets/libs/toastr/toastr-icon.png create mode 100644 AirScout/wwwroot/dashboard/assets/libs/toastr/toastr.js create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/font-awesome/css/fa-brands.css create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/font-awesome/css/fa-brands.min.css create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/font-awesome/css/fa-regular.css create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/font-awesome/css/fa-regular.min.css create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/font-awesome/css/fa-solid.css create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/font-awesome/css/fa-solid.min.css create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/font-awesome/css/fontawesome-all.css create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/font-awesome/css/fontawesome-all.min.css create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/font-awesome/css/fontawesome.css create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/font-awesome/css/fontawesome.min.css create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/font-awesome/less/_animated.less create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/font-awesome/less/_bordered-pulled.less create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/font-awesome/less/_core.less create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/font-awesome/less/_fixed-width.less create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/font-awesome/less/_icons.less create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/font-awesome/less/_larger.less create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/font-awesome/less/_list.less create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/font-awesome/less/_mixins.less create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/font-awesome/less/_rotated-flipped.less create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/font-awesome/less/_screen-reader.less create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/font-awesome/less/_stacked.less create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/font-awesome/less/_variables.less create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/font-awesome/less/fa-brands.less create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/font-awesome/less/fa-regular.less create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/font-awesome/less/fa-solid.less create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/font-awesome/less/fontawesome.less create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/font-awesome/scss/_animated.scss create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/font-awesome/scss/_bordered-pulled.scss create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/font-awesome/scss/_core.scss create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/font-awesome/scss/_fixed-width.scss create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/font-awesome/scss/_icons.scss create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/font-awesome/scss/_larger.scss create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/font-awesome/scss/_list.scss create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/font-awesome/scss/_mixins.scss create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/font-awesome/scss/_rotated-flipped.scss create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/font-awesome/scss/_screen-reader.scss create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/font-awesome/scss/_stacked.scss create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/font-awesome/scss/_variables.scss create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/font-awesome/scss/fa-brands.scss create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/font-awesome/scss/fa-regular.scss create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/font-awesome/scss/fa-solid.scss create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/font-awesome/scss/fontawesome.scss create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/font-awesome/webfonts/fa-brands-400.eot create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/font-awesome/webfonts/fa-brands-400.svg create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/font-awesome/webfonts/fa-brands-400.ttf create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/font-awesome/webfonts/fa-brands-400.woff create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/font-awesome/webfonts/fa-brands-400.woff2 create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/font-awesome/webfonts/fa-regular-400.eot create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/font-awesome/webfonts/fa-regular-400.svg create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/font-awesome/webfonts/fa-regular-400.ttf create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/font-awesome/webfonts/fa-regular-400.woff create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/font-awesome/webfonts/fa-regular-400.woff2 create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/font-awesome/webfonts/fa-solid-900.eot create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/font-awesome/webfonts/fa-solid-900.svg create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/font-awesome/webfonts/fa-solid-900.ttf create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/font-awesome/webfonts/fa-solid-900.woff create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/font-awesome/webfonts/fa-solid-900.woff2 create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/material-design-iconic-font/css/material-design-iconic-font.css create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/material-design-iconic-font/css/material-design-iconic-font.min.css create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/material-design-iconic-font/css/materialdesignicons.min.css create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/material-design-iconic-font/css/materialdesignicons.min.css.map create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/material-design-iconic-font/fonts/Material-Design-Iconic-Font.eot create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/material-design-iconic-font/fonts/Material-Design-Iconic-Font.svg create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/material-design-iconic-font/fonts/Material-Design-Iconic-Font.ttf create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/material-design-iconic-font/fonts/Material-Design-Iconic-Font.woff create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/material-design-iconic-font/fonts/Material-Design-Iconic-Font.woff2 create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/material-design-iconic-font/fonts/materialdesignicons-webfont.eot create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/material-design-iconic-font/fonts/materialdesignicons-webfont.svg create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/material-design-iconic-font/fonts/materialdesignicons-webfont.ttf create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/material-design-iconic-font/fonts/materialdesignicons-webfont.woff create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/material-design-iconic-font/fonts/materialdesignicons-webfont.woff2 create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/themify-icons/fonts/themify.eot create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/themify-icons/fonts/themify.svg create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/themify-icons/fonts/themify.ttf create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/themify-icons/fonts/themify.woff create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/themify-icons/ie7/ie7.css create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/themify-icons/ie7/ie7.js create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/themify-icons/themify-icons.css create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/themify-icons/themify-icons.less create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/weather-icons/css/weather-icons-core.css create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/weather-icons/css/weather-icons-variables.css create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/weather-icons/css/weather-icons-wind.css create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/weather-icons/css/weather-icons-wind.min.css create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/weather-icons/css/weather-icons.css create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/weather-icons/css/weather-icons.min.css create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/weather-icons/fonts/weathericons-regular-webfont.eot create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/weather-icons/fonts/weathericons-regular-webfont.svg create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/weather-icons/fonts/weathericons-regular-webfont.ttf create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/weather-icons/fonts/weathericons-regular-webfont.woff create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/weather-icons/fonts/weathericons-regular-webfont.woff2 create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/weather-icons/less/css/variables-beaufort.css create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/weather-icons/less/css/variables-day.css create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/weather-icons/less/css/variables-direction.css create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/weather-icons/less/css/variables-misc.css create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/weather-icons/less/css/variables-moon.css create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/weather-icons/less/css/variables-neutral.css create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/weather-icons/less/css/variables-night.css create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/weather-icons/less/css/variables-time.css create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/weather-icons/less/css/variables-wind-names.css create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/weather-icons/less/icon-classes/classes-beaufort.less create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/weather-icons/less/icon-classes/classes-day.less create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/weather-icons/less/icon-classes/classes-direction.less create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/weather-icons/less/icon-classes/classes-misc.less create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/weather-icons/less/icon-classes/classes-moon-aliases.less create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/weather-icons/less/icon-classes/classes-moon.less create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/weather-icons/less/icon-classes/classes-neutral.less create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/weather-icons/less/icon-classes/classes-night.less create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/weather-icons/less/icon-classes/classes-time.less create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/weather-icons/less/icon-classes/classes-wind-aliases.less create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/weather-icons/less/icon-classes/classes-wind-degrees.less create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/weather-icons/less/icon-classes/classes-wind.less create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/weather-icons/less/icon-variables/variables-beaufort.less create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/weather-icons/less/icon-variables/variables-day.less create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/weather-icons/less/icon-variables/variables-direction.less create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/weather-icons/less/icon-variables/variables-misc.less create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/weather-icons/less/icon-variables/variables-moon.less create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/weather-icons/less/icon-variables/variables-neutral.less create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/weather-icons/less/icon-variables/variables-night.less create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/weather-icons/less/icon-variables/variables-time.less create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/weather-icons/less/icon-variables/variables-wind-names.less create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/weather-icons/less/mappings/wi-forecast-io.less create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/weather-icons/less/mappings/wi-owm.less create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/weather-icons/less/mappings/wi-wmo4680.less create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/weather-icons/less/mappings/wi-yahoo.less create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/weather-icons/less/weather-icons-classes.less create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/weather-icons/less/weather-icons-core.less create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/weather-icons/less/weather-icons-variables.less create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/weather-icons/less/weather-icons-wind.less create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/weather-icons/less/weather-icons-wind.min.less create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/weather-icons/less/weather-icons.less create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/weather-icons/less/weather-icons.min.less create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/weather-icons/sass/icon-classes/classes-beaufort.scss create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/weather-icons/sass/icon-classes/classes-day.scss create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/weather-icons/sass/icon-classes/classes-direction.scss create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/weather-icons/sass/icon-classes/classes-misc.scss create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/weather-icons/sass/icon-classes/classes-moon-aliases.scss create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/weather-icons/sass/icon-classes/classes-moon.scss create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/weather-icons/sass/icon-classes/classes-neutral.scss create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/weather-icons/sass/icon-classes/classes-night.scss create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/weather-icons/sass/icon-classes/classes-time.scss create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/weather-icons/sass/icon-classes/classes-wind-aliases.scss create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/weather-icons/sass/icon-classes/classes-wind-degrees.scss create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/weather-icons/sass/icon-classes/classes-wind.scss create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/weather-icons/sass/icon-variables/variables-beaufort.scss create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/weather-icons/sass/icon-variables/variables-day.scss create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/weather-icons/sass/icon-variables/variables-direction.scss create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/weather-icons/sass/icon-variables/variables-misc.scss create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/weather-icons/sass/icon-variables/variables-moon.scss create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/weather-icons/sass/icon-variables/variables-neutral.scss create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/weather-icons/sass/icon-variables/variables-night.scss create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/weather-icons/sass/icon-variables/variables-time.scss create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/weather-icons/sass/icon-variables/variables-wind-names.scss create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/weather-icons/sass/mappings/wi-forecast-io.scss create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/weather-icons/sass/mappings/wi-owm.scss create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/weather-icons/sass/mappings/wi-wmo4680.scss create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/weather-icons/sass/mappings/wi-yahoo.scss create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/weather-icons/sass/weather-icons-classes.scss create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/weather-icons/sass/weather-icons-core.scss create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/weather-icons/sass/weather-icons-variables.scss create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/weather-icons/sass/weather-icons-wind.min.scss create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/weather-icons/sass/weather-icons-wind.scss create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/weather-icons/sass/weather-icons.min.scss create mode 100644 AirScout/wwwroot/dashboard/dist/css/icons/weather-icons/sass/weather-icons.scss create mode 100644 AirScout/wwwroot/dashboard/dist/css/materialdesignicons.min.css.map create mode 100644 AirScout/wwwroot/dashboard/dist/css/style.css create mode 100644 AirScout/wwwroot/dashboard/dist/css/style.min.css create mode 100644 AirScout/wwwroot/dashboard/dist/js/app-style-switcher.js create mode 100644 AirScout/wwwroot/dashboard/dist/js/custom.js create mode 100644 AirScout/wwwroot/dashboard/dist/js/custom.min.js create mode 100644 AirScout/wwwroot/dashboard/dist/js/jquery-ui.min.js create mode 100644 AirScout/wwwroot/dashboard/dist/js/jquery.ui.touch-punch-improved.js create mode 100644 AirScout/wwwroot/dashboard/dist/js/pages/calendar/cal-init.js create mode 100644 AirScout/wwwroot/dashboard/dist/js/pages/chart/chart-init.js create mode 100644 AirScout/wwwroot/dashboard/dist/js/pages/chart/chart-page-init.js create mode 100644 AirScout/wwwroot/dashboard/dist/js/pages/dashboards/dashboard1.js create mode 100644 AirScout/wwwroot/dashboard/dist/js/pages/maps/map-google.init.js create mode 100644 AirScout/wwwroot/dashboard/dist/js/pages/mask/mask.init.js create mode 100644 AirScout/wwwroot/dashboard/dist/js/pages/sparkline/jquery.charts-sparkline.js create mode 100644 AirScout/wwwroot/dashboard/dist/js/sidebarmenu.js create mode 100644 AirScout/wwwroot/dashboard/dist/js/waves.js create mode 100644 AirScout/wwwroot/dashboard/html/authentication-login.html create mode 100644 AirScout/wwwroot/dashboard/html/authentication-register.html create mode 100644 AirScout/wwwroot/dashboard/html/charts.html create mode 100644 AirScout/wwwroot/dashboard/html/error-403.html create mode 100644 AirScout/wwwroot/dashboard/html/error-404.html create mode 100644 AirScout/wwwroot/dashboard/html/error-405.html create mode 100644 AirScout/wwwroot/dashboard/html/error-500.html create mode 100644 AirScout/wwwroot/dashboard/html/form-basic.html create mode 100644 AirScout/wwwroot/dashboard/html/form-wizard.html create mode 100644 AirScout/wwwroot/dashboard/html/grid.html create mode 100644 AirScout/wwwroot/dashboard/html/icon-fontawesome.html create mode 100644 AirScout/wwwroot/dashboard/html/icon-material.html create mode 100644 AirScout/wwwroot/dashboard/html/index.html create mode 100644 AirScout/wwwroot/dashboard/html/index2.html create mode 100644 AirScout/wwwroot/dashboard/html/pages-buttons.html create mode 100644 AirScout/wwwroot/dashboard/html/pages-calendar.html create mode 100644 AirScout/wwwroot/dashboard/html/pages-chat.html create mode 100644 AirScout/wwwroot/dashboard/html/pages-elements.html create mode 100644 AirScout/wwwroot/dashboard/html/pages-gallery.html create mode 100644 AirScout/wwwroot/dashboard/html/pages-invoice.html create mode 100644 AirScout/wwwroot/dashboard/html/tables.html create mode 100644 AirScout/wwwroot/dashboard/html/widgets.html create mode 100644 AirScout/wwwroot/dashboard/src/scss/_landingpage.scss create mode 100644 AirScout/wwwroot/dashboard/src/scss/bootstrap/_accordion.scss create mode 100644 AirScout/wwwroot/dashboard/src/scss/bootstrap/_alert.scss create mode 100644 AirScout/wwwroot/dashboard/src/scss/bootstrap/_badge.scss create mode 100644 AirScout/wwwroot/dashboard/src/scss/bootstrap/_breadcrumb.scss create mode 100644 AirScout/wwwroot/dashboard/src/scss/bootstrap/_button-group.scss create mode 100644 AirScout/wwwroot/dashboard/src/scss/bootstrap/_buttons.scss create mode 100644 AirScout/wwwroot/dashboard/src/scss/bootstrap/_card.scss create mode 100644 AirScout/wwwroot/dashboard/src/scss/bootstrap/_carousel.scss create mode 100644 AirScout/wwwroot/dashboard/src/scss/bootstrap/_close.scss create mode 100644 AirScout/wwwroot/dashboard/src/scss/bootstrap/_containers.scss create mode 100644 AirScout/wwwroot/dashboard/src/scss/bootstrap/_dropdown.scss create mode 100644 AirScout/wwwroot/dashboard/src/scss/bootstrap/_forms.scss create mode 100644 AirScout/wwwroot/dashboard/src/scss/bootstrap/_functions.scss create mode 100644 AirScout/wwwroot/dashboard/src/scss/bootstrap/_grid.scss create mode 100644 AirScout/wwwroot/dashboard/src/scss/bootstrap/_helpers.scss create mode 100644 AirScout/wwwroot/dashboard/src/scss/bootstrap/_images.scss create mode 100644 AirScout/wwwroot/dashboard/src/scss/bootstrap/_list-group.scss create mode 100644 AirScout/wwwroot/dashboard/src/scss/bootstrap/_mixins.scss create mode 100644 AirScout/wwwroot/dashboard/src/scss/bootstrap/_modal.scss create mode 100644 AirScout/wwwroot/dashboard/src/scss/bootstrap/_nav.scss create mode 100644 AirScout/wwwroot/dashboard/src/scss/bootstrap/_navbar.scss create mode 100644 AirScout/wwwroot/dashboard/src/scss/bootstrap/_pagination.scss create mode 100644 AirScout/wwwroot/dashboard/src/scss/bootstrap/_popover.scss create mode 100644 AirScout/wwwroot/dashboard/src/scss/bootstrap/_progress.scss create mode 100644 AirScout/wwwroot/dashboard/src/scss/bootstrap/_reboot.scss create mode 100644 AirScout/wwwroot/dashboard/src/scss/bootstrap/_root.scss create mode 100644 AirScout/wwwroot/dashboard/src/scss/bootstrap/_spinners.scss create mode 100644 AirScout/wwwroot/dashboard/src/scss/bootstrap/_tables.scss create mode 100644 AirScout/wwwroot/dashboard/src/scss/bootstrap/_toasts.scss create mode 100644 AirScout/wwwroot/dashboard/src/scss/bootstrap/_tooltip.scss create mode 100644 AirScout/wwwroot/dashboard/src/scss/bootstrap/_transitions.scss create mode 100644 AirScout/wwwroot/dashboard/src/scss/bootstrap/_type.scss create mode 100644 AirScout/wwwroot/dashboard/src/scss/bootstrap/_utilities.scss create mode 100644 AirScout/wwwroot/dashboard/src/scss/bootstrap/_variables.scss create mode 100644 AirScout/wwwroot/dashboard/src/scss/bootstrap/bootstrap-grid.scss create mode 100644 AirScout/wwwroot/dashboard/src/scss/bootstrap/bootstrap-reboot.scss create mode 100644 AirScout/wwwroot/dashboard/src/scss/bootstrap/bootstrap-utilities.scss create mode 100644 AirScout/wwwroot/dashboard/src/scss/bootstrap/bootstrap.scss create mode 100644 AirScout/wwwroot/dashboard/src/scss/bootstrap/forms/_floating-labels.scss create mode 100644 AirScout/wwwroot/dashboard/src/scss/bootstrap/forms/_form-check.scss create mode 100644 AirScout/wwwroot/dashboard/src/scss/bootstrap/forms/_form-control.scss create mode 100644 AirScout/wwwroot/dashboard/src/scss/bootstrap/forms/_form-range.scss create mode 100644 AirScout/wwwroot/dashboard/src/scss/bootstrap/forms/_form-select.scss create mode 100644 AirScout/wwwroot/dashboard/src/scss/bootstrap/forms/_form-text.scss create mode 100644 AirScout/wwwroot/dashboard/src/scss/bootstrap/forms/_input-group.scss create mode 100644 AirScout/wwwroot/dashboard/src/scss/bootstrap/forms/_labels.scss create mode 100644 AirScout/wwwroot/dashboard/src/scss/bootstrap/forms/_validation.scss create mode 100644 AirScout/wwwroot/dashboard/src/scss/bootstrap/helpers/_clearfix.scss create mode 100644 AirScout/wwwroot/dashboard/src/scss/bootstrap/helpers/_colored-links.scss create mode 100644 AirScout/wwwroot/dashboard/src/scss/bootstrap/helpers/_position.scss create mode 100644 AirScout/wwwroot/dashboard/src/scss/bootstrap/helpers/_ratio.scss create mode 100644 AirScout/wwwroot/dashboard/src/scss/bootstrap/helpers/_stretched-link.scss create mode 100644 AirScout/wwwroot/dashboard/src/scss/bootstrap/helpers/_text-truncation.scss create mode 100644 AirScout/wwwroot/dashboard/src/scss/bootstrap/helpers/_visually-hidden.scss create mode 100644 AirScout/wwwroot/dashboard/src/scss/bootstrap/mixins/_alert.scss create mode 100644 AirScout/wwwroot/dashboard/src/scss/bootstrap/mixins/_border-radius.scss create mode 100644 AirScout/wwwroot/dashboard/src/scss/bootstrap/mixins/_box-shadow.scss create mode 100644 AirScout/wwwroot/dashboard/src/scss/bootstrap/mixins/_breakpoints.scss create mode 100644 AirScout/wwwroot/dashboard/src/scss/bootstrap/mixins/_buttons.scss create mode 100644 AirScout/wwwroot/dashboard/src/scss/bootstrap/mixins/_caret.scss create mode 100644 AirScout/wwwroot/dashboard/src/scss/bootstrap/mixins/_clearfix.scss create mode 100644 AirScout/wwwroot/dashboard/src/scss/bootstrap/mixins/_container.scss create mode 100644 AirScout/wwwroot/dashboard/src/scss/bootstrap/mixins/_deprecate.scss create mode 100644 AirScout/wwwroot/dashboard/src/scss/bootstrap/mixins/_forms.scss create mode 100644 AirScout/wwwroot/dashboard/src/scss/bootstrap/mixins/_gradients.scss create mode 100644 AirScout/wwwroot/dashboard/src/scss/bootstrap/mixins/_grid.scss create mode 100644 AirScout/wwwroot/dashboard/src/scss/bootstrap/mixins/_image.scss create mode 100644 AirScout/wwwroot/dashboard/src/scss/bootstrap/mixins/_list-group.scss create mode 100644 AirScout/wwwroot/dashboard/src/scss/bootstrap/mixins/_lists.scss create mode 100644 AirScout/wwwroot/dashboard/src/scss/bootstrap/mixins/_pagination.scss create mode 100644 AirScout/wwwroot/dashboard/src/scss/bootstrap/mixins/_reset-text.scss create mode 100644 AirScout/wwwroot/dashboard/src/scss/bootstrap/mixins/_resize.scss create mode 100644 AirScout/wwwroot/dashboard/src/scss/bootstrap/mixins/_table-variants.scss create mode 100644 AirScout/wwwroot/dashboard/src/scss/bootstrap/mixins/_text-truncate.scss create mode 100644 AirScout/wwwroot/dashboard/src/scss/bootstrap/mixins/_transition.scss create mode 100644 AirScout/wwwroot/dashboard/src/scss/bootstrap/mixins/_utilities.scss create mode 100644 AirScout/wwwroot/dashboard/src/scss/bootstrap/mixins/_visually-hidden.scss create mode 100644 AirScout/wwwroot/dashboard/src/scss/bootstrap/utilities/_api.scss create mode 100644 AirScout/wwwroot/dashboard/src/scss/bootstrap/vendor/_rfs.scss create mode 100644 AirScout/wwwroot/dashboard/src/scss/components.scss create mode 100644 AirScout/wwwroot/dashboard/src/scss/core/animation/animation.scss create mode 100644 AirScout/wwwroot/dashboard/src/scss/core/breadcrumb/breadcrumb.scss create mode 100644 AirScout/wwwroot/dashboard/src/scss/core/buttons/buttons.scss create mode 100644 AirScout/wwwroot/dashboard/src/scss/core/core.scss create mode 100644 AirScout/wwwroot/dashboard/src/scss/core/extra/extra.scss create mode 100644 AirScout/wwwroot/dashboard/src/scss/core/layout/layout.scss create mode 100644 AirScout/wwwroot/dashboard/src/scss/core/loader/spinner.scss create mode 100644 AirScout/wwwroot/dashboard/src/scss/core/perfect-scrollbar/perfect-scrollbar.scss create mode 100644 AirScout/wwwroot/dashboard/src/scss/core/scafholdings/scafholding.scss create mode 100644 AirScout/wwwroot/dashboard/src/scss/core/sidebar/sidebar.scss create mode 100644 AirScout/wwwroot/dashboard/src/scss/core/tables/table-pages.scss create mode 100644 AirScout/wwwroot/dashboard/src/scss/core/topbar/header.scss create mode 100644 AirScout/wwwroot/dashboard/src/scss/core/topbar/notify.scss create mode 100644 AirScout/wwwroot/dashboard/src/scss/core/wave-effects/wave-effects.scss create mode 100644 AirScout/wwwroot/dashboard/src/scss/custom.scss create mode 100644 AirScout/wwwroot/dashboard/src/scss/mixins/padding-margin.scss create mode 100644 AirScout/wwwroot/dashboard/src/scss/pages.scss create mode 100644 AirScout/wwwroot/dashboard/src/scss/pages/dashboards/dashboard1.scss create mode 100644 AirScout/wwwroot/dashboard/src/scss/responsive.scss create mode 100644 AirScout/wwwroot/dashboard/src/scss/style.scss create mode 100644 AirScout/wwwroot/dashboard/src/scss/theme-colors/theme-colors.scss create mode 100644 AirScout/wwwroot/dashboard/src/scss/variable.scss create mode 100644 AirScout/wwwroot/dashboard/src/scss/widgets/chat-widgets.scss create mode 100644 AirScout/wwwroot/dashboard/src/scss/widgets/comments.scss create mode 100644 AirScout/wwwroot/dashboard/src/scss/widgets/feeds.scss create mode 100644 AirScout/wwwroot/dashboard/src/scss/widgets/gal-card.scss create mode 100644 AirScout/wwwroot/dashboard/src/scss/widgets/profile.scss create mode 100644 AirScout/wwwroot/dashboard/src/scss/widgets/steamline.scss create mode 100644 AirScout/wwwroot/dashboard/src/scss/widgets/task.scss create mode 100644 AirScout/wwwroot/dashboard/src/scss/widgets/widgets.scss create mode 100644 AirScout/wwwroot/index.html create mode 100644 AirScout/wwwroot/leaflet/images/layers-2x.png create mode 100644 AirScout/wwwroot/leaflet/images/layers.png create mode 100644 AirScout/wwwroot/leaflet/images/marker-icon-2x-black.png create mode 100644 AirScout/wwwroot/leaflet/images/marker-icon-2x-blue.png create mode 100644 AirScout/wwwroot/leaflet/images/marker-icon-2x-gold.png create mode 100644 AirScout/wwwroot/leaflet/images/marker-icon-2x-green.png create mode 100644 AirScout/wwwroot/leaflet/images/marker-icon-2x-grey.png create mode 100644 AirScout/wwwroot/leaflet/images/marker-icon-2x-orange.png create mode 100644 AirScout/wwwroot/leaflet/images/marker-icon-2x-red.png create mode 100644 AirScout/wwwroot/leaflet/images/marker-icon-2x-violet.png create mode 100644 AirScout/wwwroot/leaflet/images/marker-icon-2x-yellow.png create mode 100644 AirScout/wwwroot/leaflet/images/marker-icon-2x.png create mode 100644 AirScout/wwwroot/leaflet/images/marker-icon-black.png create mode 100644 AirScout/wwwroot/leaflet/images/marker-icon-blue.png create mode 100644 AirScout/wwwroot/leaflet/images/marker-icon-gold.png create mode 100644 AirScout/wwwroot/leaflet/images/marker-icon-green.png create mode 100644 AirScout/wwwroot/leaflet/images/marker-icon-grey.png create mode 100644 AirScout/wwwroot/leaflet/images/marker-icon-orange.png create mode 100644 AirScout/wwwroot/leaflet/images/marker-icon-red.png create mode 100644 AirScout/wwwroot/leaflet/images/marker-icon-violet.png create mode 100644 AirScout/wwwroot/leaflet/images/marker-icon-yellow.png create mode 100644 AirScout/wwwroot/leaflet/images/marker-icon.png create mode 100644 AirScout/wwwroot/leaflet/images/marker-shadow.png create mode 100644 AirScout/wwwroot/leaflet/leaflet-src.esm.js create mode 100644 AirScout/wwwroot/leaflet/leaflet-src.esm.js.map create mode 100644 AirScout/wwwroot/leaflet/leaflet-src.js create mode 100644 AirScout/wwwroot/leaflet/leaflet-src.js.map create mode 100644 AirScout/wwwroot/leaflet/leaflet.css create mode 100644 AirScout/wwwroot/leaflet/leaflet.js create mode 100644 AirScout/wwwroot/leaflet/leaflet.js.map create mode 100644 AirScout/wwwroot/leaflet/leaflet.rotatedMarker.js create mode 100644 AirScout/wwwroot/resources/icons/plane_darkorange.png create mode 100644 AirScout/wwwroot/resources/icons/plane_gray.png create mode 100644 AirScout/wwwroot/resources/icons/plane_magenta.png create mode 100644 AirScout/wwwroot/resources/icons/plane_red.png create mode 100644 AirScout/wwwroot/resources/js/airscout.aircrafts.js create mode 100644 AirScout/wwwroot/resources/js/airscout.core.js create mode 100644 AirScout/wwwroot/resources/js/airscout.js create mode 100644 AirScout/wwwroot/resources/js/jquery.js create mode 100644 AirScout/wwwroot/resources/js/jquery.min.js create mode 100644 AirScout/wwwroot/resources/js/scoutbase.core.js diff --git a/AirScout.Aircrafts/AircraftDatabase.cs b/AirScout.Aircrafts/AircraftDatabase.cs index d5e1511..2cb77f9 100644 --- a/AirScout.Aircrafts/AircraftDatabase.cs +++ b/AirScout.Aircrafts/AircraftDatabase.cs @@ -406,9 +406,10 @@ namespace AirScout.Aircrafts public int AircraftBulkInsert(List ads) { int errors = 0; - try + + lock (db) { - lock (db) + try { db.BeginTransaction(); foreach (AircraftDesignator ad in ads) @@ -423,22 +424,25 @@ namespace AirScout.Aircrafts errors++; } } + } + catch (Exception ex) + { + Log.WriteMessage(ex.ToString(), LogLevel.Error); + } + finally + { db.Commit(); } } - catch (Exception ex) - { - Log.WriteMessage(ex.ToString(), LogLevel.Error); - } return -errors; } public int AircraftBulkDelete(List ads) { int errors = 0; - try + lock (db) { - lock (db) + try { db.BeginTransaction(); foreach (AircraftDesignator ad in ads) @@ -453,13 +457,16 @@ namespace AirScout.Aircrafts errors++; } } + } + catch (Exception ex) + { + Log.WriteMessage(ex.ToString(), LogLevel.Error); + } + finally + { db.Commit(); } } - catch (Exception ex) - { - Log.WriteMessage(ex.ToString(), LogLevel.Error); - } return -errors; } @@ -468,9 +475,9 @@ namespace AirScout.Aircrafts if (ads == null) return 0; int i = 0; - try + lock (db) { - lock (db) + try { db.BeginTransaction(); foreach (AircraftDesignator ad in ads) @@ -485,13 +492,16 @@ namespace AirScout.Aircrafts } } + } + catch (Exception ex) + { + Log.WriteMessage(ex.ToString(), LogLevel.Error); + } + finally + { db.Commit(); } } - catch(Exception ex) - { - Log.WriteMessage(ex.ToString(), LogLevel.Error); - } return i; } @@ -885,9 +895,9 @@ namespace AirScout.Aircrafts public int AircraftTypeBulkInsert(List tds) { int errors = 0; - try + lock (db) { - lock (db) + try { db.BeginTransaction(); foreach (AircraftTypeDesignator td in tds) @@ -902,22 +912,25 @@ namespace AirScout.Aircrafts errors++; } } + } + catch (Exception ex) + { + Log.WriteMessage(ex.ToString(), LogLevel.Error); + } + finally + { db.Commit(); } } - catch (Exception ex) - { - Log.WriteMessage(ex.ToString(), LogLevel.Error); - } return -errors; } public int AircraftTypeBulkDelete(List ads) { int errors = 0; - try + lock (db) { - lock (db) + try { db.BeginTransaction(); foreach (AircraftTypeDesignator td in ads) @@ -932,13 +945,16 @@ namespace AirScout.Aircrafts errors++; } } + } + catch (Exception ex) + { + Log.WriteMessage(ex.ToString(), LogLevel.Error); + } + finally + { db.Commit(); } } - catch (Exception ex) - { - Log.WriteMessage(ex.ToString(), LogLevel.Error); - } return -errors; } @@ -949,13 +965,23 @@ namespace AirScout.Aircrafts int i = 0; lock (db) { - db.BeginTransaction(); - foreach (AircraftTypeDesignator ad in ads) + try { - AircraftTypeInsertOrUpdateIfNewer(ad); - i++; + db.BeginTransaction(); + foreach (AircraftTypeDesignator ad in ads) + { + AircraftTypeInsertOrUpdateIfNewer(ad); + i++; + } + } + catch (Exception ex) + { + Log.WriteMessage(ex.ToString(), LogLevel.Error); + } + finally + { + db.Commit(); } - db.Commit(); } return i; } @@ -1285,9 +1311,9 @@ namespace AirScout.Aircrafts public int AirlineBulkInsert(List lds) { int errors = 0; - try + lock (db) { - lock (db) + try { db.BeginTransaction(); foreach (AirlineDesignator ld in lds) @@ -1302,22 +1328,25 @@ namespace AirScout.Aircrafts errors++; } } + } + catch (Exception ex) + { + Log.WriteMessage(ex.ToString(), LogLevel.Error); + } + finally + { db.Commit(); } } - catch (Exception ex) - { - Log.WriteMessage(ex.ToString(), LogLevel.Error); - } return -errors; } public int AirlineBulkDelete(List lds) { int errors = 0; - try + lock (db) { - lock (db) + try { db.BeginTransaction(); foreach (AirlineDesignator ld in lds) @@ -1332,13 +1361,16 @@ namespace AirScout.Aircrafts errors++; } } + } + catch (Exception ex) + { + Log.WriteMessage(ex.ToString(), LogLevel.Error); + } + finally + { db.Commit(); } } - catch (Exception ex) - { - Log.WriteMessage(ex.ToString(), LogLevel.Error); - } return -errors; } @@ -1348,14 +1380,24 @@ namespace AirScout.Aircrafts return 0; int i = 0; lock (db) - { - db.BeginTransaction(); - foreach (AirlineDesignator ld in lds) + { + try { - AirlineInsertOrUpdateIfNewer(ld); - i++; + db.BeginTransaction(); + foreach (AirlineDesignator ld in lds) + { + AirlineInsertOrUpdateIfNewer(ld); + i++; + } + } + catch (Exception ex) + { + Log.WriteMessage(ex.ToString(), LogLevel.Error); + } + finally + { + db.Commit(); } - db.Commit(); } return i; } @@ -1691,9 +1733,9 @@ namespace AirScout.Aircrafts public int AirportBulkInsert(List pds) { int errors = 0; - try + lock (db) { - lock (db) + try { db.BeginTransaction(); foreach (AirportDesignator pd in pds) @@ -1708,22 +1750,25 @@ namespace AirScout.Aircrafts errors++; } } + } + catch (Exception ex) + { + Log.WriteMessage(ex.ToString(), LogLevel.Error); + } + finally + { db.Commit(); } } - catch (Exception ex) - { - Log.WriteMessage(ex.ToString(), LogLevel.Error); - } return -errors; } public int AirportBulkDelete(List pds) { int errors = 0; - try + lock (db) { - lock (db) + try { db.BeginTransaction(); foreach (AirportDesignator pd in pds) @@ -1738,13 +1783,16 @@ namespace AirScout.Aircrafts errors++; } } + } + catch (Exception ex) + { + Log.WriteMessage(ex.ToString(), LogLevel.Error); + } + finally + { db.Commit(); } } - catch (Exception ex) - { - Log.WriteMessage(ex.ToString(), LogLevel.Error); - } return -errors; } @@ -1755,13 +1803,23 @@ namespace AirScout.Aircrafts int i = 0; lock (db) { - db.BeginTransaction(); - foreach (AirportDesignator pd in pds) + try { - AirportInsertOrUpdateIfNewer(pd); - i++; + db.BeginTransaction(); + foreach (AirportDesignator pd in pds) + { + AirportInsertOrUpdateIfNewer(pd); + i++; + } + } + catch (Exception ex) + { + Log.WriteMessage(ex.ToString(), LogLevel.Error); + } + finally + { + db.Commit(); } - db.Commit(); } return i; } @@ -2088,9 +2146,9 @@ namespace AirScout.Aircrafts public int AircraftRegistrationBulkInsert(List rds) { int errors = 0; - try + lock (db) { - lock (db) + try { db.BeginTransaction(); foreach (AircraftRegistrationDesignator rd in rds) @@ -2105,22 +2163,25 @@ namespace AirScout.Aircrafts errors++; } } + } + catch (Exception ex) + { + Log.WriteMessage(ex.ToString(), LogLevel.Error); + } + finally + { db.Commit(); } } - catch (Exception ex) - { - Log.WriteMessage(ex.ToString(), LogLevel.Error); - } return -errors; } public int AircraftRegistrationBulkDelete(List rds) { int errors = 0; - try + lock (db) { - lock (db) + try { db.BeginTransaction(); foreach (AircraftRegistrationDesignator rd in rds) @@ -2135,13 +2196,16 @@ namespace AirScout.Aircrafts errors++; } } + } + catch (Exception ex) + { + Log.WriteMessage(ex.ToString(), LogLevel.Error); + } + finally + { db.Commit(); } } - catch (Exception ex) - { - Log.WriteMessage(ex.ToString(), LogLevel.Error); - } return -errors; } @@ -2152,13 +2216,23 @@ namespace AirScout.Aircrafts int i = 0; lock (db) { - db.BeginTransaction(); - foreach (AircraftRegistrationDesignator rd in rds) + try { - AircraftRegistrationInsertOrUpdateIfNewer(rd); - i++; + db.BeginTransaction(); + foreach (AircraftRegistrationDesignator rd in rds) + { + AircraftRegistrationInsertOrUpdateIfNewer(rd); + i++; + } + } + catch (Exception ex) + { + Log.WriteMessage(ex.ToString(), LogLevel.Error); + } + finally + { + db.Commit(); } - db.Commit(); } return i; } @@ -2262,27 +2336,37 @@ namespace AirScout.Aircrafts int i = 0; lock (db) { - db.BeginTransaction(); - foreach (PlaneInfo plane in planes) + try { - try + db.BeginTransaction(); + foreach (PlaneInfo plane in planes) { - // update aircraft information - if (PlaneInfoChecker.Check_Hex(plane.Hex) && PlaneInfoChecker.Check_Call(plane.Call) && PlaneInfoChecker.Check_Reg(plane.Reg) && PlaneInfoChecker.Check_Type(plane.Type)) - AircraftData.Database.AircraftInsertOrUpdateIfNewer(new AircraftDesignator(plane.Hex, plane.Call, plane.Reg, plane.Type, plane.Time)); - // update aircraft type information - if (!String.IsNullOrEmpty(plane.Type)) + try { - AircraftTypeInsertOrUpdateIfNewer(new AircraftTypeDesignator("", plane.Type, plane.Manufacturer, plane.Model, plane.Category, DateTime.UtcNow)); + // update aircraft information + if (PlaneInfoChecker.Check_Hex(plane.Hex) && PlaneInfoChecker.Check_Call(plane.Call) && PlaneInfoChecker.Check_Reg(plane.Reg) && PlaneInfoChecker.Check_Type(plane.Type)) + AircraftData.Database.AircraftInsertOrUpdateIfNewer(new AircraftDesignator(plane.Hex, plane.Call, plane.Reg, plane.Type, plane.Time)); + // update aircraft type information + if (!String.IsNullOrEmpty(plane.Type)) + { + AircraftTypeInsertOrUpdateIfNewer(new AircraftTypeDesignator("", plane.Type, plane.Manufacturer, plane.Model, plane.Category, DateTime.UtcNow)); + } + } + catch (Exception ex) + { + Log.WriteMessage(ex.ToString(), LogLevel.Error); + return -1; } } - catch (Exception ex) - { - Log.WriteMessage(ex.ToString(), LogLevel.Error); - return -1; - } } - db.Commit(); + catch (Exception ex) + { + Log.WriteMessage(ex.ToString(), LogLevel.Error); + } + finally + { + db.Commit(); + } } return i; } diff --git a/AirScout.Aircrafts/AircraftDatabaseUpdater.cs b/AirScout.Aircrafts/AircraftDatabaseUpdater.cs index 23c385f..0f7d77e 100644 --- a/AirScout.Aircrafts/AircraftDatabaseUpdater.cs +++ b/AirScout.Aircrafts/AircraftDatabaseUpdater.cs @@ -298,6 +298,16 @@ namespace AirScout.Aircrafts this.ReportProgress(1, AircraftData.Database.GetDBStatus()); Stopwatch st = new Stopwatch(); st.Start(); + // clear temporary files + try + { + SupportFunctions.DeleteFilesFromDirectory(TmpDirectory, new string[] { "*.tmp", "*.PendingOverwrite" }); + } + catch (Exception ex) + { + this.ReportProgress(-1, ex.ToString()); + } + // set database status to updating AircraftData.Database.SetDBStatus(DATABASESTATUS.UPDATING); this.ReportProgress(1, AircraftData.Database.GetDBStatus()); // update aircraft database diff --git a/AirScout.Aircrafts/PlaneInfoCache.cs b/AirScout.Aircrafts/PlaneInfoCache.cs index 7e7d8c0..4cfdf69 100644 --- a/AirScout.Aircrafts/PlaneInfoCache.cs +++ b/AirScout.Aircrafts/PlaneInfoCache.cs @@ -30,6 +30,7 @@ namespace AirScout.Aircrafts // plane already in cache --> check time and update if newer if (plane.Time > oldplane.Time) { + // keep old values oldplane.OldTime = oldplane.Time; oldplane.OldLat = oldplane.Lat; @@ -211,8 +212,6 @@ namespace AirScout.Aircrafts public List GetAll(DateTime at, int ttl) { - string filename = "positions.csv"; - string call = "CSN464"; List l = new List(); DateTime to = at; @@ -239,6 +238,10 @@ namespace AirScout.Aircrafts double newtrack = (plane.Track - plane.OldTrack) / oldtimediff * newtimediff + plane.Track; double newspeed = (plane.Speed - plane.OldSpeed) / oldtimediff * newtimediff + plane.Speed; + /* + string filename = "positions.csv"; + string call = "CSN464"; + if (plane.Call == call) { File.AppendAllText(filename, oldtimediff.ToString() + ";" + @@ -254,6 +257,8 @@ namespace AirScout.Aircrafts newspeed.ToString("F8") + ";" + Environment.NewLine); } + */ + // do plausibility check of calculated values if ((newalt > 0) && (newalt < 50000) && (newtrack > 0) && (newtrack < 360) && @@ -266,6 +271,7 @@ namespace AirScout.Aircrafts else { // do nothing + /* if (plane.Call == call) { File.AppendAllText(filename, oldtimediff.ToString() + ";" + @@ -282,15 +288,18 @@ namespace AirScout.Aircrafts "invalid values!" + Environment.NewLine); } + */ } } else { // do nothing + /* if (plane.Call == call) { File.AppendAllText(filename, oldtimediff.ToString() + ";" + newtimediff.ToString() + "invalid timediff!" + Environment.NewLine); } + */ } } else diff --git a/AirScout.Aircrafts/PlaneInfoChecker.cs b/AirScout.Aircrafts/PlaneInfoChecker.cs index 59a1a72..dcb15fa 100644 --- a/AirScout.Aircrafts/PlaneInfoChecker.cs +++ b/AirScout.Aircrafts/PlaneInfoChecker.cs @@ -77,13 +77,15 @@ namespace AirScout.Aircrafts reg = reg.Replace("\"", String.Empty).ToUpper().Trim(); if (reg.Length < AircraftData.Database.AircraftRegistrationMinLength + 1) return false; - if (!reg.Contains('-') && !reg.StartsWith("N")) + if (!reg.Contains('-') && !reg.StartsWith("N") && !reg.StartsWith("H")) return false; return true; } public static bool Check_Lat(double lat) { + if (double.IsNaN(lat)) + return false; if (lat < -90) return false; if (lat > 90) @@ -93,6 +95,8 @@ namespace AirScout.Aircrafts public static bool Check_Lon(double lon) { + if (double.IsNaN(lon)) + return false; if (lon < -180) return false; if (lon > 180) @@ -102,6 +106,8 @@ namespace AirScout.Aircrafts public static bool Check_Alt(double alt) { + if (double.IsNaN(alt)) + return false; if (alt < 0) return false; if (alt > 100000.0) @@ -111,6 +117,8 @@ namespace AirScout.Aircrafts public static bool Check_Track(double track) { + if (double.IsNaN(track)) + return false; if (track < 0) return false; if (track >= 360) @@ -121,6 +129,8 @@ namespace AirScout.Aircrafts public static bool Check_Speed(double speed) { + if (double.IsNaN(speed)) + return false; if (speed < 0) return false; if (speed > 800) diff --git a/AirScout.CAT/CATWorker.cs b/AirScout.CAT/CATWorker.cs index 39f91fb..b0f4c07 100644 --- a/AirScout.CAT/CATWorker.cs +++ b/AirScout.CAT/CATWorker.cs @@ -89,84 +89,15 @@ namespace AirScout.CAT protected override void OnDoWork(DoWorkEventArgs e) { StartOptions = (CATWorkerStartOptions)e.Argument; + this.ReportProgress(0, StartOptions.Name + " started."); + // name the thread for debugging if (String.IsNullOrEmpty(Thread.CurrentThread.Name)) Thread.CurrentThread.Name = StartOptions.Name + "_" + this.GetType().Name; - // check if any CAT is working by getting all supported rigs - // handle exceptions - List rigs = new List(); - try - { - rigs = CATWorker.SupportedRigs(); - } - catch (Exception ex) - { - this.ReportProgress(-1, "Error while getting supported rigs from CAT: " + ex.Message); - this.ReportProgress(1, RIGSTATUS.NOCAT); - return; - } - - // check if any rig is found - if (rigs.Count == 0) - { - this.ReportProgress(-1, "Error while getting supported rigs from CAT: No available CAT found!"); - this.ReportProgress(1, RIGSTATUS.NORIG); - return; - } - - // check if the rig is among the currently supported rigs --> get a new IRig object - // be careful with ActiveX objects an handle exceptions + // initially set Rig to NULL Rig = null; - try - { - foreach (SupportedRig rig in rigs) - { - if (rig.Type == StartOptions.RigType) - { - switch (rig.CATEngine) - { - case CATENGINE.OMNIRIGX: Rig = new OmniRigX(); break; - case CATENGINE.SCOUTBASE: Rig = new ScoutBaseRig(); break; - } - - // OK, we have a valid CAT and rig --> complete and download settings - RigSettings settings = new RigSettings(); - settings.Type = rig.Type; - settings.Model = rig.Model; - settings.PortName = StartOptions.PortName; - settings.Baudrate = StartOptions.Baudrate; - settings.DataBits = StartOptions.DataBits; - settings.Parity = StartOptions.Parity; - settings.StopBits = StartOptions.StopBits; - settings.RtsMode = StartOptions.RTS; - settings.DtrMode = StartOptions.DTR; - settings.PollMs = StartOptions.Poll; - settings.TimeoutMs = StartOptions.Timeout; - Rig.Settings = settings; - - // stop search - break; - } - } - } - catch (Exception ex) - { - this.ReportProgress(-1, "Error while trying to get a rig object from CAT: " + ex.ToString()); - } - - // report error if rig is still null - if (Rig == null) - { - this.ReportProgress(-1, "Rig is not supported by any available CAT!"); - this.ReportProgress(1, RIGSTATUS.NORIG); - return; - } - - - this.ReportProgress(0, "Opening CAT: Success!"); - this.ReportProgress(2, Rig); // old values for check changes DOPPLERSTRATEGY olddoppler = DOPPLERSTRATEGY.DOPPLER_NONE; @@ -180,9 +111,100 @@ namespace AirScout.CAT // run polling loop while (!this.CancellationPending) { + // get Rig if NULL + if (Rig == null) + { + // check if any CAT is working by getting all supported rigs + // handle exceptions + List rigs = new List(); + try + { + rigs = CATWorker.SupportedRigs(); + } + catch (Exception ex) + { + this.ReportProgress(-1, "Error while getting supported rigs from CAT: " + ex.Message); + this.ReportProgress(1, RIGSTATUS.NOCAT); + } + + // check if any rig is found + if (rigs.Count == 0) + { + this.ReportProgress(-1, "Error while getting supported rigs from CAT: No available CAT found!"); + this.ReportProgress(1, RIGSTATUS.NORIG); + } + + // check if the rig is among the currently supported rigs --> get a new IRig object + // be careful with ActiveX objects an handle exceptions + try + { + foreach (SupportedRig rig in rigs) + { + if (rig.Type == StartOptions.RigType) + { + switch (rig.CATEngine) + { + case CATENGINE.OMNIRIGX: Rig = new OmniRigX(); break; + case CATENGINE.SCOUTBASE: Rig = new ScoutBaseRig(); break; + } + + // OK, we have a valid CAT and rig --> complete and download settings + RigSettings settings = new RigSettings(); + settings.Type = rig.Type; + settings.Model = rig.Model; + settings.PortName = StartOptions.PortName; + settings.Baudrate = StartOptions.Baudrate; + settings.DataBits = StartOptions.DataBits; + settings.Parity = StartOptions.Parity; + settings.StopBits = StartOptions.StopBits; + settings.RtsMode = StartOptions.RTS; + settings.DtrMode = StartOptions.DTR; + settings.PollMs = StartOptions.Poll; + settings.TimeoutMs = StartOptions.Timeout; + Rig.Settings = settings; + + // stop search + break; + } + } + + this.ReportProgress(0, "Opening CAT: Success!"); + this.ReportProgress(2, Rig); + + // old values for check changes + olddoppler = DOPPLERSTRATEGY.DOPPLER_NONE; + oldrigstat = RIGSTATUS.NONE; + oldrigmode = RIGMODE.NONE; + oldrigsplit = RIGSPLIT.NONE; + oldrigrit = RIGRIT.NONE; + oldrxfreq = -1; + oldtxfreq = -1; + + } + catch (Exception ex) + { + this.ReportProgress(-1, "Error while trying to get a rig object from CAT: " + ex.ToString()); + } + } + + // report error if rig is still null + if (Rig == null) + { + this.ReportProgress(-1, "No rig selected or rig is not supported by any available CAT!"); + this.ReportProgress(1, RIGSTATUS.NORIG); + Rig = null; + Thread.Sleep(10000); + continue; + } + try { RIGSTATUS rigstatus = Rig.GetStatus(); + if (rigstatus == RIGSTATUS.NONE) + { + throw new Exception("Rig lost during polling!"); + } + if (oldrigstat != rigstatus) { oldrigstat = rigstatus; @@ -276,12 +298,24 @@ namespace AirScout.CAT } catch (Exception ex) { - + this.ReportProgress(-1, "Error while polling CAT: " + ex.ToString()); + this.ReportProgress(1, RIGSTATUS.NORIG); + Rig = null; } Thread.Sleep(Properties.Settings.Default.CAT_Update); } + // Reset doppler tracking, if any + try + { + Rig.LeaveDoppler(); + } + catch (Exception ex) + { + + } + // reset status this.ReportProgress(1, RIGSTATUS.NONE); } diff --git a/AirScout.CAT/OmniRigX.cs b/AirScout.CAT/OmniRigX.cs index 006ae3f..e032885 100644 --- a/AirScout.CAT/OmniRigX.cs +++ b/AirScout.CAT/OmniRigX.cs @@ -86,6 +86,19 @@ namespace AirScout.CAT private static void StartOmniRig() { + // check for OmniRigEngine is accessible + try + { + if (OmniRigEngine == null) + { + // do nothing + } + } + catch + { + OmniRigEngine = null; + } + if (OmniRigEngine == null) { try @@ -1300,7 +1313,20 @@ namespace AirScout.CAT { List l = new List(); - // try get OmniRig working + // check for OmniRigEngine is accessible + try + { + if (OmniRigEngine == null) + { + // do nothing + } + } + catch + { + OmniRigEngine = null; + } + + // start OmniRig engine if (OmniRigEngine == null) { StartOmniRig(); diff --git a/AirScout.CAT/Properties/Settings.Designer.cs b/AirScout.CAT/Properties/Settings.Designer.cs index ba9d571..8e3e0df 100644 --- a/AirScout.CAT/Properties/Settings.Designer.cs +++ b/AirScout.CAT/Properties/Settings.Designer.cs @@ -12,7 +12,7 @@ namespace AirScout.CAT.Properties { [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.5.0.0")] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.0.3.0")] public sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); @@ -61,7 +61,7 @@ namespace AirScout.CAT.Properties { [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("")] + [global::System.Configuration.DefaultSettingValueAttribute("[None]")] public string CAT_RigType { get { return ((string)(this["CAT_RigType"])); diff --git a/AirScout.CAT/Properties/Settings.settings b/AirScout.CAT/Properties/Settings.settings index b66b028..4b024a1 100644 --- a/AirScout.CAT/Properties/Settings.settings +++ b/AirScout.CAT/Properties/Settings.settings @@ -12,7 +12,7 @@ 500 - + [None] diff --git a/AirScout.CAT/app.config b/AirScout.CAT/app.config index fb57df7..9ba161c 100644 --- a/AirScout.CAT/app.config +++ b/AirScout.CAT/app.config @@ -17,7 +17,7 @@ 500 - + [None] diff --git a/AirScout.PlaneFeeds.Plugin.AirScoutServer/AirScoutServer.cs b/AirScout.PlaneFeeds.Plugin.AirScoutServer/AirScoutServer.cs index 1aff870..895cc0e 100644 --- a/AirScout.PlaneFeeds.Plugin.AirScoutServer/AirScoutServer.cs +++ b/AirScout.PlaneFeeds.Plugin.AirScoutServer/AirScoutServer.cs @@ -160,7 +160,7 @@ namespace AirScout.PlaneFeeds.Plugin.AirScoutServer { using (StreamWriter sw = new StreamWriter(File.Create(filename))) { - XmlSerializer s = new XmlSerializer(this.GetType(), overrides,null,new XmlRootAttribute(),""); + XmlSerializer s = new XmlSerializer(this.GetType(), overrides, null, new XmlRootAttribute(), ""); s.Serialize(sw, this); } } @@ -347,8 +347,13 @@ namespace AirScout.PlaneFeeds.Plugin.AirScoutServer // JavaScriptSerializer js = new JavaScriptSerializer(); // dynamic root = js.Deserialize(json); + + // check for empty list + if (json.Length < 20) + return new PlaneFeedPluginPlaneInfoList(); + // get the planes position list - List aclist = JsonConvert.DeserializeObject >(json); + List aclist = JsonConvert.DeserializeObject>(json); Console.WriteLine("[" + this.GetType().Name + "]: Created object from JSON is " + aclist.GetType().ToString()); // analyze json string for planes data foreach (PlaneJSON ac in aclist) @@ -356,7 +361,7 @@ namespace AirScout.PlaneFeeds.Plugin.AirScoutServer try { PlaneFeedPluginPlaneInfo plane = new PlaneFeedPluginPlaneInfo(); - plane.Hex = !String.IsNullOrEmpty(ac.Hex)? ac.Hex : ""; + plane.Hex = !String.IsNullOrEmpty(ac.Hex) ? ac.Hex : ""; plane.Call = !String.IsNullOrEmpty(ac.Call) ? ac.Call : ""; plane.Lat = (ac.Lat != null) ? (double)ac.Lat : double.NaN; plane.Lon = (ac.Lon != null) ? (double)ac.Lon : double.NaN; @@ -389,7 +394,7 @@ namespace AirScout.PlaneFeeds.Plugin.AirScoutServer } } catch - { + { // do nothing if saving fails } // forward exception to parent thread @@ -603,6 +608,7 @@ namespace AirScout.PlaneFeeds.Plugin.AirScoutServer } return s; } - } } + + diff --git a/AirScout.PlaneFeeds.Plugin.AirScoutServer/Properties/AssemblyInfo.cs b/AirScout.PlaneFeeds.Plugin.AirScoutServer/Properties/AssemblyInfo.cs index 7dc50bf..84eb0e8 100644 --- a/AirScout.PlaneFeeds.Plugin.AirScoutServer/Properties/AssemblyInfo.cs +++ b/AirScout.PlaneFeeds.Plugin.AirScoutServer/Properties/AssemblyInfo.cs @@ -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.4.0.0")] -[assembly: AssemblyFileVersion("1.4.0.0")] +[assembly: AssemblyVersion("1.4.0.1")] +[assembly: AssemblyFileVersion("1.4.0.1")] diff --git a/AirScout.PlaneFeeds.Plugin.OpenSky/OpenSky.cs b/AirScout.PlaneFeeds.Plugin.OpenSky/OpenSky.cs index b7a1e3e..f1d8171 100644 --- a/AirScout.PlaneFeeds.Plugin.OpenSky/OpenSky.cs +++ b/AirScout.PlaneFeeds.Plugin.OpenSky/OpenSky.cs @@ -394,63 +394,66 @@ namespace AirScout.PlaneFeeds.Plugin.OpenSky // analyze json string for planes data // get the planes position list var aclist = root["states"]; - foreach (var ac in aclist) + if (aclist != null) { - try + foreach (var ac in aclist) { - // different handling of reading JSON between Windows (Array) & Linux (ArrayList) - // access to data values itself is the same - int len = 0; - len = ac.Count; - // skip if too few fields in record - if (len < 17) - continue; - PlaneFeedPluginPlaneInfo plane = new PlaneFeedPluginPlaneInfo(); - // get hex first - plane.Hex = ReadPropertyString(ac, 0).ToUpper().Trim(); - // get callsign - plane.Call = ReadPropertyString(ac, 1).ToUpperInvariant().Trim(); - // get position - plane.Lon = ReadPropertyDouble(ac, 5); - plane.Lat = ReadPropertyDouble(ac, 6); - // get altitude (provided in m --> convert to ft) - plane.Alt = UnitConverter.m_ft(ReadPropertyDouble(ac, 13)); - // get track - plane.Track = ReadPropertyDouble(ac, 10); - // get speed (provided in m/s --> convert to kts) - plane.Speed = UnitConverter.ms_kts(ReadPropertyDouble(ac, 9)); - // registration is not provided - plane.Reg = ""; - // get position timestamp in sec - int l = ReadPropertyInt(ac, 3); - if (l != int.MinValue) + try { - DateTime timestamp = new System.DateTime(1970, 1, 1, 0, 0, 0, 0); - timestamp = timestamp.AddSeconds(l); - plane.Time = timestamp; + // different handling of reading JSON between Windows (Array) & Linux (ArrayList) + // access to data values itself is the same + int len = 0; + len = ac.Count; + // skip if too few fields in record + if (len < 17) + continue; + PlaneFeedPluginPlaneInfo plane = new PlaneFeedPluginPlaneInfo(); + // get hex first + plane.Hex = ReadPropertyString(ac, 0).ToUpper().Trim(); + // get callsign + plane.Call = ReadPropertyString(ac, 1).ToUpperInvariant().Trim(); + // get position + plane.Lon = ReadPropertyDouble(ac, 5); + plane.Lat = ReadPropertyDouble(ac, 6); + // get altitude (provided in m --> convert to ft) + plane.Alt = UnitConverter.m_ft(ReadPropertyDouble(ac, 13)); + // get track + plane.Track = ReadPropertyDouble(ac, 10); + // get speed (provided in m/s --> convert to kts) + plane.Speed = UnitConverter.ms_kts(ReadPropertyDouble(ac, 9)); + // registration is not provided + plane.Reg = ""; + // get position timestamp in sec + int l = ReadPropertyInt(ac, 3); + if (l != int.MinValue) + { + DateTime timestamp = new System.DateTime(1970, 1, 1, 0, 0, 0, 0); + timestamp = timestamp.AddSeconds(l); + plane.Time = timestamp; + } + else + { + // skip plane if no valid timestamp found + continue; + } + // get type info + plane.Type = ReadPropertyString(ac, 5); + + // discard planes on ground + bool onground = ReadPropertyBool(ac, 8); + if (onground) + continue; + + // discard planes stopped + if (plane.Speed <= 0) + continue; + + planes.Add(plane); } - else + catch (Exception ex) { - // skip plane if no valid timestamp found - continue; + Console.WriteLine("[" + System.Reflection.MethodBase.GetCurrentMethod().Name + "]" + ex.Message); } - // get type info - plane.Type = ReadPropertyString(ac, 5); - - // discard planes on ground - bool onground = ReadPropertyBool(ac, 8); - if (onground) - continue; - - // discard planes stopped - if (plane.Speed <= 0) - continue; - - planes.Add(plane); - } - catch (Exception ex) - { - Console.WriteLine("[" + System.Reflection.MethodBase.GetCurrentMethod().Name + "]" + ex.Message); } } } diff --git a/AirScout.PlaneFeeds.Plugin.OpenSky/Properties/AssemblyInfo.cs b/AirScout.PlaneFeeds.Plugin.OpenSky/Properties/AssemblyInfo.cs index 1d9325f..7e4756c 100644 --- a/AirScout.PlaneFeeds.Plugin.OpenSky/Properties/AssemblyInfo.cs +++ b/AirScout.PlaneFeeds.Plugin.OpenSky/Properties/AssemblyInfo.cs @@ -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.4.1.0")] -[assembly: AssemblyFileVersion("1.4.1.0")] +[assembly: AssemblyVersion("1.4.1.1")] +[assembly: AssemblyFileVersion("1.4.1.1")] diff --git a/AirScout.PlaneFeeds.Plugin.RB24/AirScout.PlaneFeeds.Plugin.RB24.csproj b/AirScout.PlaneFeeds.Plugin.RB24/AirScout.PlaneFeeds.Plugin.RB24.csproj new file mode 100644 index 0000000..11b1bd4 --- /dev/null +++ b/AirScout.PlaneFeeds.Plugin.RB24/AirScout.PlaneFeeds.Plugin.RB24.csproj @@ -0,0 +1,87 @@ + + + + + + Debug + AnyCPU + {D953C82D-5881-4F5C-8335-1C54114BE28B} + Library + Properties + AirScout.PlaneFeeds.Plugin.RB24 + AirScout.PlaneFeeds.Plugin.RB24 + v4.0 + 512 + true + + + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + ..\packages\Newtonsoft.Json.12.0.3\lib\net40\Newtonsoft.Json.dll + + + + + + + + + + + + + + + + True + True + Settings.settings + + + + + {36945dbd-96c8-41e7-9168-f83c42e67af3} + AirScout.PlaneFeeds.Plugin + False + + + + + + + SettingsSingleFileGenerator + Settings.Designer.cs + + + + + + Dieses Projekt verweist auf mindestens ein NuGet-Paket, das auf diesem Computer fehlt. Verwenden Sie die Wiederherstellung von NuGet-Paketen, um die fehlenden Dateien herunterzuladen. Weitere Informationen finden Sie unter "http://go.microsoft.com/fwlink/?LinkID=322105". Die fehlende Datei ist "{0}". + + + + + + + mkdir $(SolutionDir)\Airscout\$(OutDir)\Plugin\ +copy $(ProjectDir)\$(OutDir)\ILMerge\*$(TargetExt) $(SolutionDir)\Airscout\$(OutDir)\Plugin\ /y + + \ No newline at end of file diff --git a/AirScout.PlaneFeeds.Plugin.RB24/Properties/AssemblyInfo.cs b/AirScout.PlaneFeeds.Plugin.RB24/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..a17b692 --- /dev/null +++ b/AirScout.PlaneFeeds.Plugin.RB24/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// Allgemeine Informationen über eine Assembly werden über die folgenden +// Attribute gesteuert. Ändern Sie diese Attributwerte, um die Informationen zu ändern, +// die einer Assembly zugeordnet sind. +[assembly: AssemblyTitle("AirScout.PlaneFeeds.Plugin.PlaneFinder")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("AirScout.PlaneFeeds.Plugin.PlaneFinder")] +[assembly: AssemblyCopyright("Copyright © 2020")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Durch Festlegen von ComVisible auf FALSE werden die Typen in dieser Assembly +// für COM-Komponenten unsichtbar. Wenn Sie auf einen Typ in dieser Assembly von +// COM aus zugreifen müssen, sollten Sie das ComVisible-Attribut für diesen Typ auf "True" festlegen. +[assembly: ComVisible(false)] + +// Die folgende GUID bestimmt die ID der Typbibliothek, wenn dieses Projekt für COM verfügbar gemacht wird +[assembly: Guid("db85e98a-e209-49d0-b6cf-6cdd5b8e20e3")] + +// Versionsinformationen für eine Assembly bestehen aus den folgenden vier Werten: +// +// Hauptversion +// Nebenversion +// Buildnummer +// Revision +// +// 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.4.0.0")] +[assembly: AssemblyFileVersion("1.4.0.0")] diff --git a/AirScout.PlaneFeeds.Plugin.RB24/Properties/Settings.Designer.cs b/AirScout.PlaneFeeds.Plugin.RB24/Properties/Settings.Designer.cs new file mode 100644 index 0000000..1ba6292 --- /dev/null +++ b/AirScout.PlaneFeeds.Plugin.RB24/Properties/Settings.Designer.cs @@ -0,0 +1,26 @@ +//------------------------------------------------------------------------------ +// +// Dieser Code wurde von einem Tool generiert. +// Laufzeitversion:4.0.30319.42000 +// +// Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn +// der Code erneut generiert wird. +// +//------------------------------------------------------------------------------ + +namespace AirScout.PlaneFeeds.Plugin.RB24.Properties { + + + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.4.0.0")] + internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { + + private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); + + public static Settings Default { + get { + return defaultInstance; + } + } + } +} diff --git a/AirScout.PlaneFeeds.Plugin.RB24/Properties/Settings.settings b/AirScout.PlaneFeeds.Plugin.RB24/Properties/Settings.settings new file mode 100644 index 0000000..8e615f2 --- /dev/null +++ b/AirScout.PlaneFeeds.Plugin.RB24/Properties/Settings.settings @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/AirScout.PlaneFeeds.Plugin.RB24/RB24.cs b/AirScout.PlaneFeeds.Plugin.RB24/RB24.cs new file mode 100644 index 0000000..6527140 --- /dev/null +++ b/AirScout.PlaneFeeds.Plugin.RB24/RB24.cs @@ -0,0 +1,640 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Reflection; +using System.ComponentModel.Composition; +using System.ComponentModel; +using System.Globalization; +using AirScout.PlaneFeeds.Plugin.MEFContract; +using System.Diagnostics; +using System.Net; +using System.IO; +using System.Web.Script.Serialization; +using System.Collections; +using System.Xml.Serialization; +using System.Xml.Linq; + +namespace AirScout.PlaneFeeds.Plugin.RB24 +{ + + public class RB24Settings + { + + [Browsable(false)] + [DefaultValue("")] + [XmlIgnore] + public string DisclaimerAccepted { get; set; } + + [Browsable(true)] + [CategoryAttribute("Web Feed")] + [DescriptionAttribute("Save downloaded JSON to file")] + [DefaultValue(false)] + [XmlIgnore] + public bool SaveToFile { get; set; } + + [Browsable(true)] + [CategoryAttribute("Web Feed")] + [DescriptionAttribute("Base URL for website.")] + [DefaultValue("https://data.rb24.com/live?aircraft=&airport=&fn=&far=&fms=&zoom=6&flightid=&bounds=%MAXLAT%,%MAXLON%,%MINLAT%,%MINLON%×tamp=%TIMESTAMP%&designator=iata&showLastTrails=true&ff=false&os=web&adsb=true&adsbsat=true&asdi=true&ocea=true&mlat=true&sate=true&uat=true&hfdl=true&esti=true&asdex=true&flarm=true&aust=true&diverted=false&delayed=false&isga=false&ground=true&onair=true&blocked=false&station=&class[]=?&class[]=A&class[]=B&class[]=C&class[]=G&class[]=H&class[]=M&airline=&route=&country=")] + public string URL { get; set; } + + [Browsable(true)] + [CategoryAttribute("Web Feed")] + [DescriptionAttribute("Timeout for loading the site.")] + [DefaultValue(30)] + [XmlIgnore] + public int Timeout { get; set; } + + + public RB24Settings() + { + Default(); + Load(true); + } + + + /// + /// Sets all properties to their default value according to the [DefaultValue=] attribute + /// + public void Default() + { + // set all properties to their default values according to definition in [DeafultValue=] + foreach (var p in this.GetType().GetProperties()) + { + try + { + // initialize all properties with default value if set + if (Attribute.IsDefined(p, typeof(DefaultValueAttribute))) + { + p.SetValue(this, ((DefaultValueAttribute)Attribute.GetCustomAttribute( + p, typeof(DefaultValueAttribute)))?.Value, null); + } + } + catch (Exception ex) + { + Console.WriteLine("[" + this.GetType().Name + "]: Cannot set default value of: " + p.Name + ", " + ex.Message); + } + } + } + + /// + /// Loads settings from a XML-formatted configuration file into settings. + /// + /// If true, ignore the [XmlIgnore] attribute, e.g. load all settings available in the file.
If false, load only settings without [XmlIgore] attrbute.
+ /// The filename of the settings file. + public void Load(bool loadall, string filename = "") + { + // use standard filename if empty + // be careful because Linux file system is case sensitive + if (String.IsNullOrEmpty(filename)) + filename = new Uri(Assembly.GetExecutingAssembly().GetName().CodeBase.Replace(".dll", ".cfg").Replace(".DLL", ".CFG")).LocalPath; + // do nothing if file not exists + if (!File.Exists(filename)) + return; + try + { + string xml = ""; + using (StreamReader sr = new StreamReader(File.OpenRead(filename))) + { + xml = sr.ReadToEnd(); + } + XDocument xdoc = XDocument.Parse(xml); + PropertyInfo[] properties = this.GetType().GetProperties(); + foreach (PropertyInfo p in properties) + { + if (!loadall) + { + // check on XmlIgnore attribute, skip if set + object[] attr = p.GetCustomAttributes(typeof(XmlIgnoreAttribute), false); + if (attr.Length > 0) + continue; + } + try + { + // get matching element + XElement typenode = xdoc.Element(this.GetType().Name); + if (typenode != null) + { + XElement element = typenode.Element(p.Name); + if (element != null) + p.SetValue(this, Convert.ChangeType(element.Value, p.PropertyType), null); + } + } + catch (Exception ex) + { + Console.WriteLine("[" + this.GetType().Name + "]: Error while loading property[" + p.Name + " from " + filename + ", " + ex.Message); + } + } + + } + catch (Exception ex) + { + Console.WriteLine("[" + this.GetType().Name + "]: Cannot load settings from " + filename + ", " + ex.Message); + } + } + + /// + /// Saves settings from settings into a XML-formatted configuration file + /// + /// If true, ignore the [XmlIgnore] attribute, e.g. save all settings.
If false, save only settings without [XmlIgore] attrbute. + /// The filename of the settings file. + public void Save(bool saveall, string filename = "") + { + // use standard filename if empty + // be careful because Linux file system is case sensitive + if (String.IsNullOrEmpty(filename)) + filename = new Uri(Assembly.GetExecutingAssembly().GetName().CodeBase.Replace(".dll", ".cfg").Replace(".DLL", ".CFG")).LocalPath; + XmlAttributeOverrides overrides = new XmlAttributeOverrides(); + if (saveall) + { + // ovverride the XmlIgnore attributes to get all serialized + PropertyInfo[] properties = this.GetType().GetProperties(); + foreach (PropertyInfo p in properties) + { + XmlAttributes attribs = new XmlAttributes { XmlIgnore = false }; + overrides.Add(this.GetType(), p.Name, attribs); + } + } + try + { + using (StreamWriter sw = new StreamWriter(File.Create(filename))) + { + XmlSerializer s = new XmlSerializer(this.GetType(), overrides); + s.Serialize(sw, this); + } + } + catch (Exception ex) + { + throw new InvalidOperationException("[" + this.GetType().Name + "]: Cannot save settings to " + filename + ", " + ex.Message); + } + } + } + + [Export(typeof(IPlaneFeedPlugin))] + [ExportMetadata("Name", "PlaneFeedPlugin")] + public class RB24Plugin : IPlaneFeedPlugin + { + private RB24Settings Settings = new RB24Settings(); + + public string Name + { + get + { + return "[WebFeed] www.radarbox24.com"; + } + } + + public string Info + { + get + { + return "Web feed from www.radarbox24.com\n" + + "See https:///www.radarbox24.com\n\n" + + "(c)AirScout(www.airscout.eu)\n\n" + + "CAUTION: Radarbox24 does not provide HEX - values, the feed is getting the values only from internal database using plane registry values"; + } + } + + public string Version + { + get + { + return Assembly.GetExecutingAssembly().GetName().Version.ToString(); + } + } + + public bool HasSettings + { + get + { + return true; + } + } + + public bool CanImport + { + get + { + return false; + } + } + + public bool CanExport + { + get + { + return false; + } + } + + public string Disclaimer + { + get + { + return "This plane feed might fetch data from an Internet server via Deep Link\n" + + "technology(see http://en.wikipedia.org/wiki/Deep_link)\n." + + "The use is probably not intended by the website owners and could be changed in URL and data format frequently and without further notice.\n" + + "Furthermore, it might cause legal issues in some countries.\n" + + "By clicking on \"Accept\" you understand that you are\n\n" + + "DOING THAT ON YOUR OWN RISK\n\n" + + "The auhor of this software will not be responsible in any case."; + } + } + + public string DisclaimerAccepted + { + get + { + return Settings.DisclaimerAccepted; + } + set + { + Settings.DisclaimerAccepted = value; + } + } + + public void ResetSettings() + { + Settings.Default(); + } + + public void LoadSettings() + { + Settings.Load(true); + } + + public void SaveSettings() + { + Settings.Save(true); + } + + public object GetSettings() + { + return this.Settings; + } + + public void ImportSettings() + { + // nothing to do + } + + public void ExportSettings() + { + // nothing to do + } + + public void Start(PlaneFeedPluginArgs args) + { + // nothing to do + } + + public PlaneFeedPluginPlaneInfoList GetPlanes(PlaneFeedPluginArgs args) + { + // intialize variables + VarConverter VC = new VarConverter(); + VC.AddVar("APPDIR", args.AppDirectory); + VC.AddVar("DATADIR", args.AppDataDirectory); + VC.AddVar("LOGDIR", args.LogDirectory); + VC.AddVar("DATABASEDIR", args.DatabaseDirectory); + VC.AddVar("MINLAT", args.MinLat); + VC.AddVar("MAXLAT", args.MaxLat); + VC.AddVar("MINLON", args.MinLon); + VC.AddVar("MAXLON", args.MaxLon); + VC.AddVar("MINALTM", args.MinAlt); + VC.AddVar("MAXALTM", args.MaxAlt); + VC.AddVar("MINALTFT", (int)UnitConverter.m_ft((double)args.MinAlt)); + VC.AddVar("MAXALTFT", (int)UnitConverter.m_ft((double)args.MaxAlt)); + VC.AddVar("TIMESTAMP", (long)DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1)).TotalSeconds * 1000 - 30000); + // initialize plane info list + PlaneFeedPluginPlaneInfoList planes = new PlaneFeedPluginPlaneInfoList(); + string json = ""; + // calculate url and get json + string url = VC.ReplaceAllVars(Settings.URL); + Console.WriteLine("[" + this.GetType().Name + "]: Creating web request: " + url); + HttpWebRequest webrequest = (HttpWebRequest)HttpWebRequest.Create(url); + webrequest.Headers.Add("method: GET"); + webrequest.Headers.Add("authority: data.rb24.com"); + webrequest.Headers.Add("scheme: https"); + webrequest.Headers.Add("pragma: no-cache"); + webrequest.Headers.Add("cache-control: no-cache"); + webrequest.Headers.Add("sec-ch-ua: \"Google Chrome\";v=\"105\", \"Not)A; Brand\";v=\"8\", \"Chromium\";v=\"105\""); + webrequest.Accept = "application/json, text/plain, */*"; + webrequest.Headers.Add("dnt: 1"); + webrequest.Headers.Add("sec-ch-ua-mobile: ?0"); + webrequest.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36"; + webrequest.Headers.Add("sec-ch-ua-platform: \"Windows\""); + webrequest.Headers.Add("origin: https://www.radarbox.com"); + webrequest.Headers.Add("sec-fetch-site: cross-site"); + webrequest.Headers.Add("sec-fetch-mode: cors"); + webrequest.Headers.Add("sec-fetch-dest: empty"); + webrequest.Referer = "https://www.radarbox24.com/"; + // webrequest.Headers.Add("accept-encoding: gzip, deflate, br"); + webrequest.Headers.Add("accept-language: de-DE,de;q=0.9,en-US;q=0.8,en;q=0.7"); + Console.WriteLine("[" + this.GetType().Name + "]: Getting web response"); + HttpWebResponse webresponse = (HttpWebResponse)webrequest.GetResponse(); + Console.WriteLine("[" + this.GetType().Name + "]: Reading stream"); + // Thread.Sleep(1000); + using (StreamReader sr = new StreamReader(webresponse.GetResponseStream())) + { + json = sr.ReadToEnd(); + Console.WriteLine(json); + } + // save raw data to file if enabled + if (Settings.SaveToFile) + { + using (StreamWriter sw = new StreamWriter(args.TmpDirectory + Path.DirectorySeparatorChar + this.GetType().Name + "_" + DateTime.UtcNow.ToString("yyyy-MM-dd HH_mm_ss") + ".json")) + { + sw.WriteLine(json); + } + } + Console.WriteLine("[" + this.GetType().Name + "]: Analyzing data"); + JavaScriptSerializer js = new JavaScriptSerializer(); + dynamic root = js.Deserialize(json); + try + { + // analyze json string for planes data + // get the planes position list + var aclist = root[0]; + foreach (var ac in aclist) + { + try + { + // different handling of reading JSON between Windows (Array) & Linux (ArrayList) + // access to data values itself is the same + int len = 0; + if (ac.Value.GetType() == typeof(ArrayList)) + { + len = ac.Value.Count; + } + else if (ac.Value.GetType() == typeof(Object[])) + { + len = ac.Value.Length; + } + // skip if too few fields in record + if (len < 14) + continue; + PlaneFeedPluginPlaneInfo plane = new PlaneFeedPluginPlaneInfo(); + // get hex first + // Radarbox24 does not provide a HEX info + // leave it empty and let it fill by Reg in planefeed main thread + plane.Hex = ""; + // get position + plane.Lat = ReadPropertyDouble(ac, 1); + plane.Lon = ReadPropertyDouble(ac, 2); + // get altitude + plane.Alt = ReadPropertyDouble(ac, 4); + // get callsign + plane.Call = ReadPropertyString(ac, 0); + // get registration + plane.Reg = ReadPropertyString(ac, 9); + // get track + plane.Track = ReadPropertyDouble(ac, 7); + // get speed + plane.Speed = ReadPropertyDouble(ac, 6); + // get position timestamp in msec + long l = ReadPropertyLong(ac, 3); + if (l != long.MinValue) + { + DateTime timestamp = new System.DateTime(1970, 1, 1, 0, 0, 0, 0); + timestamp = timestamp.AddMilliseconds(l); + plane.Time = timestamp; + } + else + { + // skip plane if no valid timestamp found + continue; + } + + // skip plane if no reg + if (String.IsNullOrEmpty(plane.Reg) || (plane.Reg == "BLOCKED") || (plane.Reg == "VARIOUS")) + continue; + + // get type info + plane.Type = ReadPropertyString(ac, 5); + planes.Add(plane); + } + catch (Exception ex) + { + Console.WriteLine("[" + System.Reflection.MethodBase.GetCurrentMethod().Name + "]" + ex.Message); + } + } + } + catch (Exception ex) + { + // do nothing if property is not found + } + Console.WriteLine("[" + this.GetType().Name + "]: Returning " + planes.Count + " planes"); + return planes; + } + + public void Stop(PlaneFeedPluginArgs args) + { + Settings.Save(true); + } + + // ************************************* End of interface **************************************************** + + + // ************************************* Helpers **************************************************** + + [System.Diagnostics.DebuggerNonUserCode] + private string ReadPropertyString(dynamic o, int propertyindex) + { + string s = null; + try + { + s = o.Value[propertyindex]; + } + catch + { + // do nothing if something went wrong + } + return s; + } + + [System.Diagnostics.DebuggerNonUserCode] + private int ReadPropertyInt(dynamic o, int propertyindex) + { + int i = int.MinValue; + double d = ReadPropertyDouble(o, propertyindex); + if ((d != double.MinValue) && (d >= int.MinValue) && (d <= int.MaxValue)) + i = (int)d; + return i; + } + + [System.Diagnostics.DebuggerNonUserCode] + private double ReadPropertyDouble(dynamic o, int propertyindex) + { + double d = double.MinValue; + try + { + string s = o.Value[propertyindex].ToString(CultureInfo.InvariantCulture); + d = double.Parse(s, CultureInfo.InvariantCulture); + } + catch + { + // do nothing if something went wrong + } + return d; + } + + [System.Diagnostics.DebuggerNonUserCode] + private long ReadPropertyLong(dynamic o, int propertyindex) + { + long l = long.MinValue; + try + { + l = long.Parse(o.Value[propertyindex].ToString()); + } + catch + { + // do nothing if something went wrong + } + return l; + } + + [System.Diagnostics.DebuggerNonUserCode] + private bool ReadPropertyBool(dynamic o, int propertyindex) + { + bool b = false; + try + { + string s = o.Value[propertyindex].ToString(); + b = s.ToLower() == "true"; + } + catch + { + // do nothing if something went wrong + } + return b; + } + + } + + + /// + /// //////////////////////////////////////////// Helpers //////////////////////////////////////////// + /// + + public static class UnitConverter + { + public static double ft_m(double feet) + { + return feet / 3.28084; + } + + public static double m_ft(double m) + { + return m * 3.28084; + } + + public static double kts_kmh(double kts) + { + return kts * 1.852; + } + + public static double kmh_kts(double kmh) + { + return kmh / 1.852; + } + + public static double km_mi(double km) + { + return km * 1.609; + } + + public static double mi_km(double mi) + { + return mi / 1.609; + } + } + + public class VarConverter : Dictionary + { + public readonly char VarSeparator = '%'; + + public void AddVar(string var, object value) + { + // adds a new var<>value pair to dictionary + object o; + if (this.TryGetValue(var, out o)) + { + // item found --> update value + o = value; + } + else + { + // item not found --> add new + this.Add(var, value); + } + } + + public object GetValue(string var) + { + // finds a var in dictionary and returns its value + object o; + if (this.TryGetValue(var, out o)) + { + // item found --> return value + return o; + } + // item not found --> return null + return null; + } + + public string ReplaceAllVars(string s) + { + // check for var separotors first + if (s.Contains(VarSeparator)) + { + // OK, string is containing vars --> crack the string first and replace vars + try + { + string[] a = s.Split(VarSeparator); + // as we are always using a pair of separators the length of a[] must be odd + if (a.Length % 2 == 0) + throw new ArgumentException("Number of separators is not an even number."); + // create new string and replace all vars (on odd indices) + s = ""; + for (int i = 0; i < a.Length; i++) + { + if (i % 2 == 0) + { + // cannot be not a var on that position + s = s + a[i]; + } + else + { + // var identifier: upper the string and try to convert + a[i] = a[i].ToUpper(); + object o; + if (this.TryGetValue(a[i], out o)) + { + // convert floating points with invariant culture info + if (o.GetType() == typeof(double)) + s = s + ((double)o).ToString(CultureInfo.InvariantCulture); + else if (o.GetType() == typeof(float)) + s = s + ((float)o).ToString(CultureInfo.InvariantCulture); + else + s = s + o.ToString(); + } + else + { + throw new ArgumentException("Var identifier not found: " + a[i]); + } + } + } + } + catch (Exception ex) + { + // throw an excecption + throw new ArgumentException("Error while parsing string for variables [" + ex.Message + "]: " + s); + } + } + return s; + } + + } + +} diff --git a/AirScout.PlaneFeeds.Plugin.RB24/app.config b/AirScout.PlaneFeeds.Plugin.RB24/app.config new file mode 100644 index 0000000..e221689 --- /dev/null +++ b/AirScout.PlaneFeeds.Plugin.RB24/app.config @@ -0,0 +1,105 @@ + + + + +
+
+ + + + + + Generic template for ceration of new plane feed projects + + + + [WebFeed] Template + + + This plane feed is being fetched from an Internet server via Deep Link +technology (see http://en.wikipedia.org/wiki/Deep_link). + +The use is not intended by the website owners and could be changed in URL and data format frequently and without further notice. +Furthermore, it might cause legal issues in some countries. + +By clicking on "Accept" you understand that you are + + DOING THAT ON YOUR OWN RISK + +The auhor of this software will not be responsible in any case. + + + + + + + + + False + + + + + + True + + + False + + + False + + + + + Web feed from www.planefinder.net +See https://planefinder.net/ + +(c) AirScout (www.airscout.eu) + +This feed does not require a login or API key. + + + + [WebFeed] www.planefinder.net + + + This plane feed is being fetched from an Internet server via Deep Link +technology (see http://en.wikipedia.org/wiki/Deep_link). + +The use is not intended by the website owners and could be changed in URL and data format frequently and without further notice. +Furthermore, it might cause legal issues in some countries. + +By clicking on "Accept" you understand that you are + + DOING THAT ON YOUR OWN RISK + +The auhor of this software will not be responsible in any case. + + + + + + http://droidapp.pinkfroot.com/APPAPIDROID/v7/planeUpdateFAA.php?routetype=IATA&amp;FAA=1&amp;bounds=%MAXLAT%,%MINLAT%,%MINLON%,%MAXLON% + + + False + + + + + + True + + + False + + + False + + + 30 + + + + \ No newline at end of file diff --git a/AirScout.PlaneFeeds.Plugin.RB24/packages.config b/AirScout.PlaneFeeds.Plugin.RB24/packages.config new file mode 100644 index 0000000..caa3fff --- /dev/null +++ b/AirScout.PlaneFeeds.Plugin.RB24/packages.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/AirScout.PlaneFeeds.Plugin.RTL1090/Properties/AssemblyInfo.cs b/AirScout.PlaneFeeds.Plugin.RTL1090/Properties/AssemblyInfo.cs index caddfb0..63facdf 100644 --- a/AirScout.PlaneFeeds.Plugin.RTL1090/Properties/AssemblyInfo.cs +++ b/AirScout.PlaneFeeds.Plugin.RTL1090/Properties/AssemblyInfo.cs @@ -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.4.1.0")] -[assembly: AssemblyFileVersion("1.4.1.0")] +[assembly: AssemblyVersion("1.4.3.0")] +[assembly: AssemblyFileVersion("1.4.3.0")] diff --git a/AirScout.PlaneFeeds.Plugin.RTL1090/RTL1090.cs b/AirScout.PlaneFeeds.Plugin.RTL1090/RTL1090.cs index cb8527b..ee6c401 100644 --- a/AirScout.PlaneFeeds.Plugin.RTL1090/RTL1090.cs +++ b/AirScout.PlaneFeeds.Plugin.RTL1090/RTL1090.cs @@ -38,6 +38,11 @@ namespace AirScout.PlaneFeeds.Plugin.RTL1090 [DefaultValue(true)] public virtual bool Binary { get; set; } + [Browsable(true)] + [DescriptionAttribute("Use geometric altitudes only (instead of both barometric/geometric) to enhance tracking accuracy.")] + [DefaultValue(false)] + public virtual bool UseGeometricAltOnly { get; set; } + [Browsable(true)] [DescriptionAttribute("Report ADS-B messages to console output.")] [DefaultValue(true)] @@ -351,7 +356,18 @@ namespace AirScout.PlaneFeeds.Plugin.RTL1090 plane.Call = (Settings.MarkLocal) ? "@" + info.Call : info.Call; plane.Lat = info.Lat; plane.Lon = info.Lon; - plane.Alt = info.Alt; + // use geometric altitude, if enabled and available + if (Settings.UseGeometricAltOnly) + { + if (info.GeoMinusBaro != int.MinValue) + plane.Alt = info.BaroAlt + info.GeoMinusBaro; + else + plane.Alt = int.MinValue; + } + else + { + plane.Alt = info.BaroAlt + info.GeoMinusBaro; + } plane.Speed = info.Speed; plane.Track = info.Heading; plane.Reg = "[unknown]"; @@ -359,7 +375,12 @@ namespace AirScout.PlaneFeeds.Plugin.RTL1090 plane.Manufacturer = "[unknown]"; plane.Model = "[unknown]"; plane.Category = 0; - planes.Add(plane); + + // add only valid positions + if (plane.Alt > 0) + { + planes.Add(plane); + } } // save raw data to file if enabled if (Settings.SaveToFile) @@ -435,8 +456,8 @@ namespace AirScout.PlaneFeeds.Plugin.RTL1090 { info = "[" + this.GetType().Name + "]: " + msg.RawMessage + "-- > "; Console.Write(info); - line = info; - info = Decoder.DecodeMessage(msg.RawMessage, msg.TimeStamp); + line = info; + info = Decoder.DecodeMessage(msg.RawMessage, msg.TimeStamp, Settings.UseGeometricAltOnly); line = line + info + "\n"; } catch (Exception ex) diff --git a/AirScout.PlaneFeeds.Plugin.RadarVirtuel/AirScout.PlaneFeeds.Plugin.RadarVirtuel.csproj b/AirScout.PlaneFeeds.Plugin.RadarVirtuel/AirScout.PlaneFeeds.Plugin.RadarVirtuel.csproj new file mode 100644 index 0000000..630090c --- /dev/null +++ b/AirScout.PlaneFeeds.Plugin.RadarVirtuel/AirScout.PlaneFeeds.Plugin.RadarVirtuel.csproj @@ -0,0 +1,91 @@ + + + + + + Debug + AnyCPU + {1F2A3BE9-9349-4478-BA6E-0BC842615B3B} + Library + Properties + AirScout.PlaneFeeds.Plugin.RadarVirtuel + AirScout.PlaneFeeds.Plugin.RadarVirtuel + v4.0 + 512 + true + + + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + ..\packages\Newtonsoft.Json.13.0.1\lib\net40\Newtonsoft.Json.dll + + + + + + + + + + + + + + + + True + True + Settings.settings + + + + + {41b66be4-6086-4ae3-be31-c81ee6b10154} + AirScout.Core + + + {36945dbd-96c8-41e7-9168-f83c42e67af3} + AirScout.PlaneFeeds.Plugin + False + + + + + + + SettingsSingleFileGenerator + Settings.Designer.cs + + + + + + Dieses Projekt verweist auf mindestens ein NuGet-Paket, das auf diesem Computer fehlt. Verwenden Sie die Wiederherstellung von NuGet-Paketen, um die fehlenden Dateien herunterzuladen. Weitere Informationen finden Sie unter "http://go.microsoft.com/fwlink/?LinkID=322105". Die fehlende Datei ist "{0}". + + + + + + + mkdir $(SolutionDir)\Airscout\$(OutDir)\Plugin\ +copy $(ProjectDir)\$(OutDir)\ILMerge\*$(TargetExt) $(SolutionDir)\Airscout\$(OutDir)\Plugin\ /y + + \ No newline at end of file diff --git a/AirScout.PlaneFeeds.Plugin.RadarVirtuel/Properties/AssemblyInfo.cs b/AirScout.PlaneFeeds.Plugin.RadarVirtuel/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..99291d0 --- /dev/null +++ b/AirScout.PlaneFeeds.Plugin.RadarVirtuel/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// Allgemeine Informationen über eine Assembly werden über die folgenden +// Attribute gesteuert. Ändern Sie diese Attributwerte, um die Informationen zu ändern, +// die einer Assembly zugeordnet sind. +[assembly: AssemblyTitle("AirScout.PlaneFeeds.Plugin.RadarVirtuel")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("AirScout.PlaneFeeds.Plugin.RadarVirtuel")] +[assembly: AssemblyCopyright("Copyright © 2022 DL2ALF")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Durch Festlegen von ComVisible auf FALSE werden die Typen in dieser Assembly +// für COM-Komponenten unsichtbar. Wenn Sie auf einen Typ in dieser Assembly von +// COM aus zugreifen müssen, sollten Sie das ComVisible-Attribut für diesen Typ auf "True" festlegen. +[assembly: ComVisible(false)] + +// Die folgende GUID bestimmt die ID der Typbibliothek, wenn dieses Projekt für COM verfügbar gemacht wird +[assembly: Guid("db85e98a-e209-49d0-b6cf-6cdd5b8e20e3")] + +// Versionsinformationen für eine Assembly bestehen aus den folgenden vier Werten: +// +// Hauptversion +// Nebenversion +// Buildnummer +// Revision +// +// 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.4.0.0")] +[assembly: AssemblyFileVersion("1.4.0.0")] diff --git a/AirScout.PlaneFeeds.Plugin.RadarVirtuel/Properties/Settings.Designer.cs b/AirScout.PlaneFeeds.Plugin.RadarVirtuel/Properties/Settings.Designer.cs new file mode 100644 index 0000000..d3f0fc2 --- /dev/null +++ b/AirScout.PlaneFeeds.Plugin.RadarVirtuel/Properties/Settings.Designer.cs @@ -0,0 +1,26 @@ +//------------------------------------------------------------------------------ +// +// Dieser Code wurde von einem Tool generiert. +// Laufzeitversion:4.0.30319.42000 +// +// Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn +// der Code erneut generiert wird. +// +//------------------------------------------------------------------------------ + +namespace AirScout.PlaneFeeds.Plugin.RadarVirtuel.Properties { + + + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.0.3.0")] + internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { + + private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); + + public static Settings Default { + get { + return defaultInstance; + } + } + } +} diff --git a/AirScout.PlaneFeeds.Plugin.RadarVirtuel/Properties/Settings.settings b/AirScout.PlaneFeeds.Plugin.RadarVirtuel/Properties/Settings.settings new file mode 100644 index 0000000..8e615f2 --- /dev/null +++ b/AirScout.PlaneFeeds.Plugin.RadarVirtuel/Properties/Settings.settings @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/AirScout.PlaneFeeds.Plugin.RadarVirtuel/RadarVirtuel.cs b/AirScout.PlaneFeeds.Plugin.RadarVirtuel/RadarVirtuel.cs new file mode 100644 index 0000000..0508cc0 --- /dev/null +++ b/AirScout.PlaneFeeds.Plugin.RadarVirtuel/RadarVirtuel.cs @@ -0,0 +1,659 @@ + using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Reflection; +using System.ComponentModel.Composition; +using System.ComponentModel; +using System.Globalization; +using AirScout.PlaneFeeds.Plugin.MEFContract; +using System.Diagnostics; +using System.Net; +using System.IO; +using System.Web.Script.Serialization; +using System.Collections; +using System.Xml.Serialization; +using System.Xml.Linq; +using Newtonsoft.Json; +using AirScout.Core; + +namespace AirScout.PlaneFeeds.Plugin.RadarVirtuel +{ + + public class RadarVirtuelSettings + { + [Browsable(false)] + [DefaultValue("")] + [XmlIgnore] + public string DisclaimerAccepted { get; set; } + + [Browsable(true)] + [CategoryAttribute("Web Feed")] + [DescriptionAttribute("Save downloaded JSON to file")] + [DefaultValue(false)] + [XmlIgnore] + public bool SaveToFile { get; set; } + + [Browsable(true)] + [CategoryAttribute("Web Feed")] + [DescriptionAttribute("Base URL for website.")] + [DefaultValue("https://mg22.adsbnetwork.com/zsrv/xenvolsrv.php?userid=betatesteur&serviceid=allicao")] + public string URL { get; set; } + + [Browsable(true)] + [CategoryAttribute("Web Feed")] + [DescriptionAttribute("Timeout for loading the site.")] + [DefaultValue(30)] + [XmlIgnore] + public int Timeout { get; set; } + + + public RadarVirtuelSettings() + { + Default(); + Load(true); + } + + /// + /// Sets all properties to their default value according to the [DefaultValue=] attribute + /// + public void Default() + { + // set all properties to their default values according to definition in [DeafultValue=] + foreach (var p in this.GetType().GetProperties()) + { + try + { + // initialize all properties with default value if set + if (Attribute.IsDefined(p, typeof(DefaultValueAttribute))) + { + p.SetValue(this, ((DefaultValueAttribute)Attribute.GetCustomAttribute( + p, typeof(DefaultValueAttribute)))?.Value, null); + } + } + catch (Exception ex) + { + Console.WriteLine("[" + this.GetType().Name + "]: Cannot set default value of: " + p.Name + ", " + ex.Message); + } + } + } + + /// + /// Loads settings from a XML-formatted configuration file into settings. + /// + /// If true, ignore the [XmlIgnore] attribute, e.g. load all settings available in the file.
If false, load only settings without [XmlIgore] attrbute.
+ /// The filename of the settings file. + public void Load(bool loadall, string filename = "") + { + // use standard filename if empty + // be careful because Linux file system is case sensitive + if (String.IsNullOrEmpty(filename)) + filename = new Uri(Assembly.GetExecutingAssembly().GetName().CodeBase.Replace(".dll", ".cfg").Replace(".DLL", ".CFG")).LocalPath; + // do nothing if file not exists + if (!File.Exists(filename)) + return; + try + { + string xml = ""; + using (StreamReader sr = new StreamReader(File.OpenRead(filename))) + { + xml = sr.ReadToEnd(); + } + XDocument xdoc = XDocument.Parse(xml); + PropertyInfo[] properties = this.GetType().GetProperties(); + foreach (PropertyInfo p in properties) + { + if (!loadall) + { + // check on XmlIgnore attribute, skip if set + object[] attr = p.GetCustomAttributes(typeof(XmlIgnoreAttribute), false); + if (attr.Length > 0) + continue; + } + try + { + // get matching element + XElement typenode = xdoc.Element(this.GetType().Name); + if (typenode != null) + { + XElement element = typenode.Element(p.Name); + if (element != null) + p.SetValue(this, Convert.ChangeType(element.Value, p.PropertyType), null); + } + } + catch (Exception ex) + { + Console.WriteLine("[" + this.GetType().Name + "]: Error while loading property[" + p.Name + " from " + filename + ", " + ex.Message); + } + } + + } + catch (Exception ex) + { + Console.WriteLine("[" + this.GetType().Name + "]: Cannot load settings from " + filename + ", " + ex.Message); + } + } + + /// + /// Saves settings from settings into a XML-formatted configuration file + /// + /// If true, ignore the [XmlIgnore] attribute, e.g. save all settings.
If false, save only settings without [XmlIgore] attrbute. + /// The filename of the settings file. + public void Save(bool saveall, string filename = "") + { + // use standard filename if empty + // be careful because Linux file system is case sensitive + if (String.IsNullOrEmpty(filename)) + filename = new Uri(Assembly.GetExecutingAssembly().GetName().CodeBase.Replace(".dll", ".cfg").Replace(".DLL", ".CFG")).LocalPath; + XmlAttributeOverrides overrides = new XmlAttributeOverrides(); + if (saveall) + { + // ovverride the XmlIgnore attributes to get all serialized + PropertyInfo[] properties = this.GetType().GetProperties(); + foreach (PropertyInfo p in properties) + { + XmlAttributes attribs = new XmlAttributes { XmlIgnore = false }; + overrides.Add(this.GetType(), p.Name, attribs); + } + } + try + { + using (StreamWriter sw = new StreamWriter(File.Create(filename))) + { + 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); + } + } + + } + + [Export(typeof(IPlaneFeedPlugin))] + [ExportMetadata("Name", "PlaneFeedPlugin")] + public class RadarVirtuelPlugin : IPlaneFeedPlugin + { + private RadarVirtuelSettings Settings = new RadarVirtuelSettings(); + + public string Name + { + get + { + return "[WebFeed] RadarVirtuel "; + } + } + + public string Info + { + get + { + return "Web feed from www.radarvirtuel.com\n" + + "See https://www.radarvirtuel.com\n\n" + + "(c)AirScout(www.airscout.eu)\n\n"; + } + } + + public string Version + { + get + { + return Assembly.GetExecutingAssembly().GetName().Version.ToString(); + } + } + + public bool HasSettings + { + get + { + return true; + } + } + + public bool CanImport + { + get + { + return false; + } + } + + public bool CanExport + { + get + { + return false; + } + } + + public string Disclaimer + { + get + { + return "This plane feed might fetch data from an Internet server via Deep Link\n" + + "technology(see http://en.wikipedia.org/wiki/Deep_link)\n." + + "The use is probably not intended by the website owners and could be changed in URL and data format frequently and without further notice.\n" + + "Furthermore, it might cause legal issues in some countries.\n" + + "By clicking on \"Accept\" you understand that you are\n\n" + + "DOING THAT ON YOUR OWN RISK\n\n" + + "The auhor of this software will not be responsible in any case."; + } + } + + public string DisclaimerAccepted + { + get + { + return Settings.DisclaimerAccepted; + } + set + { + Settings.DisclaimerAccepted = value; + } + } + + public void ResetSettings() + { + Settings.Default(); + } + + public void LoadSettings() + { + Settings.Load(true); + } + + public void SaveSettings() + { + Settings.Save(true); + } + + public object GetSettings() + { + return this.Settings; + } + + public void ImportSettings() + { + // nothing to do + } + + public void ExportSettings() + { + // nothing to do + } + + public void Start(PlaneFeedPluginArgs args) + { + // nothing to do + } + + private DateTime UNIXTimeToDateTime(int ut) + { + if (ut == int.MinValue) + return DateTime.MinValue; + else if (ut == int.MaxValue) + return DateTime.MaxValue; + DateTime dt = new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc); + return dt.AddSeconds(ut); + } + + + public PlaneFeedPluginPlaneInfoList GetPlanes(PlaneFeedPluginArgs args) + { + // intialize variables + VarConverter VC = new VarConverter(); + VC.AddVar("APPDIR", args.AppDirectory); + VC.AddVar("DATADIR", args.AppDataDirectory); + VC.AddVar("LOGDIR", args.LogDirectory); + VC.AddVar("DATABASEDIR", args.DatabaseDirectory); + VC.AddVar("MINLAT", args.MinLat); + VC.AddVar("MAXLAT", args.MaxLat); + VC.AddVar("MINLON", args.MinLon); + VC.AddVar("MAXLON", args.MaxLon); + VC.AddVar("MINALTM", args.MinAlt); + VC.AddVar("MAXALTM", args.MaxAlt); + VC.AddVar("MINALTFT", (int)UnitConverter.m_ft((double)args.MinAlt)); + VC.AddVar("MAXALTFT", (int)UnitConverter.m_ft((double)args.MaxAlt)); + // initialize plane info list + PlaneFeedPluginPlaneInfoList planes = new PlaneFeedPluginPlaneInfoList(); + string json = ""; + // calculate url and get json + String url = VC.ReplaceAllVars(Settings.URL); + Console.WriteLine("[" + this.GetType().Name + "]: Creating web request: " + url); + HttpWebRequest webrequest = (HttpWebRequest)HttpWebRequest.Create(url); + webrequest.Timeout = Settings.Timeout * 1000; + webrequest.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:73.0) Gecko/20100101 Firefox/73.0"; + Console.WriteLine("[" + this.GetType().Name + "]: Getting web response"); + HttpWebResponse webresponse = (HttpWebResponse)webrequest.GetResponse(); + Console.WriteLine("[" + this.GetType().Name + "]: Reading stream"); + using (StreamReader sr = new StreamReader(webresponse.GetResponseStream())) + { + json = sr.ReadToEnd(); + } + // save raw data to file if enabled + if (Settings.SaveToFile) + { + using (StreamWriter sw = new StreamWriter(args.TmpDirectory + Path.DirectorySeparatorChar + this.GetType().Name + "_" + DateTime.UtcNow.ToString("yyyy-MM-dd HH_mm_ss") + ".json")) + { + sw.WriteLine(json); + } + } + Console.WriteLine("[" + this.GetType().Name + "]: Analyzing data"); + try + { + Console.WriteLine("[" + this.GetType().Name + "]: Deserializing data from JSON"); + + // JavaScriptSerializer js = new JavaScriptSerializer(); + // dynamic root = js.Deserialize(json); + // get the planes position list + PlaneRV[] aclist = JsonConvert.DeserializeObject (json); + Console.WriteLine("[" + this.GetType().Name + "]: Created object from JSON is " + aclist.GetType().ToString()); + // analyze json string for planes data + foreach (PlaneRV ac in aclist) + { + try + { + PlaneFeedPluginPlaneInfo plane = new PlaneFeedPluginPlaneInfo(); + plane.Hex = !String.IsNullOrEmpty(ac.icao)? ac.icao : ""; + plane.Call = !String.IsNullOrEmpty(ac.cs) ? ac.cs : ""; + plane.Lat = ac.loc.lat; + plane.Lon = ac.loc.lng; + plane.Alt = ac.alt; + plane.Track = ac.trk; + plane.Speed = ac.spd; + plane.Type = ""; + plane.Category = 0; + plane.Manufacturer = ""; + plane.Model = ""; + plane.Time = UNIXTimeToDateTime(ac.tm); + if (ac.alt > 0) + planes.Add(plane); + } + catch (Exception ex) + { + Console.WriteLine("[" + this.GetType().Name + "]: " + ex.Message); + } + } + } + catch (Exception ex) + { + string filename = args.TmpDirectory + Path.DirectorySeparatorChar + this.GetType().Name + "_" + DateTime.UtcNow.ToString("yyyy-MM-dd HH_mm_ss") + ".json"; + Console.WriteLine("[" + this.GetType().Name + "]: " + ex.Message + "\n\nJSON response saved as: " + filename); + // save the JSON file + try + { + using (StreamWriter sw = new StreamWriter(filename)) + { + sw.WriteLine(json); + } + } + catch + { + // do nothing if saving fails + } + // forward exception to parent thread + throw new Exception(ex.Message, ex.InnerException); + } + Console.WriteLine("[" + this.GetType().Name + "]: Returning " + planes.Count + " planes"); + return planes; + } + + public void Stop(PlaneFeedPluginArgs args) + { + Settings.Save(true); + } + + // end of Interface + + + [System.Diagnostics.DebuggerNonUserCode] + private string ReadPropertyString(dynamic o, int propertyindex) + { + string s = null; + try + { + s = o.Value[propertyindex]; + } + catch + { + // do nothing if something went wrong + } + return s; + } + + [System.Diagnostics.DebuggerNonUserCode] + private int ReadPropertyInt(dynamic o, int propertyindex) + { + int i = int.MinValue; + double d = ReadPropertyDouble(o, propertyindex); + if ((d != double.MinValue) && (d >= int.MinValue) && (d <= int.MaxValue)) + i = (int)d; + return i; + } + + [System.Diagnostics.DebuggerNonUserCode] + private double ReadPropertyDouble(dynamic o, int propertyindex) + { + double d = double.MinValue; + try + { + string s = o.Value[propertyindex].ToString(CultureInfo.InvariantCulture); + d = double.Parse(s, CultureInfo.InvariantCulture); + } + catch + { + // do nothing if something went wrong + } + return d; + } + + [System.Diagnostics.DebuggerNonUserCode] + private long ReadPropertyLong(dynamic o, int propertyindex) + { + long l = long.MinValue; + try + { + l = long.Parse(o.Value[propertyindex].ToString()); + } + catch + { + // do nothing if something went wrong + } + return l; + } + + [System.Diagnostics.DebuggerNonUserCode] + private bool ReadPropertyBool(dynamic o, int propertyindex) + { + bool b = false; + try + { + string s = o.Value[propertyindex].ToString(); + b = s.ToLower() == "true"; + } + catch + { + // do nothing if something went wrong + } + return b; + } + + } + + + /// + /// //////////////////////////////////////////// Helpers //////////////////////////////////////////// + /// + + public static class UnitConverter + { + public static double ft_m(double feet) + { + return feet / 3.28084; + } + + public static double m_ft(double m) + { + return m * 3.28084; + } + + public static double kts_kmh(double kts) + { + return kts * 1.852; + } + + public static double kmh_kts(double kmh) + { + return kmh / 1.852; + } + + public static double km_mi(double km) + { + return km * 1.609; + } + + public static double mi_km(double mi) + { + return mi / 1.609; + } + } + + public class VarConverter : Dictionary + { + public readonly char VarSeparator = '%'; + + public void AddVar(string var, object value) + { + // adds a new var<>value pair to dictionary + object o; + if (this.TryGetValue(var, out o)) + { + // item found --> update value + o = value; + } + else + { + // item not found --> add new + this.Add(var, value); + } + } + + public object GetValue(string var) + { + // finds a var in dictionary and returns its value + object o; + if (this.TryGetValue(var, out o)) + { + // item found --> return value + return o; + } + // item not found --> return null + return null; + } + + public string ReplaceAllVars(string s) + { + // check for var separotors first + if (s.Contains(VarSeparator)) + { + // OK, string is containing vars --> crack the string first and replace vars + try + { + string[] a = s.Split(VarSeparator); + // as we are always using a pair of separators the length of a[] must be odd + if (a.Length % 2 == 0) + throw new ArgumentException("Number of separators is not an even number."); + // create new string and replace all vars (on odd indices) + s = ""; + for (int i = 0; i < a.Length; i++) + { + if (i % 2 == 0) + { + // cannot be not a var on that position + s = s + a[i]; + } + else + { + // var identifier: upper the string and try to convert + a[i] = a[i].ToUpper(); + object o; + if (this.TryGetValue(a[i], out o)) + { + // convert floating points with invariant culture info + if (o.GetType() == typeof(double)) + s = s + ((double)o).ToString(CultureInfo.InvariantCulture); + else if (o.GetType() == typeof(float)) + s = s + ((float)o).ToString(CultureInfo.InvariantCulture); + else + s = s + o.ToString(); + } + else + { + throw new ArgumentException("Var identifier not found: " + a[i]); + } + } + } + } + catch (Exception ex) + { + // throw an excecption + throw new ArgumentException("Error while parsing string for variables [" + ex.Message + "]: " + s); + } + } + return s; + } + + } + + // holds the complete location + public class LocRV + { + public double lng { get; set; } = 0; + public double lat { get; set; } = 0; + } + + // holds the complete aircraft info + public class PlaneRV + { + public string icao { get; set; } = ""; + public string affp { get; set; } = ""; + public double alt { get; set; } = 0; + public double falt { get; set; } = 0; + public LocRV floc { get; set; } = new LocRV(); + public double fspd { get; set; } = 0; + public string fst { get; set; } = ""; + public string fswk { get; set; } = ""; + public string fvrt { get; set; } = ""; + public string icon { get; set; } = ""; + public string itc { get; set; } = ""; + public LocRV loc { get; set; } = new LocRV(); + public string mod { get; set; } = ""; + public int nbm { get; set; } = 0; + public int nbpos { get; set; } = 0; + public string reg { get; set; } = ""; + public double spd { get; set; } = 0; + public string spe { get; set; } = ""; + public string st { get; set; } = ""; + public string swk { get; set; } = ""; + public string tav { get; set; } = ""; + public int tm { get; set; } = 0; + public string tmot { get; set; } = ""; + public double trk { get; set; } = 0; + public int ts { get; set; } = 0; + public int vrt { get; set; } = 0; + public string cs { get; set; } = ""; + public string at { get; set; } = ""; + + public PlaneRV() + { + } + + public PlaneRV(string hex, string call, double lat, double lon, double alt, double track, double speed, string type, PLANECATEGORY category, string manufacturer, string model, string reg, DateTime time) + { + } + + } +} diff --git a/AirScout.PlaneFeeds.Plugin.RadarVirtuel/app.config b/AirScout.PlaneFeeds.Plugin.RadarVirtuel/app.config new file mode 100644 index 0000000..3e4f9f3 --- /dev/null +++ b/AirScout.PlaneFeeds.Plugin.RadarVirtuel/app.config @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/AirScout.PlaneFeeds.Plugin.RadarVirtuel/packages.config b/AirScout.PlaneFeeds.Plugin.RadarVirtuel/packages.config new file mode 100644 index 0000000..eaaf81a --- /dev/null +++ b/AirScout.PlaneFeeds.Plugin.RadarVirtuel/packages.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/AirScout.PlaneFeeds.Plugin.VRSWebServer/AirScout.PlaneFeeds.Plugin.VRSWebServer.csproj b/AirScout.PlaneFeeds.Plugin.VRSWebServer/AirScout.PlaneFeeds.Plugin.VRSWebServer.csproj new file mode 100644 index 0000000..9a0c4e3 --- /dev/null +++ b/AirScout.PlaneFeeds.Plugin.VRSWebServer/AirScout.PlaneFeeds.Plugin.VRSWebServer.csproj @@ -0,0 +1,95 @@ + + + + + + Debug + AnyCPU + {5C096747-2BF0-4D36-BAA7-226CF71619A4} + Library + Properties + AirScout.PlaneFeeds.Plugin.VRSWebServer + AirScout.PlaneFeeds.Plugin.VRSWebServer + v4.0 + 512 + true + + + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + ..\packages\BouncyCastle.1.8.9\lib\BouncyCastle.Crypto.dll + + + ..\packages\Newtonsoft.Json.13.0.1\lib\net40\Newtonsoft.Json.dll + + + + + + + + + + + + + + + + + + + + True + True + Settings.settings + + + + + + {36945dbd-96c8-41e7-9168-f83c42e67af3} + AirScout.PlaneFeeds.Plugin + False + + + + + + + SettingsSingleFileGenerator + Settings.Designer.cs + + + + + + Dieses Projekt verweist auf mindestens ein NuGet-Paket, das auf diesem Computer fehlt. Verwenden Sie die Wiederherstellung von NuGet-Paketen, um die fehlenden Dateien herunterzuladen. Weitere Informationen finden Sie unter "http://go.microsoft.com/fwlink/?LinkID=322105". Die fehlende Datei ist "{0}". + + + + + + + mkdir $(SolutionDir)\Airscout\$(OutDir)\Plugin\ +copy $(ProjectDir)\$(OutDir)\ILMerge\*$(TargetExt) $(SolutionDir)\Airscout\$(OutDir)\Plugin\ /y + + \ No newline at end of file diff --git a/AirScout.PlaneFeeds.Plugin.VRSWebServer/AircraftJson.cs b/AirScout.PlaneFeeds.Plugin.VRSWebServer/AircraftJson.cs new file mode 100644 index 0000000..e4d0fc0 --- /dev/null +++ b/AirScout.PlaneFeeds.Plugin.VRSWebServer/AircraftJson.cs @@ -0,0 +1,455 @@ +// Copyright © 2010 onwards, Andrew Whewell +// All rights reserved. +// +// Redistribution and use of this software in source and binary forms, with or without modification, are permitted provided that the following conditions are met: +// * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. +// * Neither the name of the author nor the names of the program's contributors may be used to endorse or promote products derived from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OF THE SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Runtime.Serialization; + +namespace VirtualRadar.Interface.WebSite +{ + /// + /// The object that describes an aircraft in JSON files that are sent to the browser. + /// + [DataContract] + public class AircraftJson + { + /// + /// Gets or sets the unique identifier of the aircraft. + /// + [DataMember(Name = "Id")] + public int UniqueId { get; set; } + + /// + /// Gets or sets the ID of the receiver that is currently tracking the aircraft. + /// + [DataMember(Name = "Rcvr", IsRequired = false, EmitDefaultValue = false)] + public int? ReceiverId { get; set; } + + /// + /// Gets or sets a value indicating whether the receiver emitted a signal level for the aircraft. + /// + [DataMember(Name = "HasSig", IsRequired = false, EmitDefaultValue = false)] + public bool? HasSignalLevel { get; set; } + + /// + /// Gets or sets the signal level of the last message received for the aircraft. Use in conjunction with HasSignalLevel. + /// + [DataMember(Name = "Sig", IsRequired = false, EmitDefaultValue = false)] + public int? SignalLevel { get; set; } + + /// + /// Gets or sets the 24-bit Mode-S identifier of the aircraft. + /// + [DataMember(Name = "Icao", IsRequired = false, EmitDefaultValue = false)] + public string Icao24 { get; set; } + + /// + /// Gets or sets a value indicating that the code is wrong - either it is an unallocated code + /// or the aircraft is known to be transmitting the wrong code. + /// + [DataMember(Name = "Bad", IsRequired = false, EmitDefaultValue = false)] + public bool? Icao24Invalid { get; set; } + + /// + /// Gets or sets the aircraft's registration. + /// + [DataMember(Name = "Reg", IsRequired = false, EmitDefaultValue = false)] + public string Registration { get; set; } + + /// + /// Gets or sets the date and time (UTC) that a transmission from the aircraft was first received by the server. + /// + [DataMember(Name = "FSeen", IsRequired = false, EmitDefaultValue = false)] + public DateTime? FirstSeen { get; set; } + + /// + /// Gets or sets the number of seconds that the aircraft has been tracked for. + /// + [DataMember(Name = "TSecs", IsRequired = false, EmitDefaultValue = false)] + public long SecondsTracked { get; set; } + + /// + /// Gets or sets the number of messages received for the aircraft. + /// + [DataMember(Name = "CMsgs", IsRequired = false, EmitDefaultValue = false)] + public long? CountMessagesReceived { get; set; } + + /// + /// Gets or sets the aircraft's pressure altitude in feet. + /// + [DataMember(Name = "Alt", IsRequired = false, EmitDefaultValue = false)] + public int? Altitude { get; set; } + + /// + /// Gets or sets the aircraft's geometric altitude in feet. + /// + [DataMember(Name = "GAlt", IsRequired = false, EmitDefaultValue = false)] + public int? GeometricAltitude { get; set; } + + /// + /// Gets or sets the aircraft's air pressure setting in inches of mercury. + /// + [DataMember(Name = "InHg", IsRequired = false, EmitDefaultValue = false)] + public float? AirPressureInHg { get; set; } + + /// + /// Gets or sets the type of altitude transmitted by the aircraft. + /// + [DataMember(Name = "AltT", IsRequired = false, EmitDefaultValue = false)] + public int? AltitudeType { get; set; } + + /// + /// Gets or sets the altitude set on the autopilot / FMS etc. + /// + [DataMember(Name = "TAlt", IsRequired = false, EmitDefaultValue = false)] + public int? TargetAltitude { get; set; } + + /// + /// Gets or sets the aircraft's callsign. + /// + [DataMember(Name = "Call", IsRequired = false, EmitDefaultValue = false)] + public string Callsign { get; set; } + + /// + /// Gets or sets the latitude of the aircraft. + /// + [DataMember(Name = "Lat", IsRequired = false, EmitDefaultValue = false)] + public double? Latitude { get; set; } + + /// + /// Gets or sets the aircraft's longitude. + /// + [DataMember(Name = "Long", IsRequired = false, EmitDefaultValue = false)] + public double? Longitude { get; set; } + + /// + /// Gets or sets the time that the and were + /// transmitted as a number of .NET ticks. + /// + [DataMember(Name = "PosTime", IsRequired = false, EmitDefaultValue = false)] + public long? PositionTime { get; set; } + + /// + /// Gets or sets a value indicating that the and + /// were calculated by an MLAT source. + /// + [DataMember(Name = "Mlat", IsRequired = false, EmitDefaultValue = false)] + public bool? PositionIsMlat { get; set; } + + /// + /// Gets or sets a value indicating whether the position is older than the display timeout. + /// + /// + /// This is usually only seen on merged feeds that include an MLAT feed, and only for aircraft + /// that are not transmitting positions. The aircraft can appear to freeze on the map when it + /// moves out of range of the MLAT receiver, this flag controls whether we should keep showing + /// the aircraft on the map. + /// + [DataMember(Name = "PosStale", IsRequired = false, EmitDefaultValue = false)] + public bool? PositionIsStale { get; set; } + + /// + /// Gets or sets a value indicating that the last message received for this aircraft was from a TIS-B source. + /// + [DataMember(Name = "Tisb", IsRequired = false, EmitDefaultValue = false)] + public bool? IsTisb { get; set; } + + /// + /// Gets or sets the ground speed of the aircraft in knots. + /// + [DataMember(Name = "Spd", IsRequired = false, EmitDefaultValue = false)] + public float? GroundSpeed { get; set; } + + /// + /// Gets or sets the heading that the aircraft is tracking across the ground in degrees from 0° north. + /// + [DataMember(Name = "Trak", IsRequired = false, EmitDefaultValue = false)] + public float? Track { get; set; } + + /// + /// Gets or sets a value indicating that the track is the aircraft's heading, not its ground track. + /// + [DataMember(Name = "TrkH", IsRequired = false, EmitDefaultValue = false)] + public bool? TrackIsHeading { get; set; } + + /// + /// Gets or sets the heading on the aircraft's autopilot or FMS. + /// + [DataMember(Name = "TTrk", IsRequired = false, EmitDefaultValue = false)] + public float? TargetTrack { get; set; } + + /// + /// Gets or sets the ICAO8643 type code of the aircraft. + /// + [DataMember(IsRequired = false, EmitDefaultValue = false)] + public string Type { get; set; } + + /// + /// Gets or sets the English description of the aircraft model. Usually includes the manufacturer. + /// + [DataMember(Name = "Mdl", IsRequired = false, EmitDefaultValue = false)] + public string Model { get; set; } + + /// + /// Gets or sets the manufacturer's name. + /// + [DataMember(Name = "Man", IsRequired = false, EmitDefaultValue = false)] + public string Manufacturer { get; set; } + + /// + /// Gets or sets the construction / serial number of the aircraft. + /// + [DataMember(Name = "CNum", IsRequired = false, EmitDefaultValue = false)] + public string ConstructionNumber { get; set; } + + /// + /// Gets or sets the airport that the aircraft set out from. + /// + [DataMember(Name = "From", IsRequired = false, EmitDefaultValue = false)] + public string Origin { get; set; } + + /// + /// Gets or sets the airport that the aircraft is travelling to. + /// + [DataMember(Name = "To", IsRequired = false, EmitDefaultValue = false)] + public string Destination { get; set; } + + /// + /// Gets or sets a list of airports that the aircraft will be stopping at on its way to . + /// + [DataMember(Name = "Stops", IsRequired = false, EmitDefaultValue = false)] + public List Stopovers { get; set; } + + /// + /// Gets or sets a value indicating that this is probably a positioning / ferry flight. + /// + [DataMember(Name = "IsFerryFlight", IsRequired = false, EmitDefaultValue = false)] + public bool? IsPositioningFlight { get; set; } + + /// + /// Gets or sets a value indicating that the this probably a charter flight. + /// + [DataMember(Name = "IsCharterFlight", IsRequired = false, EmitDefaultValue = false)] + public bool? IsCharterFlight { get; set; } + + /// + /// Gets or sets the operator's name. + /// + [DataMember(Name = "Op", IsRequired = false, EmitDefaultValue = false)] + public string Operator { get; set; } + + /// + /// Gets or sets the operator's ICAO code. + /// + [DataMember(Name = "OpIcao", IsRequired = false, EmitDefaultValue = false)] + public string OperatorIcao { get; set; } + + /// + /// Gets or sets the squawk currently transmitted by the aircraft. + /// + [DataMember(Name = "Sqk", IsRequired = false, EmitDefaultValue = false)] + public string Squawk { get; set; } + + /// + /// Gets or sets a value indicating whether ident is active. + /// + [DataMember(Name = "Ident", IsRequired = false, EmitDefaultValue = false)] + public bool? IdentActive { get; set; } + + /// + /// Gets or sets a flag indicating that the aircraft is transmitting a mayday squawk. + /// + [DataMember(Name = "Help", IsRequired = false, EmitDefaultValue = false)] + public bool? Emergency { get; set; } + + /// + /// Gets or sets the vertical speed in feet per second. + /// + [DataMember(Name = "Vsi", IsRequired = false, EmitDefaultValue = false)] + public int? VerticalRate { get; set; } + + /// + /// Gets or sets the type of altitude reported in . + /// + [DataMember(Name = "VsiT", IsRequired = false, EmitDefaultValue = false)] + public int? VerticalRateType { get; set; } + + /// + /// Gets or sets the distance from the browser's location to the aircraft in kilometres. + /// + [DataMember(Name = "Dst", IsRequired = false, EmitDefaultValue = false)] + public double? DistanceFromHere { get; set; } + + /// + /// Gets or sets the bearing from the browser to the aircraft in degrees from 0° north. + /// + [DataMember(Name = "Brng", IsRequired = false, EmitDefaultValue = false)] + public double? BearingFromHere { get; set; } + + /// + /// Gets or sets a value indicating the wake turbulence category of the aircraft (see ). + /// + [DataMember(Name = "WTC", IsRequired = false, EmitDefaultValue = false)] + public int? WakeTurbulenceCategory { get; set; } + + /// + /// Gets or sets a value indicating the species of aircraft (see ). + /// + [DataMember(IsRequired = false, EmitDefaultValue = false)] + public int? Species { get; set; } + + /// + /// Gets or sets the number of engines that the aircraft has - note that this is a copy of the ICAO8643 engine count which is not + /// always a number! + /// + [DataMember(Name = "Engines", IsRequired = false, EmitDefaultValue = false)] + public string NumberOfEngines { get; set; } + + /// + /// Gets or sets a value indicating the type of engines that the aircraft uses (see ). + /// + [DataMember(Name = "EngType", IsRequired = false, EmitDefaultValue = false)] + public int? EngineType { get; set; } + + /// + /// Gets or sets a value indicating the placement of the engines mounted to the aircraft (see ). + /// + [DataMember(Name = "EngMount", IsRequired = false, EmitDefaultValue = false)] + public int? EnginePlacement { get; set; } + + /// + /// Gets or sets a value indicating that the aircraft is operated by a country's military. + /// + [DataMember(Name = "Mil", IsRequired = false, EmitDefaultValue = false)] + public bool? IsMilitary { get; set; } + + /// + /// Gets or sets the country that the aircraft's was allocated to. + /// + [DataMember(Name = "Cou", IsRequired = false, EmitDefaultValue = false)] + public string Icao24Country { get; set; } + + /// + /// Gets or sets a value indicating that the server can supply a picture of the aircraft. + /// + [DataMember(Name = "HasPic", IsRequired = false, EmitDefaultValue = false)] + public bool? HasPicture { get; set; } + + /// + /// Gets or sets the width of the aircraft picture in pixels. + /// + [DataMember(Name = "PicX", IsRequired = false, EmitDefaultValue = false)] + public int? PictureWidth { get; set; } + + /// + /// Gets or sets the height of the aircraft picture in pixels. + /// + [DataMember(Name = "PicY", IsRequired = false, EmitDefaultValue = false)] + public int? PictureHeight { get; set; } + + /// + /// Gets or sets a value indicating that the aircraft is flagged as interesting in the BaseStation database. + /// + [DataMember(Name = "Interested", IsRequired = false, EmitDefaultValue = false)] + public bool? IsInteresting { get; set; } + + /// + /// Gets or sets a value indicating how many flights this aircraft has logged in the BaseStation database. + /// + [DataMember(Name = "FlightsCount", IsRequired = false, EmitDefaultValue = false)] + public int? FlightsCount { get; set; } + + /// + /// Gets or sets a value indicating that the aircraft is on the ground. + /// + [DataMember(Name = "Gnd", IsRequired = false, EmitDefaultValue = false)] + public bool? OnGround { get; set; } + + /// + /// Gets or sets a value indicating the type of speed the aircraft is transmitting. + /// + [DataMember(Name = "SpdTyp", IsRequired = false, EmitDefaultValue = false)] + public int? SpeedType { get; set; } + + /// + /// Gets or sets a value indicating that the came from an unreliable source. + /// + [DataMember(Name = "CallSus", IsRequired = false, EmitDefaultValue = false)] + public bool? CallsignIsSuspect { get; set; } + + /// + /// Gets or sets the user tag from the aircraft's database record. + /// + [DataMember(Name = "Tag", IsRequired = false, EmitDefaultValue = false)] + public string UserTag { get; set; } + + /// + /// Gets or sets the user notes from the aircraft's database record. + /// + [DataMember(Name = "Notes", IsRequired = false, EmitDefaultValue = false)] + public string UserNotes { get; set; } + + + /// + /// Gets or sets a value indicating that the server wants all trails for the aircraft to be reset. + /// + [DataMember(IsRequired = false, EmitDefaultValue = false)] + public bool ResetTrail { get; set; } + + /// + /// Gets or sets the trail type. It is empty for plain trails (just position), 'a' for trails that have altitude + /// attached and 's' for trails with speeds attached. + /// + [DataMember(Name = "TT", IsRequired = false, EmitDefaultValue = false)] + public string TrailType { get; set; } + + /// + /// Gets or sets the transponder type. + /// + [DataMember(Name = "Trt", IsRequired = false, EmitDefaultValue = false)] + public int? TransponderType { get; set; } + + /// + /// Gets or sets the year the aircraft was manufactured. + /// + [DataMember(Name = "Year", EmitDefaultValue = false)] + public string YearBuilt { get; set; } + + /// + /// Gets or sets a value indicating that the aircraft was seen on a SatCom feed. + /// + [DataMember(Name = "Sat", EmitDefaultValue = false)] + public bool IsSatcomFeed { get; set; } + + /// + /// Gets or sets a list of coordinates representing the full trail for the aircraft. If + /// is true then it is the entire trail, otherwise it extends the existing trail. + /// + /// + /// This is a set of 3-tuples - latitude, longitude and the heading. If is 'a' or 's' + /// then it's a set of 4-tuples, with altitude or speed being added to the end of the tuple. + /// + [DataMember(Name = "Cot", IsRequired = false, EmitDefaultValue = false)] + public List FullCoordinates { get; set; } + + /// + /// Gets or sets a list of coordinates representing the short trail for the aircraft. If + /// is true then it is the entire trail, otherwise it extends the existing trail. + /// + /// + /// This is a set of 3-tuples - latitude, longitude and the time of the position in Javascript ticks. When + /// is 'a' or 's' then it's a set of 4-tuples, where altitude or speed are added to the end of the tuple. + /// + [DataMember(Name = "Cos", IsRequired = false, EmitDefaultValue = false)] + public List ShortCoordinates { get; set; } + } +} diff --git a/AirScout.PlaneFeeds.Plugin.VRSWebServer/AircraftListJson.cs b/AirScout.PlaneFeeds.Plugin.VRSWebServer/AircraftListJson.cs new file mode 100644 index 0000000..19b73c2 --- /dev/null +++ b/AirScout.PlaneFeeds.Plugin.VRSWebServer/AircraftListJson.cs @@ -0,0 +1,125 @@ +// Copyright © 2010 onwards, Andrew Whewell +// All rights reserved. +// +// Redistribution and use of this software in source and binary forms, with or without modification, are permitted provided that the following conditions are met: +// * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. +// * Neither the name of the author nor the names of the program's contributors may be used to endorse or promote products derived from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OF THE SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Runtime.Serialization; + +namespace VirtualRadar.Interface.WebSite +{ + /// + /// The list of aircraft that is sent to the browser as a JSON file. + /// + [DataContract] + public class AircraftListJson + { + /// + /// Gets or sets the source of the aircraft list (see ). + /// + [DataMember(Name = "src")] + public int Source { get; set; } + + /// + /// Gets a collection of feeds that VRS has been configured to listen to and are currently enabled. + /// + [DataMember(Name = "feeds")] + public List Feeds { get; private set; } + + /// + /// Gets or sets the ID of the feed that this aircraft list is showing. + /// + /// + /// It's entirely possible that this ID number does not correspond with any feed in - this + /// can happen when reporting on the Flight Simulator X feed, or when the feed requested by the website no + /// longer exists on the server. + /// + [DataMember(Name = "srcFeed")] + public int SourceFeedId { get; set; } + + /// + /// Gets or sets a value indicating that silhouettes can be shown for aircraft. + /// + [DataMember(Name = "showSil")] + public bool ShowSilhouettes { get; set; } + + /// + /// Gets or sets a value indicating that operator flags can be shown for aircraft. + /// + [DataMember(Name = "showFlg")] + public bool ShowFlags { get; set; } + + /// + /// Gets or sets a value indicating that pictures can be shown for aircraft. + /// + [DataMember(Name = "showPic")] + public bool ShowPictures { get; set; } + + /// + /// Gets or sets the height of the operator flags. + /// + [DataMember(Name = "flgH")] + public int FlagHeight { get; set; } + + /// + /// Gets or sets the width of the operator flags. + /// + [DataMember(Name = "flgW")] + public int FlagWidth { get; set; } + + /// + /// Gets the list of aircraft to show to the user. + /// + [DataMember(Name = "acList", IsRequired = true)] + public List Aircraft { get; private set; } + + /// + /// Gets or sets the total number of aircraft that the server is currently tracking. + /// + [DataMember(Name = "totalAc")] + public int AvailableAircraft { get; set; } + + /// + /// Gets or sets the latest for the aircraft in the aircraft list. + /// + /// The browser sends this value back to the server when it asks for another aircraft list. In this + /// way the server can figure out what has changed since the last time the browser asked for a list. + [DataMember(Name = "lastDv")] + public string LastDataVersion { get; set; } + + /// + /// Gets or sets the number of seconds of positions to show in short trails. + /// + [DataMember(Name = "shtTrlSec", IsRequired = false, EmitDefaultValue = false)] + public int ShortTrailLengthSeconds { get; set; } + + /// + /// Gets or sets the server's current time as the number of Javascript ticks in a UTC DateTime. + /// + [DataMember(Name = "stm")] + public long ServerTime { get; set; } + + /// + /// Gets or sets a value indicating that the server configuration has changed since their last update. + /// + [DataMember(Name = "configChanged", IsRequired = false, EmitDefaultValue = false)] + public bool ServerConfigChanged { get; set; } + + /// + /// Creates a new object. + /// + public AircraftListJson() + { + Aircraft = new List(); + Feeds = new List(); + } + } +} diff --git a/AirScout.PlaneFeeds.Plugin.VRSWebServer/FeedJson.cs b/AirScout.PlaneFeeds.Plugin.VRSWebServer/FeedJson.cs new file mode 100644 index 0000000..e09a005 --- /dev/null +++ b/AirScout.PlaneFeeds.Plugin.VRSWebServer/FeedJson.cs @@ -0,0 +1,44 @@ +// Copyright © 2013 onwards, Andrew Whewell +// All rights reserved. +// +// Redistribution and use of this software in source and binary forms, with or without modification, are permitted provided that the following conditions are met: +// * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. +// * Neither the name of the author nor the names of the program's contributors may be used to endorse or promote products derived from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OF THE SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Runtime.Serialization; + +namespace VirtualRadar.Interface.WebSite +{ + /// + /// The JSON object that describes a data feed from a receiver. + /// + [DataContract] + public class FeedJson + { + /// + /// Gets or sets the unique ID of the feed. + /// + [DataMember(Name = "id", IsRequired = true)] + public int UniqueId { get; set; } + + /// + /// Gets or sets the current name of the feed. + /// + [DataMember(Name = "name", IsRequired = true)] + public string Name { get; set; } + + /// + /// Gets or sets a value indicating that a polar plot exists for the feed. + /// + [DataMember(Name = "polarPlot", IsRequired = true)] + public bool HasPolarPlot { get; set; } + + } +} diff --git a/AirScout.PlaneFeeds.Plugin.VRSWebServer/Properties/AssemblyInfo.cs b/AirScout.PlaneFeeds.Plugin.VRSWebServer/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..a0aaf16 --- /dev/null +++ b/AirScout.PlaneFeeds.Plugin.VRSWebServer/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// Allgemeine Informationen über eine Assembly werden über die folgenden +// Attribute gesteuert. Ändern Sie diese Attributwerte, um die Informationen zu ändern, +// die einer Assembly zugeordnet sind. +[assembly: AssemblyTitle("AirScout.PlaneFeeds.Plugin.VRSWebServer")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("AirScout.PlaneFeeds.Plugin.VRSWebServer")] +[assembly: AssemblyCopyright("Copyright © 2022 DL2ALF")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Durch Festlegen von ComVisible auf FALSE werden die Typen in dieser Assembly +// für COM-Komponenten unsichtbar. Wenn Sie auf einen Typ in dieser Assembly von +// COM aus zugreifen müssen, sollten Sie das ComVisible-Attribut für diesen Typ auf "True" festlegen. +[assembly: ComVisible(false)] + +// Die folgende GUID bestimmt die ID der Typbibliothek, wenn dieses Projekt für COM verfügbar gemacht wird +[assembly: Guid("db85e98a-e209-49d0-b6cf-6cdd5b8e20e3")] + +// Versionsinformationen für eine Assembly bestehen aus den folgenden vier Werten: +// +// Hauptversion +// Nebenversion +// Buildnummer +// Revision +// +// 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.4.3.0")] +[assembly: AssemblyFileVersion("1.4.3.0")] diff --git a/AirScout.PlaneFeeds.Plugin.VRSWebServer/Properties/Settings.Designer.cs b/AirScout.PlaneFeeds.Plugin.VRSWebServer/Properties/Settings.Designer.cs new file mode 100644 index 0000000..a02fcbd --- /dev/null +++ b/AirScout.PlaneFeeds.Plugin.VRSWebServer/Properties/Settings.Designer.cs @@ -0,0 +1,26 @@ +//------------------------------------------------------------------------------ +// +// Dieser Code wurde von einem Tool generiert. +// Laufzeitversion:4.0.30319.42000 +// +// Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn +// der Code erneut generiert wird. +// +//------------------------------------------------------------------------------ + +namespace AirScout.PlaneFeeds.Plugin.OpenSky.Properties { + + + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.4.0.0")] + internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { + + private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); + + public static Settings Default { + get { + return defaultInstance; + } + } + } +} diff --git a/AirScout.PlaneFeeds.Plugin.VRSWebServer/Properties/Settings.settings b/AirScout.PlaneFeeds.Plugin.VRSWebServer/Properties/Settings.settings new file mode 100644 index 0000000..8e615f2 --- /dev/null +++ b/AirScout.PlaneFeeds.Plugin.VRSWebServer/Properties/Settings.settings @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/AirScout.PlaneFeeds.Plugin.VRSWebServer/TLS.cs b/AirScout.PlaneFeeds.Plugin.VRSWebServer/TLS.cs new file mode 100644 index 0000000..758a022 --- /dev/null +++ b/AirScout.PlaneFeeds.Plugin.VRSWebServer/TLS.cs @@ -0,0 +1,282 @@ +using Org.BouncyCastle.Crypto.Tls; +using Org.BouncyCastle.Security; +using System; +using System.Collections; +using System.Collections.Generic; +using System.ComponentModel; +using System.Diagnostics; +using System.IO; +using System.Linq; +using System.Net.Sockets; +using System.Text; +using System.Text.RegularExpressions; + +namespace System.Net +{ + class VRSTlsClient : DefaultTlsClient + { + string HostName; + + public VRSTlsClient(string hostname) + { + HostName = hostname; + } + + public override TlsAuthentication GetAuthentication() + { + TlsAuthentication auth = new MyTlsAuthentication(); + return auth; + } + + public override void NotifyNewSessionTicket(NewSessionTicket newSessionTicket) + { + base.NotifyNewSessionTicket(newSessionTicket); + } + + public override IDictionary GetClientExtensions() + { + var clientExtensions = base.GetClientExtensions(); + /* + List servers = new List(); + servers.Add(new ServerName(NameType.host_name, HostName)); + TlsExtensionsUtilities.AddServerNameExtension(clientExtensions, new ServerNameList(servers)); + */ + return clientExtensions; + } + + private static bool ReadContent(Stream stream, int contentlength, int timeout, ref string response) + { + // set stop watch as timout + Stopwatch st = new Stopwatch(); + st.Start(); + string resp = ""; + int count = 0; + // assign buffer + byte[] buff = new byte[1024]; + int bytesread = 0; + // read content blockwise + while (bytesread < contentlength) + { + int bytestoread = buff.Length - bytesread; + if (bytestoread > buff.Length) + bytestoread = buff.Length; + bytesread += stream.Read(buff, 0, buff.Length); + // add it to response + resp += Encoding.ASCII.GetString(buff, 0, buff.Length); + if (st.ElapsedMilliseconds > timeout) + throw new TimeoutException("Connection timed out."); + } + /* + string trailer = ""; + // reassign buffer + buff = new byte[1]; + // read stream bytewise until CRLFCRLF is detected, should be the next two bytes + do + { + count = stream.Read(buff, 0, buff.Length); + trailer += Encoding.ASCII.GetString(buff, 0, buff.Length); + if (st.ElapsedMilliseconds > timeout) + throw new TimeoutException("Connection timed out."); + } + while (!trailer.Contains("\r\n")); + */ + Console.WriteLine("Reading content [" + contentlength.ToString() + " bytes]: " + resp); + response += resp; + return true; + } + + private static bool ReadChunkedContent(Stream stream, int timeout, ref string response) + { + // set stop watch as timout + Stopwatch st = new Stopwatch(); + st.Start(); + string resp = ""; + byte[] buff = new byte[1]; + int count = 0; + string strcontentlength = ""; + int contentlength = 0; + int bytesread = 0; + // chunked transfer, first line should contain content length + // read stream bytewise until CRLF is detected + try + { + do + { + count = stream.Read(buff, 0, buff.Length); + strcontentlength += Encoding.ASCII.GetString(buff, 0, buff.Length); + if (st.ElapsedMilliseconds > timeout) + throw new TimeoutException("Connection timed out."); + } + while (!strcontentlength.Contains("\r\n")); + strcontentlength = strcontentlength.Replace("\r\n", ""); + contentlength = int.Parse(strcontentlength, System.Globalization.NumberStyles.HexNumber); + // finished reading all chunks + if (contentlength == 0) + { + Console.WriteLine("Reading chunked content finished"); + return true; + } + + // re-assign buffer + buff = new byte[contentlength]; + + // read content in 1kByte chunks until contentlength is reached + while (bytesread < contentlength) + { + int bytestoread = buff.Length - bytesread; + if (bytestoread > buff.Length) + bytestoread = buff.Length; + bytesread += stream.Read(buff, bytesread, bytestoread); + // add it to response + if (st.ElapsedMilliseconds > timeout) + throw new TimeoutException("Connection timed out."); + } + resp += Encoding.ASCII.GetString(buff, 0, buff.Length); + + string trailer = ""; + // reassign buffer + buff = new byte[1]; + // read stream bytewise until CRLFCRLF is detected, should be the next two bytes + do + { + count = stream.Read(buff, 0, buff.Length); + trailer += Encoding.ASCII.GetString(buff, 0, buff.Length); + if (st.ElapsedMilliseconds > timeout) + throw new TimeoutException("Connection timed out."); + } + while (!trailer.Contains("\r\n")); + } + catch (Exception ex) + { + Console.WriteLine("Error while reading chunked content: " + ex.Message); + return true; + } + // Console.WriteLine("Reading chunked content [" + contentlength.ToString() + " bytes]: " + resp); + response += resp; + return false; + } + + public static string DownloadFile(string url, int timeout, string username, string password) + { + string response = ""; + Uri uri = null; + // try to parse url + try + { + uri = new Uri(url); + } + catch (Exception ex) + { + return ex.Message; + } + // simple connection + if (url.Contains("http:")) + { + HttpWebRequest webrequest = (HttpWebRequest)HttpWebRequest.Create(url); + webrequest.Referer = "http://www.vrs-world.com/"; + webrequest.Timeout = timeout; + webrequest.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:37.0) Gecko/20100101 Firefox/37.0"; + webrequest.Accept = "application/json, text/javascript, */*;q=0.01"; + webrequest.AutomaticDecompression = System.Net.DecompressionMethods.Deflate | System.Net.DecompressionMethods.GZip; + + // include authorization if username/password are not empty + if (!String.IsNullOrEmpty(username) && !String.IsNullOrEmpty(password)) + { + // Base64 encode username:password + string s = Convert.ToBase64String(Encoding.UTF8.GetBytes(username + ":" + password)); + webrequest.Headers.Add("Authorization: Basic " + s); + } + + Console.WriteLine("[VRSWebFeed]: Getting web response"); + HttpWebResponse webresponse = (HttpWebResponse)webrequest.GetResponse(); + Console.WriteLine("[VRSWebFeed]: Reading stream"); + + using (StreamReader sr = new StreamReader(webresponse.GetResponseStream())) + { + response = sr.ReadToEnd(); + } + } + // using SSL for connection + else + { + // create new TCP-Client + using (var client = new TcpClient(uri.Host, uri.Port)) + { + var sr = new SecureRandom(); + var cl = new VRSTlsClient(uri.Host); + var protocol = new TlsClientProtocol(client.GetStream(), sr); + protocol.Connect(cl); + + using (var stream = protocol.Stream) + { + var hdr = new StringBuilder(); + hdr.AppendLine("GET " + uri.PathAndQuery + " HTTP/1.1"); + hdr.AppendLine("Host: " + uri.Host); + hdr.AppendLine("Content-Type: text/json; charset=utf-8"); + hdr.AppendLine("Connection: close"); + + // include authorization if username/password are not empty + if (!String.IsNullOrEmpty(username) && !String.IsNullOrEmpty(password)) + { + // Base64 encode username:password + string s = Convert.ToBase64String(Encoding.UTF8.GetBytes(username + ":" + password)); + hdr.AppendLine("Authorization: Basic " + s); + } + hdr.AppendLine(); + + var dataToSend = Encoding.ASCII.GetBytes(hdr.ToString()); + + stream.Write(dataToSend, 0, dataToSend.Length); + + byte[] buff; + // set stop watch as timout + Stopwatch st = new Stopwatch(); + st.Start(); + //read header bytewise + string header = ""; + int totalRead = 0; + buff = new byte[1]; + do + { + totalRead = stream.Read(buff, 0, buff.Length); + header += Encoding.ASCII.GetString(buff); + if (st.ElapsedMilliseconds > timeout) + throw new TimeoutException("Connection to " + url + " timed out."); + } + while (!header.Contains("\r\n\r\n")); + Console.Write(header); + int contentlength = 0; + if (header.Contains("Transfer-Encoding: chunked")) + { + // chunked transfer, read all chunks until complete + while (!ReadChunkedContent(stream, timeout, ref response)) + { } + } + else + { + // get content length from header + Regex rcontentlength = new Regex("(?<=Content-Length:\\s)\\d+", RegexOptions.IgnoreCase); + contentlength = int.Parse(rcontentlength.Match(header).Value); + ReadContent(stream, contentlength, timeout, ref response); + } + st.Stop(); + } + } + } + return response; + } + } + + class MyTlsAuthentication : TlsAuthentication + { + public TlsCredentials GetClientCredentials(CertificateRequest certificateRequest) + { + return null; + } + + public void NotifyServerCertificate(Certificate serverCertificate) + { + } + } + +} diff --git a/AirScout.PlaneFeeds.Plugin.VRSWebServer/VRSWebServer.cs b/AirScout.PlaneFeeds.Plugin.VRSWebServer/VRSWebServer.cs new file mode 100644 index 0000000..4642e74 --- /dev/null +++ b/AirScout.PlaneFeeds.Plugin.VRSWebServer/VRSWebServer.cs @@ -0,0 +1,941 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Reflection; +using System.ComponentModel; +using System.Globalization; +using AirScout.PlaneFeeds.Plugin.MEFContract; +using System.Net; +using System.IO; +using System.Security.Cryptography; +using System.Xml.Serialization; +using System.Xml.Linq; +using System.ComponentModel.Composition; +using Newtonsoft.Json; + +namespace AirScout.PlaneFeeds.Plugin.VRSWebServer +{ + + public class VRSWebServerServerSettings + { + + [Browsable(false)] + [DefaultValue("")] + [XmlIgnore] + public string DisclaimerAccepted { get; set; } + + [Browsable(true)] + [CategoryAttribute("Web Feed")] + [DescriptionAttribute("Save downloaded JSON to file")] + [DefaultValue(false)] + [XmlIgnore] + public bool SaveToFile { get; set; } + + [Browsable(true)] + [CategoryAttribute("Web Feed")] + [DescriptionAttribute("Base URL for website.")] + [DefaultValue("http://localhost:7780/VirtualRadar/AircraftList.json?ldv=%LASTDV%&stm=%UNIXTIME%&lat=%MYLAT%&lng=%MYLON%&fDstL=%MINDISTKM%&fDstU=%MAXDISTKM%&fAltL=%MINALTFT%&fAltU=%MAXALTFT%")] + public string URL { get; set; } + + [Browsable(true)] + [CategoryAttribute("Web Feed")] + [DescriptionAttribute("Username for Authentication (blank for anonymous)")] + [DefaultValue("")] + public string Username { get; set; } + + [Browsable(true)] + [CategoryAttribute("Web Feed")] + [DescriptionAttribute("Password for Authentication (blank for anonymous)")] + [DefaultValue("")] + [PasswordPropertyText(true)] + public string Password { get; set; } + + [Browsable(true)] + [CategoryAttribute("Web Feed (redundant)")] + [DescriptionAttribute("Base URL for redundant website.")] + public string URL2 { get; set; } + + [Browsable(true)] + [CategoryAttribute("Web Feed (redundant)")] + [DescriptionAttribute("Username for redundant Authentication (blank for anonymous)")] + [DefaultValue("")] + public string Username2 { get; set; } + + [Browsable(true)] + [CategoryAttribute("Web Feed (redundant)")] + [DescriptionAttribute("Password for redundant Authentication (blank for anonymous)")] + [DefaultValue("")] + [PasswordPropertyText(true)] + public string Password2 { get; set; } + + [Browsable(true)] + [CategoryAttribute("Web Feed (redundant)")] + [DescriptionAttribute("Share load between both redundant servers")] + [DefaultValue(true)] + public bool LoadShare { get; set; } + + [Browsable(true)] + [CategoryAttribute("Web Feed")] + [DescriptionAttribute("Use geometric altitude from GPS rather than barometric")] + [DefaultValue(false)] + public bool UseGeoAlt { get; set; } + + [Browsable(true)] + [CategoryAttribute("Web Feed")] + [DescriptionAttribute("Timeout for loading the site.")] + [DefaultValue(30)] + [XmlIgnore] + public int Timeout { get; set; } + + public VRSWebServerServerSettings() + { + Default(); + Load(true); + } + + /// + /// Sets all properties to their default value according to the [DefaultValue=] attribute + /// + public void Default() + { + // set all properties to their default values according to definition in [DeafultValue=] + foreach (var p in this.GetType().GetProperties()) + { + try + { + // initialize all properties with default value if set + if (Attribute.IsDefined(p, typeof(DefaultValueAttribute))) + { + p.SetValue(this, ((DefaultValueAttribute)Attribute.GetCustomAttribute( + p, typeof(DefaultValueAttribute)))?.Value, null); + } + } + catch (Exception ex) + { + Console.WriteLine("[" + this.GetType().Name + "]: Cannot set default value of: " + p.Name + ", " + ex.Message); + } + } + } + + /// + /// Loads settings from a XML-formatted configuration file into settings. + /// + /// If true, ignore the [XmlIgnore] attribute, e.g. load all settings available in the file.
If false, load only settings without [XmlIgore] attrbute.
+ /// The filename of the settings file. + public void Load(bool loadall, string filename = "") + { + // use standard filename if empty + // be careful because Linux file system is case sensitive + if (String.IsNullOrEmpty(filename)) + filename = new Uri(Assembly.GetExecutingAssembly().GetName().CodeBase.Replace(".dll", ".cfg").Replace(".DLL", ".CFG")).LocalPath; + // do nothing if file not exists + if (!File.Exists(filename)) + return; + try + { + string xml = ""; + using (StreamReader sr = new StreamReader(File.OpenRead(filename))) + { + xml = sr.ReadToEnd(); + } + XDocument xdoc = XDocument.Parse(xml); + PropertyInfo[] properties = this.GetType().GetProperties(); + foreach (PropertyInfo p in properties) + { + if (!loadall) + { + // check on XmlIgnore attribute, skip if set + object[] attr = p.GetCustomAttributes(typeof(XmlIgnoreAttribute), false); + if (attr.Length > 0) + continue; + } + try + { + // get matching element + XElement typenode = xdoc.Element(this.GetType().Name); + if (typenode != null) + { + XElement element = typenode.Element(p.Name); + if (element != null) + { + // fix issues with URL in V1.4.0.0 --> do not load URL from file if not containing filters + if ((p.Name != "URL") || (element.Value.ToString().Contains("?"))) + { + p.SetValue(this, Convert.ChangeType(element.Value, p.PropertyType), null); + } + else + { + Console.WriteLine("Ignoring property URL do to version conflict: " + element.Value); + } + } + } + } + catch (Exception ex) + { + Console.WriteLine("[" + this.GetType().Name + "]: Error while loading property[" + p.Name + " from " + filename + ", " + ex.Message); + } + } + + } + catch (Exception ex) + { + Console.WriteLine("[" + this.GetType().Name + "]: Cannot load settings from " + filename + ", " + ex.Message); + } + } + + /// + /// Saves settings from settings into a XML-formatted configuration file + /// + /// If true, ignore the [XmlIgnore] attribute, e.g. save all settings.
If false, save only settings without [XmlIgore] attrbute. + /// The filename of the settings file. + public void Save(bool saveall, string filename = "") + { + // use standard filename if empty + // be careful because Linux file system is case sensitive + if (String.IsNullOrEmpty(filename)) + filename = new Uri(Assembly.GetExecutingAssembly().GetName().CodeBase.Replace(".dll", ".cfg").Replace(".DLL", ".CFG")).LocalPath; + XmlAttributeOverrides overrides = new XmlAttributeOverrides(); + if (saveall) + { + // ovverride the XmlIgnore attributes to get all serialized + PropertyInfo[] properties = this.GetType().GetProperties(); + foreach (PropertyInfo p in properties) + { + XmlAttributes attribs = new XmlAttributes { XmlIgnore = false }; + overrides.Add(this.GetType(), p.Name, attribs); + } + } + try + { + using (StreamWriter sw = new StreamWriter(File.Create(filename))) + { + XmlSerializer s = new XmlSerializer(this.GetType(), overrides); + s.Serialize(sw, this); + } + } + catch (Exception ex) + { + throw new InvalidOperationException("[" + this.GetType().Name + "]: Cannot save settings to " + filename + ", " + ex.Message); + } + } + } + + + [Export(typeof(IPlaneFeedPlugin))] + [ExportMetadata("Name", "PlaneFeedPlugin")] + public class VRSWebServerPlugin : IPlaneFeedPlugin + { + private VRSWebServerServerSettings Settings = new VRSWebServerServerSettings(); + + VirtualRadar.Interface.WebSite.AircraftListJson AircraftList = null; + + // last data version + private string LastDV { get; set; } = ""; + + // Load share counter + long Count1 = 0; + long Count2 = 0; + + + + public string Name + { + get + { + return "[WebFeed] VRS Web Server"; + } + } + + public string Info + { + get + { + return "Web feed from Virtual Radar Server\n\n" + + "(c) AirScout(www.airscout.eu)\n\n" + + "Gets either single or aggrated feed\n" + + "from a local or remote VRS instance.\n" + + "Be sure to select the desired feed as\n" + + "the default web server feed in the\n" + + "VRS Web server settings.\n\n" + + "See https://www.virtualradarserver.co.uk \n" + + "for details.\n\n" + + "Change hostname and/or port to your needs\n" + + "when getting data from a remote server.\n\n" + + "If the access is restricted, you can\n" + + "enter username and password here.\n\n" + + ""; + } + } + + public string Version + { + get + { + return Assembly.GetExecutingAssembly().GetName().Version.ToString(); + } + } + + public bool HasSettings + { + get + { + return true; + } + } + + public bool CanImport + { + get + { + return false; + } + } + + public bool CanExport + { + get + { + return false; + } + } + + public string Disclaimer + { + get + { + return ""; + } + } + + public string DisclaimerAccepted + { + get + { + return Settings.DisclaimerAccepted; + } + set + { + Settings.DisclaimerAccepted = value; + } + } + + public void ResetSettings() + { + Settings.Default(); + } + + public void LoadSettings() + { + Settings.Load(true); + } + + public void SaveSettings() + { + Settings.Save(true); + } + + public object GetSettings() + { + return this.Settings; + } + + public void ImportSettings() + { + // nothing to do + } + + public void ExportSettings() + { + // nothing to do + } + + public void Start(PlaneFeedPluginArgs args) + { + // reset counters + Count1 = 0; + Count2 = 0; + } + + public PlaneFeedPluginPlaneInfoList GetPlanes(PlaneFeedPluginArgs args) + { + // intialize variables + VarConverter VC = new VarConverter(); + VC.AddVar("APPDIR", args.AppDirectory); + VC.AddVar("DATADIR", args.AppDataDirectory); + VC.AddVar("LOGDIR", args.LogDirectory); + VC.AddVar("DATABASEDIR", args.DatabaseDirectory); + VC.AddVar("MINLAT", args.MinLat); + VC.AddVar("MAXLAT", args.MaxLat); + VC.AddVar("MINLON", args.MinLon); + VC.AddVar("MAXLON", args.MaxLon); + VC.AddVar("MINALTM", args.MinAlt); + VC.AddVar("MAXALTM", args.MaxAlt); + VC.AddVar("MINALTFT", (int)UnitConverter.m_ft((double)args.MinAlt)); + VC.AddVar("MAXALTFT", (int)UnitConverter.m_ft((double)args.MaxAlt)); + VC.AddVar("UNIXTIME", SupportFunctions.DateTimeToUNIXTime(DateTime.UtcNow)); + + // calculate Max/Min distance for filter + VC.AddVar("MYLAT", args.MyLat); + VC.AddVar("MYLON", args.MyLon); + + double mindist = 0; + double maxdist = 0; + + // check the distance between MyLocation and edges of rect and take the maximum + maxdist = Math.Max(maxdist, LatLon.Distance(args.MyLat, args.MyLon, args.MinLat, args.MinLon)); + maxdist = Math.Max(maxdist, LatLon.Distance(args.MyLat, args.MyLon, args.MaxLat, args.MinLon)); + maxdist = Math.Max(maxdist, LatLon.Distance(args.MyLat, args.MyLon, args.MinLat, args.MaxLon)); + maxdist = Math.Max(maxdist, LatLon.Distance(args.MyLat, args.MyLon, args.MaxLat, args.MaxLon)); + + VC.AddVar("MINDISTKM", mindist); + VC.AddVar("MAXDISTKM", maxdist); + + VC.AddVar("LASTDV", LastDV); + + // initialize plane info list + PlaneFeedPluginPlaneInfoList planes = new PlaneFeedPluginPlaneInfoList(); + + string url = ""; + string json = ""; + + // if redundant servers --> calculate url according to redundancy and load sharing + if (!String.IsNullOrEmpty(Settings.URL2)) + { + if (!Settings.LoadShare) + { + // no load sharing --> use URL1 by default, use URL2 if anything goes wrong + try + { + DateTime start1 = DateTime.UtcNow; + + url = VC.ReplaceAllVars(Settings.URL); + Console.WriteLine("[" + this.GetType().Name + "]: Mode=REDUNDANCY, LoadShare=OFF"); + Console.WriteLine("[" + this.GetType().Name + "]: Creating web request: " + url); + + // get JSON data + json = VRSTlsClient.DownloadFile(url, Settings.Timeout * 1000, Settings.Username, Settings.Password); + + // aggregate loading time + Count1 += (long)(DateTime.UtcNow - start1).Milliseconds; + + } + catch (Exception ex) + { + DateTime start2 = DateTime.UtcNow; + + url = VC.ReplaceAllVars(Settings.URL2); + Console.WriteLine("[" + this.GetType().Name + "]: Mode=REDUNDANCY, LoadShare=OFF"); + Console.WriteLine("[" + this.GetType().Name + "]: Creating web request: " + url); + + // get JSON data + json = VRSTlsClient.DownloadFile(url, Settings.Timeout * 1000, Settings.Username, Settings.Password); + + // aggregate loading time + Count2 += (long)(DateTime.UtcNow - start2).Milliseconds; + } + + } + else + { + // load sharing --> use URL with lowest overall loading time first, use the other if anything goes wrong + if (Count1 <= Count2) + { + try + { + DateTime start1 = DateTime.UtcNow; + + url = VC.ReplaceAllVars(Settings.URL); + Console.WriteLine("[" + this.GetType().Name + "]: Mode=REDUNDANCY, LoadShare=ON, Count1=" + Count1.ToString() + ",Count2=" + Count2.ToString()); + Console.WriteLine("[" + this.GetType().Name + "]: Creating web request: " + url); + + // get JSON data + json = VRSTlsClient.DownloadFile(url, Settings.Timeout * 1000, Settings.Username, Settings.Password); + + // aggregate loading time + Count1 += (long)(DateTime.UtcNow - start1).Milliseconds; + + } + catch (Exception ex) + { + DateTime start2 = DateTime.UtcNow; + + url = VC.ReplaceAllVars(Settings.URL2); + Console.WriteLine("[" + this.GetType().Name + "]: Mode=REDUNDANCY, LoadShare=ON, Count1=" + Count1.ToString() + ",Count2=" + Count2.ToString()); + Console.WriteLine("[" + this.GetType().Name + "]: Creating web request: " + url); + + // get JSON data + json = VRSTlsClient.DownloadFile(url, Settings.Timeout * 1000, Settings.Username2, Settings.Password2); + + // aggregate loading time + Count2 += (long)(DateTime.UtcNow - start2).Milliseconds; + } + } + else + { + try + { + DateTime start2 = DateTime.UtcNow; + + url = VC.ReplaceAllVars(Settings.URL2); + Console.WriteLine("[" + this.GetType().Name + "]: Mode=REDUNDANCY, LoadShare=ON, Count1=" + Count1.ToString() + ",Count2=" + Count2.ToString()); + Console.WriteLine("[" + this.GetType().Name + "]: Creating web request: " + url); + + // get JSON data + json = VRSTlsClient.DownloadFile(url, Settings.Timeout * 1000, Settings.Username2, Settings.Password2); + + // aggregate loading time + Count2 += (long)(DateTime.UtcNow - start2).Milliseconds; + + } + catch (Exception ex) + { + DateTime start1 = DateTime.UtcNow; + + url = VC.ReplaceAllVars(Settings.URL); + Console.WriteLine("[" + this.GetType().Name + "]: Mode=REDUNDANCY, LoadShare=ON, Count1=" + Count1.ToString() + ",Count2=" + Count2.ToString()); + Console.WriteLine("[" + this.GetType().Name + "]: Creating web request: " + url); + + // get JSON data + json = VRSTlsClient.DownloadFile(url, Settings.Timeout * 1000, Settings.Username, Settings.Password); + + // aggregate loading time + Count1 += (long)(DateTime.UtcNow - start1).Milliseconds; + } + } + } + } + else + { + // no redundancy --> simple load from URL1 + + // reset counters + Count1 = 0; + Count2 = 0; + + url = VC.ReplaceAllVars(Settings.URL); + Console.WriteLine("[" + this.GetType().Name + "]: Mode=SIMPLE"); + Console.WriteLine("[" + this.GetType().Name + "]: Creating web request: " + url); + + // get JSON data + json = VRSTlsClient.DownloadFile(url, Settings.Timeout * 1000, Settings.Username, Settings.Password); + + } + + // save raw data to file if enabled + if (Settings.SaveToFile) + { + using (StreamWriter sw = new StreamWriter(args.TmpDirectory + Path.DirectorySeparatorChar + this.GetType().Name + "_" + DateTime.UtcNow.ToString("yyyy-MM-dd HH_mm_ss") + ".json")) + { + sw.WriteLine(json); + } + } + + // reset counters if before getting too near to overflow + if ((Count1 > long.MaxValue / 2) || (Count2 > long.MaxValue / 2)) + { + Count1 = 0; + Count2 = 0; + } + + bool writetofile = false; + + Console.WriteLine("[" + this.GetType().Name + "]: Analyzing data"); + try + { + // deserialize JSON + AircraftList = JsonConvert.DeserializeObject(json); + + // keep latest data version + LastDV = AircraftList.LastDataVersion; + + // get planes + foreach (VirtualRadar.Interface.WebSite.AircraftJson ac in AircraftList.Aircraft) + { + try + { + PlaneFeedPluginPlaneInfo plane = new PlaneFeedPluginPlaneInfo(); + // get hex first + plane.Hex = ac.Icao24.Trim().Replace("\"", ""); + // get position + plane.Lat = (ac.Latitude == null) ? double.NaN : (double)ac.Latitude; + plane.Lon = (ac.Longitude == null) ? double.NaN : (double)ac.Longitude; + // get altitude + if (Settings.UseGeoAlt) + { + plane.Alt = (ac.GeometricAltitude == null) ? int.MinValue : (int)ac.GeometricAltitude; + } + else + { + plane.Alt = (ac.Altitude == null) ? int.MinValue : (int)ac.Altitude; + } + // get callsign + plane.Call = ac.Callsign; + // get registration + plane.Reg = ac.Registration; + // get track + plane.Track = (ac.Track == null) ? double.NaN : (double)ac.Track; + // get speed + plane.Speed = (ac.GroundSpeed == null) ? double.NaN : (double)ac.GroundSpeed; + // get position timestamp + // CAUTION!! time is UNIX time in milliseconds + long l = (ac.PositionTime == null) ? long.MinValue : (long)ac.PositionTime; + if (l != long.MinValue) + { + DateTime timestamp = new System.DateTime(1970, 1, 1, 0, 0, 0, 0); + timestamp = timestamp.AddMilliseconds(l); + plane.Time = timestamp; + } + else + { + // skip plane if no valid timestamp found + continue; + } + // get type info + plane.Type = ac.Type; + // get extended plane type info + plane.Manufacturer = ac.Manufacturer; + plane.Model = ac.Model; + int cat = (ac.WakeTurbulenceCategory == null) ? int.MinValue : (int)ac.WakeTurbulenceCategory; + switch (cat) + { + case 1: plane.Category = 1; break; + case 2: plane.Category = 2; break; + case 3: plane.Category = 3; break; + case 4: plane.Category = 4; break; + default: plane.Category = 0; break; + } + // do correction of A380 as "SuperHeavy" is not supported + if (plane.Type == "A388") + plane.Category = 4; + // get country + plane.Country = ac.Icao24Country; + // get departure airport + plane.From = ac.Origin; + // get destination airport + plane.To = ac.Destination; + // get vertical speed + plane.VSpeed = (ac.VerticalRate == null) ? int.MinValue : (int)ac.VerticalRate; + + if (String.IsNullOrEmpty(plane.Reg)) + { + writetofile = true; + } + + // add plane to list + planes.Add(plane); + } + catch (Exception ex) + { + Console.WriteLine("[" + System.Reflection.MethodBase.GetCurrentMethod().Name + "]" + ex.Message); + } + } + } + catch (Exception ex) + { + // do nothing if something else goes wrong + } + Console.WriteLine("[" + this.GetType().Name + "]: Returning " + planes.Count + " planes"); + + return planes; + + } + + public void Stop(PlaneFeedPluginArgs args) + { + Settings.Save(true); + } + + + // end of Interface + + + /// + /// Decodes an OpenSSL-encrypted (AES256-CBC) string



+ /// The equivalent encoding in PHP is like:



+ /// $encrypt_method = "AES-256-CBC";

+ /// $secret_key = hash('md5',$key);

+ /// $encoded = openssl_encrypt($data, $encrypt_method, $secret_key); + ///
+ /// The encrypted string (Base64 encoded). + /// The password as a string. + /// + public static string OpenSSLDecrypt(string encrypteddata, string pwd) + { + // create a 32bit MD5 hash of the password + var hash = MD5.Create().ComputeHash(Encoding.UTF8.GetBytes(pwd)); + StringBuilder sb = new StringBuilder(); + // Loop through each byte of the hashed data + // and format each one as a hexadecimal string. + for (int i = 0; i < hash.Length; i++) + { + sb.Append(hash[i].ToString("x2")); + } + // use the MD5 hash as the key + byte[] key = Encoding.UTF8.GetBytes(sb.ToString()); + //get the encrypted data as byte[] + byte[] encrypted = Convert.FromBase64String(encrypteddata); + //setup an empty iv + var iv = new byte[16]; + // Declare the RijndaelManaged object used to decrypt the data. + RijndaelManaged aesAlg = null; + + // Declare the string used to hold the decrypted text. + string decrypted; + + // Create a RijndaelManaged object + // with the specified key and IV. + aesAlg = new RijndaelManaged { Mode = CipherMode.CBC, Padding = PaddingMode.PKCS7, KeySize = 256, BlockSize = 128, Key = key, IV = iv }; + + // Create a decrytor to perform the stream transform. + ICryptoTransform decryptor = aesAlg.CreateDecryptor(aesAlg.Key, aesAlg.IV); + // Create the streams used for decryption. + using (MemoryStream ms = new MemoryStream(encrypted)) + { + using (CryptoStream cs = new CryptoStream(ms, decryptor, CryptoStreamMode.Read)) + { + using (StreamReader sr = new StreamReader(cs)) + { + // Read the decrypted bytes from the decrypting stream + // and place them in a string. + decrypted = sr.ReadToEnd(); + sr.Close(); + } + } + } + // return decrypted string + return decrypted; + } + + [System.Diagnostics.DebuggerNonUserCode] + private string ReadPropertyString(dynamic o, string propertyname) + { + string s = null; + try + { + s = o[propertyname]; + } + catch + { + + } + return s; + } + + [System.Diagnostics.DebuggerNonUserCode] + private int ReadPropertyInt(dynamic o, string propertyname) + { + int i = int.MinValue; + double d = ReadPropertyDouble(o, propertyname); + if ((d != double.MinValue) && (d >= int.MinValue) && (d <= int.MaxValue)) + i = (int)d; + return i; + } + + [System.Diagnostics.DebuggerNonUserCode] + private double ReadPropertyDouble(dynamic o, string propertyname) + { + double d = double.MinValue; + try + { + string s = o[propertyname].ToString(CultureInfo.InvariantCulture); + d = double.Parse(s, CultureInfo.InvariantCulture); + } + catch + { + // do nothing if something went wrong + } + return d; + } + + [System.Diagnostics.DebuggerNonUserCode] + private long ReadPropertyLong(dynamic o, string propertyname) + { + long l = long.MinValue; + try + { + l = o[propertyname]; + } + catch + { + // do nothing if something went wrong + } + return l; + } + + [System.Diagnostics.DebuggerNonUserCode] + private bool ReadPropertyBool(dynamic o, string propertyname) + { + bool b = false; + try + { + string s = o[propertyname].ToString(); + b = s.ToLower() == "true"; + } + catch + { + // do nothing if something went wrong + } + return b; + } + + } + + + /// + /// //////////////////////////////////////////// Helpers //////////////////////////////////////////// + /// + + public static class SupportFunctions + { + public static int DateTimeToUNIXTime(DateTime dt) + { + if (dt == DateTime.MinValue) + return int.MinValue; + else if (dt == DateTime.MaxValue) + return int.MaxValue; + return (Int32)(dt.Subtract(new DateTime(1970, 1, 1))).TotalSeconds; + } + + } + + public static class LatLon + { + public class Earth + { + public static double Radius = 6371; + } + + public static double Distance(double mylat, double mylon, double lat, double lon) + { + double R = Earth.Radius; + double dLat = (mylat - lat); + double dLon = (mylon - lon); + double a = Math.Sin(dLat / 180 * Math.PI / 2) * Math.Sin(dLat / 180 * Math.PI / 2) + + Math.Sin(dLon / 180 * Math.PI / 2) * Math.Sin(dLon / 180 * Math.PI / 2) * Math.Cos(mylat / 180 * Math.PI) * Math.Cos(lat / 180 * Math.PI); + return R * 2 * Math.Atan2(Math.Sqrt(a), Math.Sqrt(1 - a)); + } + + + } + public static class UnitConverter + { + public static double ft_m(double feet) + { + return feet / 3.28084; + } + + public static double m_ft(double m) + { + return m * 3.28084; + } + + public static double kts_kmh(double kts) + { + return kts * 1.852; + } + + public static double kmh_kts(double kmh) + { + return kmh / 1.852; + } + + public static double km_mi(double km) + { + return km * 1.609; + } + + public static double mi_km(double mi) + { + return mi / 1.609; + } + } + + public class VarConverter : Dictionary + { + public readonly char VarSeparator = '%'; + + public void AddVar(string var, object value) + { + // adds a new var<>value pair to dictionary + object o; + if (this.TryGetValue(var, out o)) + { + // item found --> update value + o = value; + } + else + { + // item not found --> add new + this.Add(var, value); + } + } + + public object GetValue(string var) + { + // finds a var in dictionary and returns its value + object o; + if (this.TryGetValue(var, out o)) + { + // item found --> return value + return o; + } + // item not found --> return null + return null; + } + + public string ReplaceAllVars(string s) + { + // check for var separotors first + if (s.Contains(VarSeparator)) + { + // OK, string is containing vars --> crack the string first and replace vars + try + { + string[] a = s.Split(VarSeparator); + // as we are always using a pair of separators the length of a[] must be odd + if (a.Length % 2 == 0) + throw new ArgumentException("Number of separators is not an even number."); + // create new string and replace all vars (on odd indices) + s = ""; + for (int i = 0; i < a.Length; i++) + { + if (i % 2 == 0) + { + // cannot be not a var on that position + s = s + a[i]; + } + else + { + // var identifier: upper the string and try to convert + a[i] = a[i].ToUpper(); + object o; + if (this.TryGetValue(a[i], out o)) + { + // convert floating points with invariant culture info + if (o.GetType() == typeof(double)) + s = s + ((double)o).ToString(CultureInfo.InvariantCulture); + else if (o.GetType() == typeof(float)) + s = s + ((float)o).ToString(CultureInfo.InvariantCulture); + else + s = s + o.ToString(); + } + else + { + throw new ArgumentException("Var identifier not found: " + a[i]); + } + } + } + } + catch (Exception ex) + { + // throw an excecption + throw new ArgumentException("Error while parsing string for variables [" + ex.Message + "]: " + s); + } + } + return s; + } + + } + +} diff --git a/AirScout.PlaneFeeds.Plugin.VRSWebServer/app.config b/AirScout.PlaneFeeds.Plugin.VRSWebServer/app.config new file mode 100644 index 0000000..9d7f76a --- /dev/null +++ b/AirScout.PlaneFeeds.Plugin.VRSWebServer/app.config @@ -0,0 +1,61 @@ + + + + +
+ + + + + + Web feed from www.planefinder.net +See https://planefinder.net/ + +(c) AirScout (www.airscout.eu) + +This feed does not require a login or API key. + + + + [WebFeed] www.planefinder.net + + + This plane feed is being fetched from an Internet server via Deep Link +technology (see http://en.wikipedia.org/wiki/Deep_link). + +The use is not intended by the website owners and could be changed in URL and data format frequently and without further notice. +Furthermore, it might cause legal issues in some countries. + +By clicking on "Accept" you understand that you are + + DOING THAT ON YOUR OWN RISK + +The auhor of this software will not be responsible in any case. + + + + + + http://droidapp.pinkfroot.com/APPAPIDROID/v7/planeUpdateFAA.php?routetype=IATA&amp;FAA=1&amp;bounds=%MAXLAT%,%MINLAT%,%MINLON%,%MAXLON% + + + False + + + + + + True + + + False + + + False + + + 30 + + + + \ No newline at end of file diff --git a/AirScout.PlaneFeeds.Plugin.VRSWebServer/packages.config b/AirScout.PlaneFeeds.Plugin.VRSWebServer/packages.config new file mode 100644 index 0000000..5b6a88c --- /dev/null +++ b/AirScout.PlaneFeeds.Plugin.VRSWebServer/packages.config @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/AirScout.PlaneFeeds.Plugin/PlaneFeedPluginArguments.cs b/AirScout.PlaneFeeds.Plugin/PlaneFeedPluginArguments.cs index a0be4a6..56a2c18 100644 --- a/AirScout.PlaneFeeds.Plugin/PlaneFeedPluginArguments.cs +++ b/AirScout.PlaneFeeds.Plugin/PlaneFeedPluginArguments.cs @@ -12,6 +12,7 @@ namespace AirScout.PlaneFeeds.Plugin public string LogDirectory = ""; public string TmpDirectory = ""; public string DatabaseDirectory = ""; + public string PlanePositionsDirectory = ""; public double MaxLat = 0; public double MinLon = 0; @@ -32,6 +33,8 @@ namespace AirScout.PlaneFeeds.Plugin public string SessionKey; public string GetKeyURL; + public bool LogPlanePositions = false; + } } diff --git a/AirScout.PlaneFeeds/PlaneFeed.cs b/AirScout.PlaneFeeds/PlaneFeed.cs index ddb8e93..a45ddca 100644 --- a/AirScout.PlaneFeeds/PlaneFeed.cs +++ b/AirScout.PlaneFeeds/PlaneFeed.cs @@ -96,6 +96,7 @@ namespace AirScout.PlaneFeeds feedargs.LogDirectory = Arguments.LogDirectory; feedargs.TmpDirectory = Arguments.TmpDirectory; feedargs.DatabaseDirectory = Arguments.DatabaseDirectory; + feedargs.PlanePositionsDirectory = Arguments.PlanePositionsDirectory; feedargs.MaxLat = Arguments.MaxLat; feedargs.MinLon = Arguments.MinLon; feedargs.MinLat = Arguments.MinLat; @@ -110,6 +111,7 @@ namespace AirScout.PlaneFeeds feedargs.InstanceID = Arguments.InstanceID; feedargs.SessionKey = Arguments.SessionKey; feedargs.GetKeyURL = Arguments.GetKeyURL; + feedargs.LogPlanePositions = Arguments.LogPlanePositions; // do start procedure Arguments.Feed.Start(feedargs); @@ -124,9 +126,13 @@ namespace AirScout.PlaneFeeds // get plane raw data and do addtional checks PlaneFeedPluginPlaneInfoList acs = Arguments.Feed.GetPlanes(feedargs); PlaneInfoList planes = new PlaneInfoList(); + PlaneInfoList invalids = new PlaneInfoList(); int total = acs.Count; int count = 0; int errors = 0; + double track = 0; + double dist = 0; + foreach (PlaneFeedPluginPlaneInfo ac in acs) { // skip without error when on ground @@ -167,6 +173,7 @@ namespace AirScout.PlaneFeeds { if (Arguments.LogErrors) Log.WriteMessage("Incorrect aircraft data received [Hex]: " + plane.Hex, LogLevel.Warning); + invalids.Add(plane); errors++; continue; } @@ -174,7 +181,8 @@ namespace AirScout.PlaneFeeds if (ad == null) { if (Arguments.LogErrors) - Log.WriteMessage("Incorrect aircraft data received [Hex]: " + plane.Hex, LogLevel.Warning); + Log.WriteMessage("Incorrect aircraft data received [Reg]: " + plane.Reg, LogLevel.Warning); + invalids.Add(plane); errors++; continue; } @@ -185,6 +193,7 @@ namespace AirScout.PlaneFeeds { if (Arguments.LogErrors) Log.WriteMessage("Incorrect aircraft data received [Lat]: " + plane.Lat.ToString("F8", CultureInfo.InvariantCulture), LogLevel.Warning); + invalids.Add(plane); errors++; continue; } @@ -196,6 +205,7 @@ namespace AirScout.PlaneFeeds { if (Arguments.LogErrors) Log.WriteMessage("Incorrect aircraft data received [Lon]: " + plane.Lon.ToString("F8", CultureInfo.InvariantCulture), LogLevel.Warning); + invalids.Add(plane); errors++; continue; } @@ -215,6 +225,7 @@ namespace AirScout.PlaneFeeds { if (Arguments.LogErrors) Log.WriteMessage("Incorrect aircraft data received [Alt]: " + plane.Alt.ToString("F8", CultureInfo.InvariantCulture), LogLevel.Warning); + invalids.Add(plane); errors++; continue; } @@ -275,6 +286,7 @@ namespace AirScout.PlaneFeeds { if (Arguments.LogErrors) Log.WriteMessage("Incorrect aircraft data received [Track]: " + plane.Track.ToString("F8", CultureInfo.InvariantCulture), LogLevel.Warning); + invalids.Add(plane); errors++; continue; } @@ -291,6 +303,7 @@ namespace AirScout.PlaneFeeds { if (Arguments.LogErrors) Log.WriteMessage("Incorrect aircraft data received [Speed]: " + plane.Speed.ToString("F8", CultureInfo.InvariantCulture), LogLevel.Warning); + invalids.Add(plane); errors++; continue; } @@ -334,17 +347,118 @@ namespace AirScout.PlaneFeeds // remove manufacturer info if part of model description if (plane.Model.StartsWith(plane.Manufacturer)) plane.Model = plane.Model.Remove(0, plane.Manufacturer.Length).Trim(); + // check position against estimated position from last konwn if possible - PlaneInfo oldplane = PlanePositions.Get(plane.Hex, plane.Time, 5); - double dist = 0; - if (Arguments.ExtendedPlausibilityCheck_Enable && (oldplane != null) && ((dist = LatLon.Distance(oldplane.Lat, oldplane.Lon, plane.Lat, plane.Lon)) > Arguments.ExtendedPlausiblityCheck_MaxErrorDist)) + PlaneInfo estplane = null; + PlaneInfo lastplane = null; + if (PlanePositions.ContainsKey(plane.Hex)) { - // report error - if (Arguments.LogErrors) - Log.WriteMessage("Incorrect aircraft position received [(" + oldplane.Lat.ToString("F8") + "," + oldplane.Lon.ToString("F8") + ")<" + dist.ToString("F0") + "km>(" + plane.Lat.ToString("F8") + "," + plane.Lon.ToString("F8") + ")]: " + plane.ToString(), LogLevel.Warning); - errors++; - continue; + lastplane = PlanePositions[plane.Hex]; + if ((plane.Time - lastplane.Time).TotalSeconds > 300) + lastplane = null; + estplane = PlanePositions.Get(plane.Hex, plane.Time, 5); } + if (Arguments.ExtendedPlausibilityCheck_Enable && (lastplane != null) && (estplane != null)) + { + // estimate the track value from location change + track = LatLon.Bearing(lastplane.Lat, lastplane.Lon, plane.Lat, plane.Lon); + + // estimate the distance between estimated position and reported position + dist = LatLon.Distance(estplane.Lat, estplane.Lon, plane.Lat, plane.Lon); + + // Check track + if (Math.Abs(((track <= 180) ? track : 360 - track) - ((plane.Track <= 180) ? plane.Track : 360 - plane.Track)) > 45) + { + + plane.Track = track; + + // report error + if (Arguments.LogErrors) + Log.WriteMessage("Incorrect aircraft track received [(" + lastplane.Track.ToString("F0") + "<>" + plane.Track.ToString("F0"), LogLevel.Warning); + + invalids.Add(plane); + + errors++; + continue; + } + + // check distance + if (Math.Abs(dist) > Arguments.ExtendedPlausiblityCheck_MaxErrorDist * (plane.Time - lastplane.Time).TotalMinutes) + { + Console.WriteLine("[Error " + errors + "] : Distance " + dist); + // report error + if (Arguments.LogErrors) + { + invalids.Add(plane); + Log.WriteMessage("Incorrect aircraft position received [(" + lastplane.Lat.ToString("F8") + "," + lastplane.Lon.ToString("F8") + ")<" + dist.ToString("F0") + "km>(" + plane.Lat.ToString("F8") + "," + plane.Lon.ToString("F8") + ")]: " + plane.ToString(), LogLevel.Warning); + } + + invalids.Add(plane); + + errors++; + continue; + } + + } + + if (feedargs.LogPlanePositions) + { + // extended logging + string filename = Path.Combine(feedargs.PlanePositionsDirectory, plane.Hex + ".csv"); + + if (!File.Exists(filename)) + { + File.WriteAllText(filename, "Time;TimeD;Hex;Lat;LatD;Lon;LonD;Alt;AltD;Track;TrackD;Speed;SpeedD;Call;Reg;From;To;VSpeed;CalcTrack;CalcDist" + Environment.NewLine); + } + try + { + double timed = 0; + double latd = 0; + double lond = 0; + double altd = 0; + double spdd = 0; + double trkd = 0; + + if (lastplane != null) + { + timed = (lastplane.Time - plane.Time).TotalSeconds; + latd = lastplane.Lat - plane.Lat; + lond = lastplane.Lon - plane.Lon; + altd = lastplane.Alt - plane.Alt; + spdd = lastplane.Speed - plane.Speed; + trkd = lastplane.Track - plane.Track; + } + + string csv = plane.Time + ";" + + timed + ";" + + plane.Hex + ";" + + plane.Lat + ";" + + latd + ";" + + plane.Lon + ";" + + lond + ";" + + plane.Alt + ";" + + altd + ";" + + plane.Track + ";" + + trkd + ";" + + plane.Speed + ";" + + spdd + ";" + + plane.Call + ";" + + plane.Reg + ";" + + plane.From + ";" + + plane.To + ";" + + plane.VSpeed + ";" + + track + ";" + + dist + + Environment.NewLine; + + File.AppendAllText(filename, csv); + } + catch + { + + } + } + // all checks successfully done --> add plane to list planes.Add(plane); count++; @@ -369,6 +483,7 @@ namespace AirScout.PlaneFeeds // write all planes to file try { + // simple logging using (StreamWriter sw = new StreamWriter(Path.Combine(Arguments.TmpDirectory, "planes.csv"))) { sw.WriteLine("Time;Hex;Lat;Lon;Alt;Track;Speed;Call;Reg;From;To;VSpeed"); diff --git a/AirScout.PlaneFeeds/PlaneFeedWorkEventArgs.cs b/AirScout.PlaneFeeds/PlaneFeedWorkEventArgs.cs index b02a4b9..041c7a5 100644 --- a/AirScout.PlaneFeeds/PlaneFeedWorkEventArgs.cs +++ b/AirScout.PlaneFeeds/PlaneFeedWorkEventArgs.cs @@ -17,6 +17,7 @@ namespace AirScout.PlaneFeeds public string LogDirectory = ""; public string TmpDirectory = ""; public string DatabaseDirectory = ""; + public string PlanePositionsDirectory = ""; // Scope für plane positions public double MaxLat = 0; @@ -47,6 +48,9 @@ namespace AirScout.PlaneFeeds public string SessionKey; public string GetKeyURL; + // Log plane positions to file + public bool LogPlanePositions = false; + } } diff --git a/AirScout.sln b/AirScout.sln index 1e1dee8..58cb06d 100644 --- a/AirScout.sln +++ b/AirScout.sln @@ -81,6 +81,10 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AirScout.CAT", "AirScout.CA EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AirScout.PlaneFeeds.Plugin.AirScoutServer", "AirScout.PlaneFeeds.Plugin.AirScoutServer\AirScout.PlaneFeeds.Plugin.AirScoutServer.csproj", "{692CAF08-26D0-4D41-9CAC-BDA8D8BE6125}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AirScout.PlaneFeeds.Plugin.RadarVirtuel", "AirScout.PlaneFeeds.Plugin.RadarVirtuel\AirScout.PlaneFeeds.Plugin.RadarVirtuel.csproj", "{1F2A3BE9-9349-4478-BA6E-0BC842615B3B}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AirScout.PlaneFeeds.Plugin.VRSWebServer", "AirScout.PlaneFeeds.Plugin.VRSWebServer\AirScout.PlaneFeeds.Plugin.VRSWebServer.csproj", "{5C096747-2BF0-4D36-BAA7-226CF71619A4}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -776,6 +780,42 @@ Global {692CAF08-26D0-4D41-9CAC-BDA8D8BE6125}.WSL|Mixed Platforms.Build.0 = Debug|Any CPU {692CAF08-26D0-4D41-9CAC-BDA8D8BE6125}.WSL|x86.ActiveCfg = Debug|Any CPU {692CAF08-26D0-4D41-9CAC-BDA8D8BE6125}.WSL|x86.Build.0 = Debug|Any CPU + {1F2A3BE9-9349-4478-BA6E-0BC842615B3B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {1F2A3BE9-9349-4478-BA6E-0BC842615B3B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {1F2A3BE9-9349-4478-BA6E-0BC842615B3B}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {1F2A3BE9-9349-4478-BA6E-0BC842615B3B}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {1F2A3BE9-9349-4478-BA6E-0BC842615B3B}.Debug|x86.ActiveCfg = Debug|Any CPU + {1F2A3BE9-9349-4478-BA6E-0BC842615B3B}.Debug|x86.Build.0 = Debug|Any CPU + {1F2A3BE9-9349-4478-BA6E-0BC842615B3B}.Release|Any CPU.ActiveCfg = Release|Any CPU + {1F2A3BE9-9349-4478-BA6E-0BC842615B3B}.Release|Any CPU.Build.0 = Release|Any CPU + {1F2A3BE9-9349-4478-BA6E-0BC842615B3B}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {1F2A3BE9-9349-4478-BA6E-0BC842615B3B}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {1F2A3BE9-9349-4478-BA6E-0BC842615B3B}.Release|x86.ActiveCfg = Release|Any CPU + {1F2A3BE9-9349-4478-BA6E-0BC842615B3B}.Release|x86.Build.0 = Release|Any CPU + {1F2A3BE9-9349-4478-BA6E-0BC842615B3B}.WSL|Any CPU.ActiveCfg = Debug|Any CPU + {1F2A3BE9-9349-4478-BA6E-0BC842615B3B}.WSL|Any CPU.Build.0 = Debug|Any CPU + {1F2A3BE9-9349-4478-BA6E-0BC842615B3B}.WSL|Mixed Platforms.ActiveCfg = Debug|Any CPU + {1F2A3BE9-9349-4478-BA6E-0BC842615B3B}.WSL|Mixed Platforms.Build.0 = Debug|Any CPU + {1F2A3BE9-9349-4478-BA6E-0BC842615B3B}.WSL|x86.ActiveCfg = Debug|Any CPU + {1F2A3BE9-9349-4478-BA6E-0BC842615B3B}.WSL|x86.Build.0 = Debug|Any CPU + {5C096747-2BF0-4D36-BAA7-226CF71619A4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {5C096747-2BF0-4D36-BAA7-226CF71619A4}.Debug|Any CPU.Build.0 = Debug|Any CPU + {5C096747-2BF0-4D36-BAA7-226CF71619A4}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {5C096747-2BF0-4D36-BAA7-226CF71619A4}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {5C096747-2BF0-4D36-BAA7-226CF71619A4}.Debug|x86.ActiveCfg = Debug|Any CPU + {5C096747-2BF0-4D36-BAA7-226CF71619A4}.Debug|x86.Build.0 = Debug|Any CPU + {5C096747-2BF0-4D36-BAA7-226CF71619A4}.Release|Any CPU.ActiveCfg = Release|Any CPU + {5C096747-2BF0-4D36-BAA7-226CF71619A4}.Release|Any CPU.Build.0 = Release|Any CPU + {5C096747-2BF0-4D36-BAA7-226CF71619A4}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {5C096747-2BF0-4D36-BAA7-226CF71619A4}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {5C096747-2BF0-4D36-BAA7-226CF71619A4}.Release|x86.ActiveCfg = Release|Any CPU + {5C096747-2BF0-4D36-BAA7-226CF71619A4}.Release|x86.Build.0 = Release|Any CPU + {5C096747-2BF0-4D36-BAA7-226CF71619A4}.WSL|Any CPU.ActiveCfg = Debug|Any CPU + {5C096747-2BF0-4D36-BAA7-226CF71619A4}.WSL|Any CPU.Build.0 = Debug|Any CPU + {5C096747-2BF0-4D36-BAA7-226CF71619A4}.WSL|Mixed Platforms.ActiveCfg = Debug|Any CPU + {5C096747-2BF0-4D36-BAA7-226CF71619A4}.WSL|Mixed Platforms.Build.0 = Debug|Any CPU + {5C096747-2BF0-4D36-BAA7-226CF71619A4}.WSL|x86.ActiveCfg = Debug|Any CPU + {5C096747-2BF0-4D36-BAA7-226CF71619A4}.WSL|x86.Build.0 = Debug|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/AirScout/AirScout - Kopie.csproj b/AirScout/AirScout - Kopie.csproj new file mode 100644 index 0000000..d1d668f --- /dev/null +++ b/AirScout/AirScout - Kopie.csproj @@ -0,0 +1,4077 @@ + + + + Debug + x86 + 8.0.30703 + 2.0 + {17498590-2CFF-4D24-BFB8-549D14BD2545} + WinExe + Properties + AirScout + AirScout + v4.0 + + + 512 + false + + + publish\ + false + Disk + false + Foreground + 7 + Days + false + false + true + http://www.dl0gth.de/software/airscout + en-GB + AirScout + DL2ALF + 0 + 1.0.0.0 + false + true + true + + + x86 + true + portable + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + false + false + + + x86 + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + false + + + 63A018CBEFF856D37BB8205182B79FA75AC368C1 + + + AirScout_TemporaryKey.pfx + + + false + + + false + + + AirScout.Program + + + Main.ico + + + true + bin\Debug\ + DEBUG;TRACE + portable + AnyCPU + false + prompt + false + false + false + false + + + bin\Release\ + TRACE + true + pdbonly + AnyCPU + prompt + false + + + LocalIntranet + + + Properties\app.manifest + + + true + bin\x86\WSL\ + DEBUG;TRACE + portable + x86 + false + 7.3 + prompt + + + true + bin\WSL\ + DEBUG;TRACE + portable + AnyCPU + false + 7.3 + prompt + false + false + + + + ..\packages\DeviceId.4.5.0\lib\net40\DeviceId.dll + + + ..\packages\ajayumi.MimeTypeMap.2.5.0\lib\net40\MimeTypes.dll + + + ..\packages\Newtonsoft.Json.13.0.1\lib\net40\Newtonsoft.Json.dll + + + + + + + + ..\packages\System.Data.SQLite.Core.1.0.112.0\lib\net40\System.Data.SQLite.dll + + + + + + + + + + + + + + + + + + + Form + + + DeleteSingleStationDlg.cs + + + + + Form + + + Form + + + CleanupDlg.cs + + + Form + + + CrossingHistoryDlg.cs + + + Form + + + DatabaseEditDlg.cs + + + Form + + + DatabaseMaintenanceDlg.cs + + + Form + + + LocalObstructionsDlg.cs + + + Form + + + MapStationDlg.cs + + + Form + + + Form + + + ElevationCopyrightDlg.cs + + + Form + + + FirstRunWizard.cs + + + Form + + + LicenseDlg.cs + + + Component + + + PercentageControl.cs + + + Form + + + PlaneFeedDisclaimerDlg.cs + + + Form + + + HistoryFromURLDlg.cs + + + Form + + + HorizonDlg.cs + + + Form + + + MapDlg.cs + + + Form + + + MapProviderDlg.cs + + + Form + + + PlaneFeedSettingsDlg.cs + + + Form + + + OptionsDlg.cs + + + Form + + + PlaneHistoryDlg.cs + + + + + + Form + + + ReflectionDlg.cs + + + Form + + + AircraftDatabaseMaintenanceDlg.cs + + + Form + + + ScoutBaseDatabaseMaintenanceDlg.cs + + + Form + + + SetTimeDlg.cs + + + + Form + + + Splash.cs + + + + + Form + + + TrafficDlg.cs + + + + Form + + + WatchlistDlg.cs + + + Form + + + + PreserveNewest + + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + + + Always + + + Always + + + + + + + + Always + + + CleanupDlg.cs + + + CrossingHistoryDlg.cs + + + DatabaseEditDlg.cs + + + DatabaseMaintenanceDlg.cs + + + DeleteSingleStationDlg.cs + + + ElevationCopyrightDlg.cs + + + FirstRunWizard.cs + + + LicenseDlg.cs + + + LocalObstructionsDlg.cs + + + MapStationDlg.cs + + + PercentageControl.cs + + + PlaneFeedDisclaimerDlg.cs + + + HistoryFromURLDlg.cs + + + HorizonDlg.cs + + + MapDlg.cs + + + MapProviderDlg.cs + + + OptionsDlg.cs + + + PlaneFeedSettingsDlg.cs + + + PlaneHistoryDlg.cs + + + ResXFileCodeGenerator + Resources.Designer.cs + Designer + + + True + Resources.resx + True + + + ReflectionDlg.cs + + + AircraftDatabaseMaintenanceDlg.cs + + + ScoutBaseDatabaseMaintenanceDlg.cs + + + SetTimeDlg.cs + + + Splash.cs + + + TrafficDlg.cs + + + WatchlistDlg.cs + + + + Always + + + Always + + + Always + + + + + + + SettingsSingleFileGenerator + Settings.Designer.cs + Designer + + + True + Settings.settings + True + + + + + {199c12c4-3eef-4d08-bac3-f2a62bcf969c} + AeroWizard + + + {be467e28-c202-4d71-bb17-9086861ad75f} + AirScout.AircraftPositions + + + {288a26ec-b690-41a2-84e5-61c9b7b74046} + AirScout.Aircrafts + + + {ffdec390-7bbc-4dec-9826-1dd04279f3fa} + AirScout.CAT + + + {41b66be4-6086-4ae3-be31-c81ee6b10154} + AirScout.Core + + + {36945dbd-96c8-41e7-9168-f83c42e67af3} + AirScout.PlaneFeeds.Plugin + + + {ea78ad40-1505-406f-8049-744e58d93f54} + AirScout.PlaneFeeds + + + {3d34943b-caca-426d-9fc0-661531668e87} + AirScout.Signals + + + {80c7dc34-e1f6-4da8-affb-904c06a3623b} + CustomScrollBar + + + {d3b0ad67-44d8-4b3d-bed9-ce1fd6de2c5a} + Zip DLL + + + {99510ed5-99e0-405d-bcac-9159a7426d61} + Orbit.Core + + + {baa5fe10-3e3a-4d5d-ab3d-4b50d6ac0321} + Orbit + + + {8bc521ad-81cf-4e6c-8898-be67527e7064} + OxyPlot.WindowsForms + + + {507de008-21ac-469b-bc30-23b239832af6} + OxyPlot + + + {c9291203-b5d0-4179-888d-04bc670b158f} + ScoutBase.CAT + + + {EE86E933-D883-4B18-80EB-0FBA55EC67C6} + ScoutBase.Core + + + {89e6c7a3-6064-479e-a710-37c7293cf47c} + ScoutBase.Database + + + {009cabfd-726d-481f-972d-0a218e0ad9b9} + ScoutBase.Elevation + + + {b3b005a5-cc05-430b-b966-20be5e5985bf} + ScoutBase.Maps + + + {610db007-5f74-4b5d-8b71-5e2c163a99b3} + ScoutBase.Propagation + + + {358e87d7-849f-412a-b487-f7b7d585a7f9} + ScoutBase.Stations + + + {6056D3BE-7002-4A6A-A9EA-6FF45122A3C7} + SQLiteDatabase + + + {0E5542E0-FC5D-4F67-950D-9F28C5D1225A} + AquaGauge + + + {CD637EDA-E0C3-4ABF-8E24-A5B94892311C} + CubicSpline + + + {D0C39D9D-BED0-418B-9A5E-713176CAF40C} + GMap.NET.Core + + + {E06DEF77-F933-42FB-AFD7-DB2D0D8D6A98} + GMap.NET.WindowsForms + + + {D77772F9-3D3D-40BA-B95F-05C45878078F} + NDde + + + {ef2eb181-4d5b-4418-a280-bfa1d53550be} + SerializableGenerics + + + {7B815C51-6896-4989-BD1B-8D2D7A116AA3} + WinTest + + + + + + + + + + + False + Microsoft .NET Framework 4 Client Profile %28x86 und x64%29 + true + + + False + .NET Framework 3.5 SP1 Client Profile + false + + + False + .NET Framework 3.5 SP1 + false + + + False + Windows Installer 3.1 + true + + + + + PreserveNewest + + + + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + + + + + + + + + Dieses Projekt verweist auf mindestens ein NuGet-Paket, das auf diesem Computer fehlt. Verwenden Sie die Wiederherstellung von NuGet-Paketen, um die fehlenden Dateien herunterzuladen. Weitere Informationen finden Sie unter "http://go.microsoft.com/fwlink/?LinkID=322105". Die fehlende Datei ist "{0}". + + + + + \ No newline at end of file diff --git a/AirScout/AirScout.csproj b/AirScout/AirScout.csproj index e6f753b..7fadbfd 100644 --- a/AirScout/AirScout.csproj +++ b/AirScout/AirScout.csproj @@ -131,6 +131,9 @@ ..\packages\DeviceId.4.5.0\lib\net40\DeviceId.dll + + ..\packages\ajayumi.MimeTypeMap.2.5.0\lib\net40\MimeTypes.dll + ..\packages\Newtonsoft.Json.13.0.1\lib\net40\Newtonsoft.Json.dll @@ -332,10 +335,25 @@ Form + PreserveNewest + + Always + + + Always + + + Always + + + Always + + + Always @@ -620,6 +638,3422 @@ + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + diff --git a/AirScout/MapDlg.Designer.cs b/AirScout/MapDlg.Designer.cs index a556535..488cfc2 100644 --- a/AirScout/MapDlg.Designer.cs +++ b/AirScout/MapDlg.Designer.cs @@ -30,8 +30,8 @@ { this.components = new System.ComponentModel.Container(); System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MapDlg)); - ScoutBase.Core.LatLon.GPoint gPoint7 = new ScoutBase.Core.LatLon.GPoint(); - ScoutBase.Core.LatLon.GPoint gPoint8 = new ScoutBase.Core.LatLon.GPoint(); + ScoutBase.Core.LatLon.GPoint gPoint3 = new ScoutBase.Core.LatLon.GPoint(); + ScoutBase.Core.LatLon.GPoint gPoint4 = new ScoutBase.Core.LatLon.GPoint(); this.il_Main = new System.Windows.Forms.ImageList(this.components); this.ti_Progress = new System.Windows.Forms.Timer(this.components); this.sc_Map = new System.Windows.Forms.SplitContainer(); @@ -181,7 +181,7 @@ this.bw_Analysis_FileSaver = new System.ComponentModel.BackgroundWorker(); this.bw_Analysis_FileLoader = new System.ComponentModel.BackgroundWorker(); this.bw_AirportMapper = new System.ComponentModel.BackgroundWorker(); - this.bw_LocatorGridUpdater = new System.ComponentModel.BackgroundWorker(); + this.tsl_Database_LED_Rig = new System.Windows.Forms.ToolStripStatusLabel(); ((System.ComponentModel.ISupportInitialize)(this.sc_Map)).BeginInit(); this.sc_Map.Panel1.SuspendLayout(); this.sc_Map.Panel2.SuspendLayout(); @@ -1091,6 +1091,7 @@ this.tsl_Database, this.tsl_Database_LED_Aircraft, this.tsl_Database_LED_Stations, + this.tsl_Database_LED_Rig, this.tsl_Database_LED_GLOBE, this.tsl_Database_LED_SRTM3, this.tsl_Database_LED_SRTM1, @@ -1113,7 +1114,7 @@ | System.Windows.Forms.ToolStripStatusLabelBorderSides.Bottom))); this.tsl_Status.BorderStyle = System.Windows.Forms.Border3DStyle.SunkenInner; this.tsl_Status.Name = "tsl_Status"; - this.tsl_Status.Size = new System.Drawing.Size(606, 19); + this.tsl_Status.Size = new System.Drawing.Size(561, 19); this.tsl_Status.Spring = true; this.tsl_Status.Text = "No Messages."; this.tsl_Status.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; @@ -1220,8 +1221,8 @@ this.tsl_Database_LED_ASTER3.Margin = new System.Windows.Forms.Padding(1, 5, 1, 5); this.tsl_Database_LED_ASTER3.Name = "tsl_Database_LED_ASTER3"; this.tsl_Database_LED_ASTER3.Size = new System.Drawing.Size(12, 14); - this.tsl_Database_LED_ASTER3.Text = " SRTM3 database status LED"; - this.tsl_Database_LED_ASTER3.ToolTipText = "SRTM3 database status LED"; + this.tsl_Database_LED_ASTER3.Text = " ASTER3 database status LED"; + this.tsl_Database_LED_ASTER3.ToolTipText = "ASTER3 database status LED"; // // tsl_Database_LED_ASTER1 // @@ -1233,8 +1234,8 @@ this.tsl_Database_LED_ASTER1.Margin = new System.Windows.Forms.Padding(1, 5, 1, 5); this.tsl_Database_LED_ASTER1.Name = "tsl_Database_LED_ASTER1"; this.tsl_Database_LED_ASTER1.Size = new System.Drawing.Size(12, 14); - this.tsl_Database_LED_ASTER1.Text = " SRTM3 database status LED"; - this.tsl_Database_LED_ASTER1.ToolTipText = "SRTM3 database status LED"; + this.tsl_Database_LED_ASTER1.Text = "ASTER1 database status LED"; + this.tsl_Database_LED_ASTER1.ToolTipText = "ASTER1 database status LED"; // // tsl_Track // @@ -1701,7 +1702,7 @@ this.cb_DXLoc.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.cb_DXLoc.ForeColor = System.Drawing.SystemColors.WindowText; this.cb_DXLoc.FormattingEnabled = true; - this.cb_DXLoc.GeoLocation = gPoint7; + this.cb_DXLoc.GeoLocation = gPoint3; this.cb_DXLoc.Location = new System.Drawing.Point(3, 154); this.cb_DXLoc.Name = "cb_DXLoc"; this.cb_DXLoc.Precision = 3; @@ -1725,7 +1726,7 @@ this.cb_MyLoc.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.cb_MyLoc.ForeColor = System.Drawing.SystemColors.WindowText; this.cb_MyLoc.FormattingEnabled = true; - this.cb_MyLoc.GeoLocation = gPoint8; + this.cb_MyLoc.GeoLocation = gPoint4; this.cb_MyLoc.Location = new System.Drawing.Point(3, 71); this.cb_MyLoc.Name = "cb_MyLoc"; this.cb_MyLoc.Precision = 3; @@ -2054,13 +2055,18 @@ this.bw_AirportMapper.ProgressChanged += new System.ComponentModel.ProgressChangedEventHandler(this.bw_AirportMapper_ProgressChanged); this.bw_AirportMapper.RunWorkerCompleted += new System.ComponentModel.RunWorkerCompletedEventHandler(this.bw_AirportMapper_RunWorkerCompleted); // - // bw_LocatorGridUpdater + // tsl_Database_LED_Rig // - this.bw_LocatorGridUpdater.WorkerReportsProgress = true; - this.bw_LocatorGridUpdater.WorkerSupportsCancellation = true; - this.bw_LocatorGridUpdater.DoWork += new System.ComponentModel.DoWorkEventHandler(this.bw_LocatorGridUpdater_DoWork); - this.bw_LocatorGridUpdater.ProgressChanged += new System.ComponentModel.ProgressChangedEventHandler(this.bw_LocatorGridUpdater_ProgressChanged); - this.bw_LocatorGridUpdater.RunWorkerCompleted += new System.ComponentModel.RunWorkerCompletedEventHandler(this.bw_LocatorGridUpdater_RunWorkerCompleted); + this.tsl_Database_LED_Rig.AutoSize = false; + this.tsl_Database_LED_Rig.BackColor = System.Drawing.Color.Plum; + this.tsl_Database_LED_Rig.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.None; + this.tsl_Database_LED_Rig.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tsl_Database_LED_Rig.Image = ((System.Drawing.Image)(resources.GetObject("tsl_Database_LED_Rig.Image"))); + this.tsl_Database_LED_Rig.Margin = new System.Windows.Forms.Padding(1, 5, 1, 5); + this.tsl_Database_LED_Rig.Name = "tsl_Database_LED_Rig"; + this.tsl_Database_LED_Rig.Size = new System.Drawing.Size(12, 14); + this.tsl_Database_LED_Rig.Text = "Rig database status LED"; + this.tsl_Database_LED_Rig.ToolTipText = "Rig database status LED"; // // MapDlg // @@ -2281,7 +2287,7 @@ private System.Windows.Forms.ToolStripStatusLabel tsl_CAT; private System.Windows.Forms.ToolStripStatusLabel tsl_Rot; private System.Windows.Forms.ToolStripStatusLabel tsl_Track; - private System.ComponentModel.BackgroundWorker bw_LocatorGridUpdater; + private System.Windows.Forms.ToolStripStatusLabel tsl_Database_LED_Rig; } } diff --git a/AirScout/MapDlg.cs b/AirScout/MapDlg.cs index 589122b..0a3d99b 100644 --- a/AirScout/MapDlg.cs +++ b/AirScout/MapDlg.cs @@ -82,6 +82,7 @@ using AirScout.Signals; using AirScout.PlaneFeeds.Plugin.MEFContract; using AirScout.CAT; using System.Security.RightsManagement; +using System.Web; namespace AirScout { @@ -292,6 +293,49 @@ namespace AirScout } } + [CategoryAttribute("Directories")] + [DescriptionAttribute("Plane Positions Directory")] + public string PlanePositionsDirectory + { + get + { + // get Property + string posdir = Properties.Settings.Default.Planes_PositionsDirectory; + // replace Windows/Linux directory spearator chars + posdir = posdir.Replace('\\', Path.DirectorySeparatorChar); + posdir = posdir.Replace('/', Path.DirectorySeparatorChar); + // set to default value if empty + if (String.IsNullOrEmpty(posdir)) + posdir = "PlanePositions"; + // replace variables, if any + posdir = VC.ReplaceAllVars(posdir); + // remove directory separator chars at begin and end + posdir = posdir.TrimStart(Path.DirectorySeparatorChar); + posdir = posdir.TrimEnd(Path.DirectorySeparatorChar); + // fully qualify path + if (!posdir.Contains(Path.VolumeSeparatorChar)) + posdir = Path.Combine(AppDataDirectory, TmpDirectory, posdir); + return posdir; + } + } + + [CategoryAttribute("Directories")] + [DescriptionAttribute("Web Server Directory")] + public string WebserverDirectory + { + get + { + if (Debugger.IsAttached) + { + // use source code directory when in debug mode + string dir = Path.Combine(Directory.GetParent(Directory.GetCurrentDirectory()).Parent.FullName, "wwwroot"); + return dir; + } + else + return Path.Combine(Application.StartupPath, "wwwroot"); + } + } + [CategoryAttribute("General")] [DescriptionAttribute("Main Splitter Distance")] private int MainSplitterDistance @@ -771,6 +815,22 @@ namespace AirScout Directory.CreateDirectory(PluginDirectory); if (!Directory.Exists(RigDirectory)) Directory.CreateDirectory(RigDirectory); + if (!Directory.Exists(PlanePositionsDirectory)) + Directory.CreateDirectory(PlanePositionsDirectory); + + // cleanup plane positions directory + string[] files = Directory.GetFiles(PlanePositionsDirectory, "*.*", SearchOption.TopDirectoryOnly); + foreach (string file in files) + { + try + { + File.Delete(file); + } + catch + { + // do nothing + } + } } private void CopyPluginWithPDB(string src, string dst) @@ -1923,6 +1983,7 @@ namespace AirScout feedargs.LogDirectory = LogDirectory; feedargs.TmpDirectory = TmpDirectory; feedargs.DatabaseDirectory = DatabaseDirectory; + feedargs.PlanePositionsDirectory = PlanePositionsDirectory; feedargs.MaxLat = Properties.Settings.Default.MaxLat; feedargs.MinLon = Properties.Settings.Default.MinLon; feedargs.MinLat = Properties.Settings.Default.MinLat; @@ -1941,6 +2002,7 @@ namespace AirScout feedargs.InstanceID = Properties.Settings.Default.AirScout_Instance_ID; feedargs.SessionKey = SessionKey; feedargs.GetKeyURL = Properties.Settings.Default.AirScout_GetKey_URL; + feedargs.LogPlanePositions = Properties.Settings.Default.Planes_TracePositions; return feedargs; } @@ -1949,8 +2011,6 @@ namespace AirScout // start all background workers // check if the thread is not NULL and not activated Say("Starting background threads..."); - if ((bw_LocatorGridUpdater != null) && !bw_LocatorGridUpdater.IsBusy) - bw_LocatorGridUpdater.RunWorkerAsync(); if ((bw_AirportMapper != null) && !bw_AirportMapper.IsBusy) bw_AirportMapper.RunWorkerAsync(); if ((bw_JSONWriter != null) && !bw_JSONWriter.IsBusy) @@ -2176,29 +2236,37 @@ namespace AirScout if (Properties.Settings.Default.Map_Preloader_Enabled && (bw_MapPreloader != null) && !bw_MapPreloader.IsBusy) bw_MapPreloader.RunWorkerAsync(BACKGROUNDUPDATERSTARTOPTIONS.RUNPERIODICALLY); } + if ((bw_PlaneFeed1 != null) && (!bw_PlaneFeed1.IsBusy)) bw_PlaneFeed1.RunWorkerAsync(CreatePlaneFeedWorkEventArgs(Properties.Settings.Default.Planes_PlaneFeed1)); if ((bw_PlaneFeed2 != null) && (!bw_PlaneFeed2.IsBusy)) bw_PlaneFeed2.RunWorkerAsync(CreatePlaneFeedWorkEventArgs(Properties.Settings.Default.Planes_PlaneFeed2)); if ((bw_PlaneFeed3 != null) && (!bw_PlaneFeed3.IsBusy)) bw_PlaneFeed3.RunWorkerAsync(CreatePlaneFeedWorkEventArgs(Properties.Settings.Default.Planes_PlaneFeed3)); - if (Properties.Settings.Default.Server_Activate) + + if (Properties.Settings.Default.Server_Activate) { if ((bw_WinTestReceive != null) && (!bw_WinTestReceive.IsBusy)) bw_WinTestReceive.RunWorkerAsync(); + WebserverStartArgs args = new WebserverStartArgs(); + args.TmpDirectory = TmpDirectory; + args.WebserverDirectory = WebserverDirectory; if ((bw_Webserver != null) && (!bw_Webserver.IsBusy)) - bw_Webserver.RunWorkerAsync(TmpDirectory); + bw_Webserver.RunWorkerAsync(args); } + if (Properties.Settings.Default.SpecLab_Enabled) { if ((bw_SpecLab_Receive != null) && (!bw_SpecLab_Receive.IsBusy)) bw_SpecLab_Receive.RunWorkerAsync(); } + if (Properties.Settings.Default.Track_Activate) { if ((bw_Track != null) && (!bw_Track.IsBusy)) bw_Track.RunWorkerAsync(); } + if (AirScout.CAT.Properties.Settings.Default.CAT_Activate) { CATUpdaterStartOptions startoptions = new CATUpdaterStartOptions(); @@ -2279,8 +2347,6 @@ namespace AirScout private void CancelAllBackgroundWorkers() { // cancel all background workers, don't wait for finish - if (bw_LocatorGridUpdater != null) - bw_LocatorGridUpdater.CancelAsync(); if (bw_AirportMapper != null) bw_AirportMapper.CancelAsync(); if (bw_PlaneFeed1 != null) @@ -2454,6 +2520,59 @@ namespace AirScout il_Planes_S.Images.Add(CreatePlaneIcon(Color.Magenta)); bmindex_magenta = il_Planes_M.Images.Count - 1; il_Airports.Images.Add(CreateAirportIcon(255)); + + // save icons to Icons directory + il_Planes_L.Images[bmindex_gray].Save( + Path.Combine(IconDirectory, "plane_l_gray.png"), + System.Drawing.Imaging.ImageFormat.Png); + il_Planes_M.Images[bmindex_gray].Save( + Path.Combine(IconDirectory, "plane_m_gray.png"), + System.Drawing.Imaging.ImageFormat.Png); + il_Planes_H.Images[bmindex_gray].Save( + Path.Combine(IconDirectory, "plane_h_gray.png"), + System.Drawing.Imaging.ImageFormat.Png); + il_Planes_S.Images[bmindex_gray].Save( + Path.Combine(IconDirectory, "plane_s_gray.png"), + System.Drawing.Imaging.ImageFormat.Png); + + il_Planes_L.Images[bmindex_darkorange].Save( + Path.Combine(IconDirectory, "plane_l_darkorange.png"), + System.Drawing.Imaging.ImageFormat.Png); + il_Planes_M.Images[bmindex_darkorange].Save( + Path.Combine(IconDirectory, "plane_m_darkorange.png"), + System.Drawing.Imaging.ImageFormat.Png); + il_Planes_H.Images[bmindex_darkorange].Save( + Path.Combine(IconDirectory, "plane_h_darkorange.png"), + System.Drawing.Imaging.ImageFormat.Png); + il_Planes_S.Images[bmindex_darkorange].Save( + Path.Combine(IconDirectory, "plane_s_darkorange.png"), + System.Drawing.Imaging.ImageFormat.Png); + + il_Planes_L.Images[bmindex_red].Save( + Path.Combine(IconDirectory, "plane_l_red.png"), + System.Drawing.Imaging.ImageFormat.Png); + il_Planes_M.Images[bmindex_red].Save( + Path.Combine(IconDirectory, "plane_m_red.png"), + System.Drawing.Imaging.ImageFormat.Png); + il_Planes_H.Images[bmindex_red].Save( + Path.Combine(IconDirectory, "plane_h_red.png"), + System.Drawing.Imaging.ImageFormat.Png); + il_Planes_S.Images[bmindex_red].Save( + Path.Combine(IconDirectory, "plane_s_red.png"), + System.Drawing.Imaging.ImageFormat.Png); + + il_Planes_L.Images[bmindex_magenta].Save( + Path.Combine(IconDirectory, "plane_l_magenta.png"), + System.Drawing.Imaging.ImageFormat.Png); + il_Planes_M.Images[bmindex_magenta].Save( + Path.Combine(IconDirectory, "plane_m_magenta.png"), + System.Drawing.Imaging.ImageFormat.Png); + il_Planes_H.Images[bmindex_magenta].Save( + Path.Combine(IconDirectory, "plane_h_magenta.png"), + System.Drawing.Imaging.ImageFormat.Png); + il_Planes_S.Images[bmindex_magenta].Save( + Path.Combine(IconDirectory, "plane_s_magenta.png"), + System.Drawing.Imaging.ImageFormat.Png); } catch (Exception ex) { @@ -2736,29 +2855,36 @@ namespace AirScout if (!SupportFunctions.IsMono) { // use Windows standard Properties.Settings.Default behavoir - AirScout.PlaneFeeds.Properties.Settings.Default.Reload(); ScoutBase.Elevation.Properties.Settings.Default.Reload(); ScoutBase.Stations.Properties.Settings.Default.Reload(); ScoutBase.Propagation.Properties.Settings.Default.Reload(); + ScoutBase.CAT.Properties.Settings.Default.Reload(); AirScout.Aircrafts.Properties.Settings.Default.Reload(); + AirScout.PlaneFeeds.Properties.Settings.Default.Reload(); + AirScout.CAT.Properties.Settings.Default.Reload(); Properties.Settings.Default.Reload(); return; } // Mono hack to assure that default values were initilaized - AirScout.PlaneFeeds.Properties.Settings.Default.Reset(); ScoutBase.Elevation.Properties.Settings.Default.Reset(); ScoutBase.Stations.Properties.Settings.Default.Reset(); ScoutBase.Propagation.Properties.Settings.Default.Reset(); + ScoutBase.CAT.Properties.Settings.Default.Reset(); AirScout.Aircrafts.Properties.Settings.Default.Reset(); + AirScout.PlaneFeeds.Properties.Settings.Default.Reset(); + AirScout.CAT.Properties.Settings.Default.Reset(); Properties.Settings.Default.Reset(); // Rather load settings as JSON LoadSettingsFromJSON(ScoutBase.Elevation.Properties.Settings.Default); LoadSettingsFromJSON(ScoutBase.Stations.Properties.Settings.Default); LoadSettingsFromJSON(ScoutBase.Propagation.Properties.Settings.Default); + LoadSettingsFromJSON(ScoutBase.CAT.Properties.Settings.Default); LoadSettingsFromJSON(AirScout.Aircrafts.Properties.Settings.Default); + LoadSettingsFromJSON(AirScout.PlaneFeeds.Properties.Settings.Default); + LoadSettingsFromJSON(AirScout.CAT.Properties.Settings.Default); LoadSettingsFromJSON(Properties.Settings.Default); Console.WriteLine("Loading user settings finished successfully."); @@ -2791,10 +2917,12 @@ namespace AirScout if (!SupportFunctions.IsMono) { // save all settings + ScoutBase.CAT.Properties.Settings.Default.Save(); ScoutBase.Elevation.Properties.Settings.Default.Save(); ScoutBase.Stations.Properties.Settings.Default.Save(); ScoutBase.Propagation.Properties.Settings.Default.Save(); AirScout.Aircrafts.Properties.Settings.Default.Save(); + AirScout.CAT.Properties.Settings.Default.Save(); Properties.Settings.Default.Save(); return; @@ -2803,9 +2931,11 @@ namespace AirScout // Rather save settings as JSON SaveSettingsToJSON(Properties.Settings.Default); SaveSettingsToJSON(AirScout.Aircrafts.Properties.Settings.Default); + SaveSettingsToJSON(AirScout.CAT.Properties.Settings.Default); SaveSettingsToJSON(ScoutBase.Propagation.Properties.Settings.Default); SaveSettingsToJSON(ScoutBase.Stations.Properties.Settings.Default); SaveSettingsToJSON(ScoutBase.Elevation.Properties.Settings.Default); + SaveSettingsToJSON(ScoutBase.CAT.Properties.Settings.Default); } catch (Exception ex) @@ -2835,11 +2965,6 @@ namespace AirScout Log.FlushLog(); } - // stop tracking when in TRACK mode - if (TrackMode == AIRSCOUTTRACKMODE.TRACK) - { - TrackMode = AIRSCOUTTRACKMODE.NONE; - } // stop playing when in PLAY mode if (PlayMode != AIRSCOUTPLAYMODE.PAUSE) Pause(); @@ -2877,8 +3002,14 @@ namespace AirScout // save splitter positions Properties.Settings.Default.MainSplitter_Distance = MainSplitterDistance; Properties.Settings.Default.MapSplitter_Distance = MapSplitterDistance; + // stop tracking + if (ConnectedRig != null) + { + ConnectedRig.LeaveDoppler(); + } TrackMode = AIRSCOUTTRACKMODE.NONE; + } catch (Exception ex) { @@ -3897,170 +4028,86 @@ namespace AirScout private void UpdatePaths() { // updates all current path to calculate - - Log.WriteMessage("UpdatePath started."); - Stopwatch st = new Stopwatch(); - st.Start(); - - // check if there are a valid home settings - if (!Callsign.Check(Properties.Settings.Default.MyCall) || - !GeographicalPoint.Check(Properties.Settings.Default.MyLat, Properties.Settings.Default.MyLon)) - return; - - // OK valid, lets continue - - // slow down background calculations - Properties.Settings.Default.Background_Calculations_ThreadWait = 1000; - - //clear map overlays - gmo_PropagationPaths.Clear(); - gmo_NearestPaths.Clear(); - gmo_Objects.Clear(); - - // clear all planes and tooltips - gmo_Planes.Clear(); - - // clear paths - ElevationPaths.Clear(); - PropagationPaths.Clear(); - - // clear charts - ClearCharts(); - - // put call on MyCalls last recent collection if not already in - if (Properties.Settings.Default.MyCalls.IndexOf(Properties.Settings.Default.MyCall) < 0) + try { - Properties.Settings.Default.MyCalls.Insert(0, Properties.Settings.Default.MyCall); - } + Log.WriteMessage("UpdatePath started."); + Stopwatch st = new Stopwatch(); + st.Start(); - // keep the MyCalls list small - while (Properties.Settings.Default.MyCalls.Count > 10) - { - Properties.Settings.Default.MyCalls.RemoveAt(Properties.Settings.Default.MyCalls.Count - 1); - } - - - // check and update station database - LocationDesignator myloc = LocationFindOrUpdateOrCreate(Properties.Settings.Default.MyCall, Properties.Settings.Default.MyLat, Properties.Settings.Default.MyLon); - Properties.Settings.Default.MyElevation = myloc.Elevation; - - // get qrv info or create default - QRVDesignator myqrv = StationData.Database.QRVFindOrCreateDefault(myloc.Call, myloc.Loc, Properties.Settings.Default.Band); - // set qrv defaults if zero - if (myqrv.AntennaHeight == 0) - myqrv.AntennaHeight = StationData.Database.QRVGetDefaultAntennaHeight(Properties.Settings.Default.Band); - if (myqrv.AntennaGain == 0) - myqrv.AntennaGain = StationData.Database.QRVGetDefaultAntennaGain(Properties.Settings.Default.Band); - if (myqrv.Power == 0) - myqrv.Power = StationData.Database.QRVGetDefaultPower(Properties.Settings.Default.Band); - // draw my end on the map - gmm_MyLoc = new GMarkerGoogle(new PointLatLng(myloc.Lat, myloc.Lon), ToolTipFont, ((PathMode == AIRSCOUTPATHMODE.MULTI) && Properties.Settings.Default.Map_SmallMarkers) ? GMarkerGoogleType.red_small : GMarkerGoogleType.red_dot); - gmm_MyLoc.ToolTipText = myloc.Call + "\n" + - myloc.Lat.ToString("F8", CultureInfo.InvariantCulture) + "\n" + - myloc.Lon.ToString("F8", CultureInfo.InvariantCulture) + "\n" + - myloc.Loc + "\n" + - GetElevation(myloc.Lat, myloc.Lon).ToString("F0") + "m"; - gmm_MyLoc.ToolTipMode = MarkerTooltipMode.OnMouseOver; - gmm_MyLoc.Tag = myloc.Call; - gmo_Objects.Markers.Add(gmm_MyLoc); - - // do single path mode - if (PathMode == AIRSCOUTPATHMODE.SINGLE) - { - // check if there are a valid DX settings - if (!Callsign.Check(Properties.Settings.Default.DXCall) || - !GeographicalPoint.Check(Properties.Settings.Default.DXLat, Properties.Settings.Default.DXLon)) + // check if there are a valid home settings + if (!Callsign.Check(Properties.Settings.Default.MyCall) || + !GeographicalPoint.Check(Properties.Settings.Default.MyLat, Properties.Settings.Default.MyLon)) return; // OK valid, lets continue + + // slow down background calculations + Properties.Settings.Default.Background_Calculations_ThreadWait = 1000; + + //clear map overlays + gmo_PropagationPaths.Clear(); + gmo_NearestPaths.Clear(); + gmo_Objects.Clear(); + + // clear all planes and tooltips + gmo_Planes.Clear(); + + // clear paths + ElevationPaths.Clear(); + PropagationPaths.Clear(); + + // clear charts + ClearCharts(); + + // put call on MyCalls last recent collection if not already in + if (Properties.Settings.Default.MyCalls.IndexOf(Properties.Settings.Default.MyCall) < 0) + { + Properties.Settings.Default.MyCalls.Insert(0, Properties.Settings.Default.MyCall); + } + + // keep the MyCalls list small + while (Properties.Settings.Default.MyCalls.Count > 10) + { + Properties.Settings.Default.MyCalls.RemoveAt(Properties.Settings.Default.MyCalls.Count - 1); + } + + // check and update station database - LocationDesignator dxloc = LocationFindOrUpdateOrCreate(Properties.Settings.Default.DXCall, Properties.Settings.Default.DXLat, Properties.Settings.Default.DXLon); - Properties.Settings.Default.DXElevation = dxloc.Elevation; + LocationDesignator myloc = LocationFindOrUpdateOrCreate(Properties.Settings.Default.MyCall, Properties.Settings.Default.MyLat, Properties.Settings.Default.MyLon); + Properties.Settings.Default.MyElevation = myloc.Elevation; // get qrv info or create default - QRVDesignator dxqrv = StationData.Database.QRVFindOrCreateDefault(dxloc.Call, dxloc.Loc, Properties.Settings.Default.Band); + QRVDesignator myqrv = StationData.Database.QRVFindOrCreateDefault(myloc.Call, myloc.Loc, Properties.Settings.Default.Band); // set qrv defaults if zero - if (dxqrv.AntennaHeight == 0) - dxqrv.AntennaHeight = StationData.Database.QRVGetDefaultAntennaHeight(Properties.Settings.Default.Band); - if (dxqrv.AntennaGain == 0) - dxqrv.AntennaGain = StationData.Database.QRVGetDefaultAntennaGain(Properties.Settings.Default.Band); - if (dxqrv.Power == 0) - dxqrv.Power = StationData.Database.QRVGetDefaultPower(Properties.Settings.Default.Band); + if (myqrv.AntennaHeight == 0) + myqrv.AntennaHeight = StationData.Database.QRVGetDefaultAntennaHeight(Properties.Settings.Default.Band); + if (myqrv.AntennaGain == 0) + myqrv.AntennaGain = StationData.Database.QRVGetDefaultAntennaGain(Properties.Settings.Default.Band); + if (myqrv.Power == 0) + myqrv.Power = StationData.Database.QRVGetDefaultPower(Properties.Settings.Default.Band); + // draw my end on the map + gmm_MyLoc = new GMarkerGoogle(new PointLatLng(myloc.Lat, myloc.Lon), ToolTipFont, ((PathMode == AIRSCOUTPATHMODE.MULTI) && Properties.Settings.Default.Map_SmallMarkers) ? GMarkerGoogleType.red_small : GMarkerGoogleType.red_dot); + gmm_MyLoc.ToolTipText = myloc.Call + "\n" + + myloc.Lat.ToString("F8", CultureInfo.InvariantCulture) + "\n" + + myloc.Lon.ToString("F8", CultureInfo.InvariantCulture) + "\n" + + myloc.Loc + "\n" + + GetElevation(myloc.Lat, myloc.Lon).ToString("F0") + "m"; + gmm_MyLoc.ToolTipMode = MarkerTooltipMode.OnMouseOver; + gmm_MyLoc.Tag = myloc.Call; + gmo_Objects.Markers.Add(gmm_MyLoc); - // find local obstruction, if any - LocalObstructionDesignator o = ElevationData.Database.LocalObstructionFind(myloc.Lat, myloc.Lon, Properties.Settings.Default.ElevationModel); - double mybearing = LatLon.Bearing(myloc.Lat, myloc.Lon, dxloc.Lat, dxloc.Lon); - double myobstr = (o != null) ? o.GetObstruction(myqrv.AntennaHeight, mybearing) : double.MinValue; - - // try to find elevation path in database or create new one and store - ElevationPathDesignator epath = ElevationData.Database.ElevationPathFindOrCreateFromLatLon( - null, - myloc.Lat, - myloc.Lon, - dxloc.Lat, - dxloc.Lon, - ElevationData.Database.GetDefaultStepWidth(Properties.Settings.Default.ElevationModel), - Properties.Settings.Default.ElevationModel); - // add additional info to ppath - epath.Location1 = myloc; - epath.Location2 = dxloc; - epath.QRV1 = myqrv; - epath.QRV2 = dxqrv; - - // try to find propagation path in database or create new one and store - PropagationPathDesignator ppath = PropagationData.Database.PropagationPathFindOrCreateFromLatLon( - null, - myloc.Lat, - myloc.Lon, - GetElevation(myloc.Lat, myloc.Lon) + myqrv.AntennaHeight, - dxloc.Lat, - dxloc.Lon, - GetElevation(dxloc.Lat, dxloc.Lon) + dxqrv.AntennaHeight, - Bands.ToGHz(Properties.Settings.Default.Band), - LatLon.Earth.Radius * Properties.Settings.Default.Path_Band_Settings[Properties.Settings.Default.Band].K_Factor, - Properties.Settings.Default.Path_Band_Settings[Properties.Settings.Default.Band].F1_Clearance, - ElevationData.Database.GetDefaultStepWidth(Properties.Settings.Default.ElevationModel), - Properties.Settings.Default.ElevationModel, - myobstr); - - // add additional info to ppath - ppath.Location1 = myloc; - ppath.Location2 = dxloc; - ppath.QRV1 = myqrv; - ppath.QRV2 = dxqrv; - - // add single path to paths list - ElevationPaths.Add(epath); - PropagationPaths.Add(ppath); - // put DXCall on the watchlist if not already in - if (Properties.Settings.Default.Watchlist.IndexOf(Properties.Settings.Default.DXCall, MaidenheadLocator.LocFromLatLon(Properties.Settings.Default.DXLat, Properties.Settings.Default.DXLon, false, 3)) < 0) + // do single path mode + if (PathMode == AIRSCOUTPATHMODE.SINGLE) { - Properties.Settings.Default.Watchlist.Insert(0, new WatchlistItem(Properties.Settings.Default.DXCall, MaidenheadLocator.LocFromLatLon(Properties.Settings.Default.DXLat, Properties.Settings.Default.DXLon, false, 3), ppath.Distance > Properties.Settings.Default.Path_MaxLength)); - } - // keep the watchlist small - while (Properties.Settings.Default.Watchlist.Count() > Properties.Settings.Default.Watchlist_MaxCount) - { - Properties.Settings.Default.Watchlist.RemoveAt(Properties.Settings.Default.Watchlist.Count() - 1); - } - - } - else if (PathMode == AIRSCOUTPATHMODE.MULTI) - { - // iterate through watchlist and add selected - foreach (ListViewItem item in lv_Control_Watchlist.Items) - { - // use only selected items - if (!item.Checked) - continue; - string call = item.Text; - string loc = item.SubItems[1].Text; - - // check if call & loc are valid - if (!Callsign.Check(call) || !MaidenheadLocator.Check(loc)) - continue; + // check if there are a valid DX settings + if (!Callsign.Check(Properties.Settings.Default.DXCall) || + !GeographicalPoint.Check(Properties.Settings.Default.DXLat, Properties.Settings.Default.DXLon)) + return; + // OK valid, lets continue // check and update station database - LocationDesignator dxloc = LocationFindOrCreate(call, loc); + LocationDesignator dxloc = LocationFindOrUpdateOrCreate(Properties.Settings.Default.DXCall, Properties.Settings.Default.DXLat, Properties.Settings.Default.DXLon); + Properties.Settings.Default.DXElevation = dxloc.Elevation; // get qrv info or create default QRVDesignator dxqrv = StationData.Database.QRVFindOrCreateDefault(dxloc.Call, dxloc.Loc, Properties.Settings.Default.Band); @@ -4086,6 +4133,12 @@ namespace AirScout dxloc.Lon, ElevationData.Database.GetDefaultStepWidth(Properties.Settings.Default.ElevationModel), Properties.Settings.Default.ElevationModel); + // add additional info to ppath + epath.Location1 = myloc; + epath.Location2 = dxloc; + epath.QRV1 = myqrv; + epath.QRV2 = dxqrv; + // try to find propagation path in database or create new one and store PropagationPathDesignator ppath = PropagationData.Database.PropagationPathFindOrCreateFromLatLon( null, @@ -4101,74 +4154,159 @@ namespace AirScout ElevationData.Database.GetDefaultStepWidth(Properties.Settings.Default.ElevationModel), Properties.Settings.Default.ElevationModel, myobstr); + // add additional info to ppath ppath.Location1 = myloc; ppath.Location2 = dxloc; ppath.QRV1 = myqrv; ppath.QRV2 = dxqrv; - // add path to paths list + // add single path to paths list ElevationPaths.Add(epath); PropagationPaths.Add(ppath); + // put DXCall on the watchlist if not already in + if (Properties.Settings.Default.Watchlist.IndexOf(Properties.Settings.Default.DXCall, MaidenheadLocator.LocFromLatLon(Properties.Settings.Default.DXLat, Properties.Settings.Default.DXLon, false, 3)) < 0) + { + Properties.Settings.Default.Watchlist.Insert(0, new WatchlistItem(Properties.Settings.Default.DXCall, MaidenheadLocator.LocFromLatLon(Properties.Settings.Default.DXLat, Properties.Settings.Default.DXLon, false, 3), ppath.Distance > Properties.Settings.Default.Path_MaxLength)); + } + // keep the watchlist small + while (Properties.Settings.Default.Watchlist.Count() > Properties.Settings.Default.Watchlist_MaxCount) + { + Properties.Settings.Default.Watchlist.RemoveAt(Properties.Settings.Default.Watchlist.Count() - 1); + } + } + else if (PathMode == AIRSCOUTPATHMODE.MULTI) + { + // iterate through watchlist and add selected + foreach (ListViewItem item in lv_Control_Watchlist.Items) + { + // use only selected items + if (!item.Checked) + continue; + string call = item.Text; + string loc = item.SubItems[1].Text; + + // check if call & loc are valid + if (!Callsign.Check(call) || !MaidenheadLocator.Check(loc)) + continue; + + // check and update station database + LocationDesignator dxloc = LocationFindOrCreate(call, loc); + + // get qrv info or create default + QRVDesignator dxqrv = StationData.Database.QRVFindOrCreateDefault(dxloc.Call, dxloc.Loc, Properties.Settings.Default.Band); + // set qrv defaults if zero + if (dxqrv.AntennaHeight == 0) + dxqrv.AntennaHeight = StationData.Database.QRVGetDefaultAntennaHeight(Properties.Settings.Default.Band); + if (dxqrv.AntennaGain == 0) + dxqrv.AntennaGain = StationData.Database.QRVGetDefaultAntennaGain(Properties.Settings.Default.Band); + if (dxqrv.Power == 0) + dxqrv.Power = StationData.Database.QRVGetDefaultPower(Properties.Settings.Default.Band); + + // find local obstruction, if any + LocalObstructionDesignator o = ElevationData.Database.LocalObstructionFind(myloc.Lat, myloc.Lon, Properties.Settings.Default.ElevationModel); + double mybearing = LatLon.Bearing(myloc.Lat, myloc.Lon, dxloc.Lat, dxloc.Lon); + double myobstr = (o != null) ? o.GetObstruction(myqrv.AntennaHeight, mybearing) : double.MinValue; + + // try to find elevation path in database or create new one and store + ElevationPathDesignator epath = ElevationData.Database.ElevationPathFindOrCreateFromLatLon( + null, + myloc.Lat, + myloc.Lon, + dxloc.Lat, + dxloc.Lon, + ElevationData.Database.GetDefaultStepWidth(Properties.Settings.Default.ElevationModel), + Properties.Settings.Default.ElevationModel); + // try to find propagation path in database or create new one and store + PropagationPathDesignator ppath = PropagationData.Database.PropagationPathFindOrCreateFromLatLon( + null, + myloc.Lat, + myloc.Lon, + GetElevation(myloc.Lat, myloc.Lon) + myqrv.AntennaHeight, + dxloc.Lat, + dxloc.Lon, + GetElevation(dxloc.Lat, dxloc.Lon) + dxqrv.AntennaHeight, + Bands.ToGHz(Properties.Settings.Default.Band), + LatLon.Earth.Radius * Properties.Settings.Default.Path_Band_Settings[Properties.Settings.Default.Band].K_Factor, + Properties.Settings.Default.Path_Band_Settings[Properties.Settings.Default.Band].F1_Clearance, + ElevationData.Database.GetDefaultStepWidth(Properties.Settings.Default.ElevationModel), + Properties.Settings.Default.ElevationModel, + myobstr); + // add additional info to ppath + ppath.Location1 = myloc; + ppath.Location2 = dxloc; + ppath.QRV1 = myqrv; + ppath.QRV2 = dxqrv; + // add path to paths list + + ElevationPaths.Add(epath); + PropagationPaths.Add(ppath); + } + } + + // calculate the area to show in map + // initially set to my location + double minlat = myloc.Lat; + double minlon = myloc.Lon; + double maxlat = myloc.Lat; + double maxlon = myloc.Lon; + + double centerlat = myloc.Lat; + double centerlon = myloc.Lon; + + // now do the drawing + foreach (PropagationPathDesignator ppath in PropagationPaths) + { + DrawPath(ppath); + + // maintain Min/Max values + minlat = Math.Min(minlat, ppath.Lat2); + minlon = Math.Min(minlon, ppath.Lon2); + maxlat = Math.Max(maxlat, ppath.Lat2); + maxlon = Math.Max(maxlon, ppath.Lon2); + } + + // show diagram when in SINGLE mode + if (PathMode == AIRSCOUTPATHMODE.SINGLE) + { + // both Elevationpaths & PropagationPaths should contain only one entry + if ((ElevationPaths.Count > 0) && (PropagationPaths.Count > 0)) + UpdateCharts(ElevationPaths[ElevationPaths.Count - 1], PropagationPaths[PropagationPaths.Count - 1]); + } + + // calculate center + centerlat = LatLon.MidPoint(minlat, minlon, maxlat, maxlon).Lat; + centerlon = LatLon.MidPoint(minlat, minlon, maxlat, maxlon).Lon; + + // ensure that whole path is visible and optionally centered + gm_Main.SetZoomToFitRect(RectLatLng.FromLTRB(minlon, maxlat, maxlon, minlat)); + if (Properties.Settings.Default.Map_AutoCenter) + gm_Main.Position = new PointLatLng(centerlat, centerlon); + + // clear all selections + SelectedPlanes.Clear(); + + // update watchlist locations in map + UpdateWatchlistInMap(); + + // update status window + UpdateStatus(); + + // stop tracking + //TrackMode = AIRSCOUTTRACKMODE.NONE; + + // speed up background calculations + Properties.Settings.Default.Background_Calculations_ThreadWait = 0; + + st.Stop(); + Log.WriteMessage("UpdatePath finished, " + st.ElapsedMilliseconds.ToString() + "ms."); } - - // calculate the area to show in map - // initially set to my location - double minlat = myloc.Lat; - double minlon = myloc.Lon; - double maxlat = myloc.Lat; - double maxlon = myloc.Lon; - - double centerlat = myloc.Lat; - double centerlon = myloc.Lon; - - // now do the drawing - foreach (PropagationPathDesignator ppath in PropagationPaths) + catch (Exception ex) { - DrawPath(ppath); - - // maintain Min/Max values - minlat = Math.Min(minlat, ppath.Lat2); - minlon = Math.Min(minlon, ppath.Lon2); - maxlat = Math.Max(maxlat, ppath.Lat2); - maxlon = Math.Max(maxlon, ppath.Lon2); + Say("Error while updating path: " + ex.Message); + Log.WriteMessage("Error while updating path: " + ex.ToString()); } - - // show diagram when in SINGLE mode - if (PathMode == AIRSCOUTPATHMODE.SINGLE) - { - // both Elevationpaths & PropagationPaths should contain only one entry - if ((ElevationPaths.Count > 0) && (PropagationPaths.Count > 0)) - UpdateCharts(ElevationPaths[ElevationPaths.Count - 1], PropagationPaths[PropagationPaths.Count - 1]); - } - - // calculate center - centerlat = LatLon.MidPoint(minlat, minlon, maxlat, maxlon).Lat; - centerlon = LatLon.MidPoint(minlat, minlon, maxlat, maxlon).Lon; - - // ensure that whole path is visible and optionally centered - gm_Main.SetZoomToFitRect(RectLatLng.FromLTRB(minlon, maxlat, maxlon, minlat)); - if (Properties.Settings.Default.Map_AutoCenter) - gm_Main.Position = new PointLatLng(centerlat, centerlon); - - // clear all selections - SelectedPlanes.Clear(); - - // update watchlist locations in map - UpdateWatchlistInMap(); - - // update status window - UpdateStatus(); - - // stop tracking - //TrackMode = AIRSCOUTTRACKMODE.NONE; - - // speed up background calculations - Properties.Settings.Default.Background_Calculations_ThreadWait = 0; - - st.Stop(); - Log.WriteMessage("UpdatePath finished, " + st.ElapsedMilliseconds.ToString() + "ms."); } #endregion @@ -4359,7 +4497,7 @@ namespace AirScout bm = new Bitmap(il_Planes_L.Images[bmindex]); else bm = new Bitmap(il_Planes_M.Images[bmindex]); - GMarkerGoogle m = new GMarkerGoogle(new PointLatLng(info.Lat, info.Lon), ToolTipFont, RotateImageByAngle(bm, (float)info.Track)); + GMarkerGoogle m = new GMarkerGoogle(new PointLatLng(info.Lat, info.Lon), ToolTipFont, RotateImageByAngle(bm, ((info.Track >= 0) && (info.Track <= 360))? (float)info.Track : 0)); m.Tag = info.Hex; string lat = ""; if (info.Lat >= 0) @@ -4429,7 +4567,7 @@ namespace AirScout bm = new Bitmap(il_Planes_L.Images[bmindex]); else bm = new Bitmap(il_Planes_M.Images[bmindex]); - GMarkerGoogle m = new GMarkerGoogle(new PointLatLng(info.Lat, info.Lon), ToolTipFont, RotateImageByAngle(bm, (float)info.Track)); + GMarkerGoogle m = new GMarkerGoogle(new PointLatLng(info.Lat, info.Lon), ToolTipFont, RotateImageByAngle(bm, ((info.Track >= 0) && (info.Track <= 360)) ? (float)info.Track : 0)); m.Tag = info.Hex; string lat = ""; if (info.Lat >= 0) @@ -5264,17 +5402,10 @@ namespace AirScout private void gm_Main_OnTileLoadComplete(long ElapsedMilliseconds) { // use thread safe call here! - /* - // use a backgroundworker to pump a message into the main window's message loop - while (bw_LocatorGridUpdater.IsBusy) + this.BeginInvoke((Action)delegate () { - // wait until last run is finished - Application.DoEvents(); - } - bw_LocatorGridUpdater.RunWorkerAsync(); - */ - - UpdateLocationGrid = true; + InitializeLocators(); + }); } #endregion @@ -7427,6 +7558,10 @@ namespace AirScout msg = new wtMessage(WTMESSAGES.SETELEVATION, Properties.Settings.Default.Server_Name, "", "AUTO", " 00 " + el.ToString("000")); bytes = msg.ToBytes(); client.Send(bytes, bytes.Length, ip); + // new: high precision az/el + msg = new wtMessage(WTMESSAGES.SETAZEL, Properties.Settings.Default.Server_Name, "", "AUTO", " 00 " + az.ToString("F8", CultureInfo.InvariantCulture) + " " + el.ToString("F8", CultureInfo.InvariantCulture)); + bytes = msg.ToBytes(); + client.Send(bytes, bytes.Length, ip); return true; } @@ -7642,7 +7777,7 @@ namespace AirScout H, LatLon.Earth.Radius * Properties.Settings.Default.Path_Band_Settings[Properties.Settings.Default.Band].K_Factor); trackvalues.DXElevation = Propagation.EpsilonFromHeights(dxh, - trackvalues.MyDistance, + trackvalues.DXDistance, H, LatLon.Earth.Radius * Properties.Settings.Default.Path_Band_Settings[Properties.Settings.Default.Band].K_Factor) / Math.PI * 180; @@ -8092,26 +8227,30 @@ namespace AirScout int interval = Properties.Settings.Default.News_Interval; while (!bw_NewsFeed.CancellationPending) { - try + if (Properties.Settings.Default.NewsFeed_Enabled) { - // get the last modified time of the website - AutoDecompressionWebClient cl = new AutoDecompressionWebClient(); - DateTime dt = cl.GetWebCreationTimeUtc(Properties.Settings.Default.News_URL); - Log.WriteMessage("Checking news page: " + dt.ToString("yyyy-MM-dd HH:mm:ss") + "<> " + Properties.Settings.Default.News_LastUpdate.ToString("yyyy-MM-dd HH:mm:ss")); - Console.WriteLine("Checking news page: " + dt.ToString("yyyy-MM-dd HH:mm:ss") + "<> " + Properties.Settings.Default.News_LastUpdate.ToString("yyyy-MM-dd HH:mm:ss")); - // report latest news if updated - if (dt > Properties.Settings.Default.News_LastUpdate) + try { - // report news to main window - bw_NewsFeed.ReportProgress(1, dt); + // get the last modified time of the website + AutoDecompressionWebClient cl = new AutoDecompressionWebClient(); + DateTime dt = cl.GetWebCreationTimeUtc(Properties.Settings.Default.News_URL); + Log.WriteMessage("Checking news page: " + dt.ToString("yyyy-MM-dd HH:mm:ss") + "<> " + Properties.Settings.Default.News_LastUpdate.ToString("yyyy-MM-dd HH:mm:ss")); + Console.WriteLine("Checking news page: " + dt.ToString("yyyy-MM-dd HH:mm:ss") + "<> " + Properties.Settings.Default.News_LastUpdate.ToString("yyyy-MM-dd HH:mm:ss")); + // report latest news if updated + if (dt > Properties.Settings.Default.News_LastUpdate) + { + // report news to main window + bw_NewsFeed.ReportProgress(1, dt); + } + } + catch (Exception ex) + { + // report error + Log.WriteMessage(ex.ToString(), LogLevel.Error); + bw_NewsFeed.ReportProgress(-1, DateTime.UtcNow.ToString("[" + "HH:mm:ss") + "] Error while reading the website " + uri.ToString() + ": " + ex.Message); } } - catch (Exception ex) - { - // report error - Log.WriteMessage(ex.ToString(), LogLevel.Error); - bw_NewsFeed.ReportProgress(-1, DateTime.UtcNow.ToString("[" + "HH:mm:ss") + "] Error while reading the website " + uri.ToString() + ": " + ex.Message); - } + int i = 0; while (!bw_NewsFeed.CancellationPending && (i < interval)) { @@ -8132,7 +8271,12 @@ namespace AirScout else { // stop background thread - bw_NewsFeed.CancelAsync(); + while (bw_NewsFeed.IsBusy) + { + bw_NewsFeed.CancelAsync(); + Application.DoEvents(); + } + // report website changes DateTime dt = (DateTime)e.UserState; if (!SupportFunctions.IsMono) @@ -8160,8 +8304,10 @@ namespace AirScout Properties.Settings.Default.News_LastUpdate = dt; } + // restart background thread - bw_NewsFeed.RunWorkerAsync(); + if (!bw_NewsFeed.IsBusy) + bw_NewsFeed.RunWorkerAsync(); } } @@ -8724,9 +8870,45 @@ namespace AirScout private void bw_CATUpdater_ProgressChanged(object sender, ProgressChangedEventArgs e) { - if (e.ProgressPercentage <= 0) + try { - Say((string)e.UserState); + if (e.ProgressPercentage < 0) + { + // error message received + string msg = (string)e.UserState; + Log.WriteMessage(msg, LogLevel.Error); + } + else if (e.ProgressPercentage == 0) + { + // status message received + string msg = (string)e.UserState; + Log.WriteMessage(msg); + // redirect output to splash screen on first run + if (FirstRun && SplashDlg != null) + Splash("Preparing database for first run: " + msg + " (please wait)", Color.Yellow); + else + { + SayDatabase(msg); + } + } + else if (e.ProgressPercentage == 1) + { + Properties.Settings.Default.RigDatabase_Status = (DATABASESTATUS)e.UserState; + Color color = DatabaseStatus.GetDatabaseStatusColor(Properties.Settings.Default.RigDatabase_Status); + if (tsl_Database_LED_Rig.BackColor != color) + { + tsl_Database_LED_Rig.BackColor = color; + } + string text = "Rig Database Status\n\n" + DatabaseStatus.GetDatabaseStatusText(Properties.Settings.Default.RigDatabase_Status); + if (tsl_Database_LED_Rig.ToolTipText != text) + tsl_Database_LED_Rig.ToolTipText = text; + } + if (!this.Disposing && (ss_Main != null)) + ss_Main.Update(); + } + catch (Exception ex) + { + Log.WriteMessage(ex.ToString(), LogLevel.Error); } } @@ -8737,73 +8919,80 @@ namespace AirScout private void bw_CAT_ProgressChanged(object sender, ProgressChangedEventArgs e) { - if (e.ProgressPercentage <= 0) + try { - Say((string)e.UserState); - } - else if (e.ProgressPercentage == 1) - { - // new rig status received - RIGSTATUS status = (RIGSTATUS)e.UserState; - switch (status) + if (e.ProgressPercentage <= 0) { - case RIGSTATUS.ONLINE: - SayCAT("CAT", Color.White, Color.DarkGreen); - break; - case RIGSTATUS.ERROR: - case RIGSTATUS.NOCAT: - case RIGSTATUS.NOPORT: - case RIGSTATUS.NORIG: - case RIGSTATUS.NOTSUITABLE: - SayCAT("CAT", Color.Yellow, Color.Red); - break; - case RIGSTATUS.OFFLINE: - SayCAT("CAT", Color.White, Color.DarkOrange); - break; - default: - SayCAT("CAT", Color.DarkGray, SystemColors.Control); - break; + Say((string)e.UserState); } - - RigStatus = status; - } - else if (e.ProgressPercentage == 2) - { - // new rig info received - IRig rig = (IRig)e.UserState; - - // save info if a valid tracking is not going on - if (TrackStatus != TRACKSTATUS.TRACKING) + else if (e.ProgressPercentage == 1) { - if (rig != null) + // new rig status received + RIGSTATUS status = (RIGSTATUS)e.UserState; + switch (status) { - ConnectedRig = rig; - // save latest rig settings to switch back after tracking - Properties.Settings.Default.Doppler_DialFreq = rig.GetRxFrequency(); - Properties.Settings.Default.Doppler_DialMode = rig.GetMode(); - Properties.Settings.Default.Doppler_DialSplit = rig.GetSplit(); - Properties.Settings.Default.Doppler_DialRit = rig.GetRit(); + case RIGSTATUS.ONLINE: + SayCAT("CAT", Color.White, Color.DarkGreen); + break; + case RIGSTATUS.ERROR: + case RIGSTATUS.NOCAT: + case RIGSTATUS.NOPORT: + case RIGSTATUS.NORIG: + case RIGSTATUS.NOTSUITABLE: + SayCAT("CAT", Color.Yellow, Color.Red); + break; + case RIGSTATUS.OFFLINE: + SayCAT("CAT", Color.White, Color.DarkOrange); + break; + default: + SayCAT("CAT", Color.DarkGray, SystemColors.Control); + break; } + + RigStatus = status; + } + else if (e.ProgressPercentage == 2) + { + // new rig info received + IRig rig = (IRig)e.UserState; + + // save info if a valid tracking is not going on + if (TrackStatus != TRACKSTATUS.TRACKING) + { + if (rig != null) + { + ConnectedRig = rig; + // save latest rig settings to switch back after tracking + Properties.Settings.Default.Doppler_DialFreq = rig.GetRxFrequency(); + Properties.Settings.Default.Doppler_DialMode = rig.GetMode(); + Properties.Settings.Default.Doppler_DialSplit = rig.GetSplit(); + Properties.Settings.Default.Doppler_DialRit = rig.GetRit(); + } + } + + // report to status bar + NumberFormatInfo info = new NumberFormatInfo(); + info.NumberDecimalSeparator = ";"; + info.NumberGroupSeparator = "."; + Say("Rig reports RX: " + rig.GetRxFrequency().ToString(info) + ", TX: " + rig.GetTxFrequency().ToString(info) + "Hz, Mode: " + rig.GetMode().ToString() + ", RIT: " + ((rig.GetRit() == RIGRIT.RITON) ? "ON" : "OFF") + ", Split: " + ((rig.GetSplit() == RIGSPLIT.SPLITON) ? "ON" : "OFF")); } - // report to status bar - NumberFormatInfo info = new NumberFormatInfo(); - info.NumberDecimalSeparator = ";"; - info.NumberGroupSeparator = "."; - Say("Rig reports RX: " + rig.GetRxFrequency().ToString(info) + ", TX: " + rig.GetTxFrequency().ToString(info) + "Hz, Mode: " + rig.GetMode().ToString() + ", RIT: " + ((rig.GetRit() == RIGRIT.RITON) ? "ON" : "OFF") +", Split: " + ((rig.GetSplit() == RIGSPLIT.SPLITON)? "ON" : "OFF")); + // set Tooltip + if (ConnectedRig != null) + { + tsl_CAT.ToolTipText = ConnectedRig.CatVersion + "\n" + ConnectedRig.Settings.Type + "\n\n"; + } + else + { + tsl_CAT.ToolTipText = "CAT error!" + "\n\n"; + } + tsl_CAT.ToolTipText = tsl_CAT.ToolTipText + RigStatus.ToString(); } - - // set Tooltip - if (ConnectedRig != null) + catch (Exception ex) { - tsl_CAT.ToolTipText = ConnectedRig.CatVersion + "\n" + ConnectedRig.Settings.Type + "\n\n"; + RigStatus = RIGSTATUS.ERROR; + tsl_CAT.ToolTipText = "CAT error: " + ex.Message; } - else - { - tsl_CAT.ToolTipText = "CAT error!" + "\n\n"; - } - tsl_CAT.ToolTipText = tsl_CAT.ToolTipText + RigStatus.ToString(); - } @@ -9250,22 +9439,6 @@ namespace AirScout if (PlayMode == AIRSCOUTPLAYMODE.FORWARD) e.Cancel = true; } - - private void bw_LocatorGridUpdater_DoWork(object sender, DoWorkEventArgs e) - { - // do almost nothing - } - - private void bw_LocatorGridUpdater_ProgressChanged(object sender, ProgressChangedEventArgs e) - { - // do almost nothing - - } - - private void bw_LocatorGridUpdater_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) - { - InitializeLocators(); - } } diff --git a/AirScout/MapDlg.resx b/AirScout/MapDlg.resx index df2a9e1..d4b463f 100644 --- a/AirScout/MapDlg.resx +++ b/AirScout/MapDlg.resx @@ -125,7 +125,7 @@ AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAACc - DQAAAk1TRnQBSQFMAgEBAwEAATABDAEwAQwBIAEAASABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo + DQAAAk1TRnQBSQFMAgEBAwEAAUABDAFAAQwBIAEAASABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo AwABgAMAASADAAEBAQABCAYAARAYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5 AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA @@ -312,6 +312,12 @@ iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAIAAABLbSncAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO vAAADrwBlbxySQAAABBJREFUGFdjqMcBhpREfT0AN/NfQdTsp04AAAAASUVORK5CYII= + + + + + iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAIAAABLbSncAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO + vAAADrwBlbxySQAAABBJREFUGFdjqMcBhpREfT0AN/NfQdTsp04AAAAASUVORK5CYII= @@ -355,7 +361,7 @@ AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAACM - DAAAAk1TRnQBSQFMAwEBAAGYAQoBmAEKASABAAEgAQAE/wEJAQAI/wFCAU0BNgEEBgABNgEEAgABKAMA + DAAAAk1TRnQBSQFMAwEBAAGoAQoBqAEKASABAAEgAQAE/wEJAQAI/wFCAU0BNgEEBgABNgEEAgABKAMA AYADAAEgAwABAQEAAQgGAAEQGAABgAIAAYADAAKAAQABgAMAAYABAAGAAQACgAIAA8ABAAHAAdwBwAEA AfABygGmAQABMwUAATMBAAEzAQABMwEAAjMCAAMWAQADHAEAAyIBAAMpAQADVQEAA00BAANCAQADOQEA AYABfAH/AQACUAH/AQABkwEAAdYBAAH/AewBzAEAAcYB1gHvAQAB1gLnAQABkAGpAa0CAAH/ATMDAAFm @@ -471,9 +477,6 @@ 1347, 17 - - 544, 95 - 137 diff --git a/AirScout/OptionsDlg.Designer.cs b/AirScout/OptionsDlg.Designer.cs index 5a8a31e..ca0b1b6 100644 --- a/AirScout/OptionsDlg.Designer.cs +++ b/AirScout/OptionsDlg.Designer.cs @@ -47,32 +47,20 @@ this.rb_Options_Track_UDP_AirScout = new System.Windows.Forms.RadioButton(); this.tb_Options_Track_DialFreq = new ScoutBase.Core.LongTextBox(); this.btn_DeleteSingleStation = new System.Windows.Forms.Button(); - this.cb_Options_Locations_RestrictToAreaOfInterest = new System.Windows.Forms.CheckBox(); - this.cb_Options_InfoWin_AlwaysDetailed = new System.Windows.Forms.CheckBox(); - this.cb_Options_Path_BestCaseElevation = new System.Windows.Forms.CheckBox(); - this.cb_Options_Planes_KeepHistory = new System.Windows.Forms.CheckBox(); - this.tb_Options_Track_Serial_Baudrate = new ScoutBase.Core.Int32TextBox(); - this.tb_Options_Track_Serial_Port = new System.Windows.Forms.TextBox(); - this.tb_Options_Track_Offset = new ScoutBase.Core.Int32TextBox(); - this.int32TextBox2 = new ScoutBase.Core.Int32TextBox(); - this.cb_Options_Track_Activate = new System.Windows.Forms.CheckBox(); + this.btn_Options_LocalObstructions = new System.Windows.Forms.Button(); + this.btn_Options_DXHorizon = new System.Windows.Forms.Button(); + this.btn_DXCall_QRZ = new System.Windows.Forms.Button(); + this.btn_Options_MyHorizon = new System.Windows.Forms.Button(); + this.btn_MyCall_QRZ = new System.Windows.Forms.Button(); this.tab_Options_Planes = new System.Windows.Forms.TabPage(); this.groupBox48 = new System.Windows.Forms.GroupBox(); - this.int32TextBox1 = new ScoutBase.Core.Int32TextBox(); this.label33 = new System.Windows.Forms.Label(); - this.cb_Options_Planes_ExtendedPlausibilityCheck_Enabled = new System.Windows.Forms.CheckBox(); - this.tb_Options_Planes_Interval = new ScoutBase.Core.Int32TextBox(); this.label22 = new System.Windows.Forms.Label(); - this.cb_Options_Planes_LogErrors = new System.Windows.Forms.CheckBox(); this.groupBox40 = new System.Windows.Forms.GroupBox(); this.label55 = new System.Windows.Forms.Label(); - this.ud_Options_Planes_Position_DatabaseLifetime = new System.Windows.Forms.NumericUpDown(); this.label53 = new System.Windows.Forms.Label(); this.label32 = new System.Windows.Forms.Label(); this.groupBox38 = new System.Windows.Forms.GroupBox(); - this.tb_Options_Planes_Positions_TTL = new ScoutBase.Core.Int32TextBox(); - this.tb_Options_Planes_MaxAlt = new ScoutBase.Core.Int32TextBox(); - this.tb_Options_Planes_MinAlt = new ScoutBase.Core.Int32TextBox(); this.label2 = new System.Windows.Forms.Label(); this.label1 = new System.Windows.Forms.Label(); this.label9 = new System.Windows.Forms.Label(); @@ -80,8 +68,6 @@ this.label7 = new System.Windows.Forms.Label(); this.label5 = new System.Windows.Forms.Label(); this.groupBox26 = new System.Windows.Forms.GroupBox(); - this.tb_Options_Planes_Filter_MinAlt = new ScoutBase.Core.Int32TextBox(); - this.tb_Options_Planes_Filter_Max_Circumcircle = new ScoutBase.Core.Int32TextBox(); this.label96 = new System.Windows.Forms.Label(); this.label94 = new System.Windows.Forms.Label(); this.label95 = new System.Windows.Forms.Label(); @@ -112,7 +98,6 @@ this.groupBox1 = new System.Windows.Forms.GroupBox(); this.btn_Options_Path_Export = new System.Windows.Forms.Button(); this.label147 = new System.Windows.Forms.Label(); - this.tb_Options_Path_MaxLength = new ScoutBase.Core.DoubleTextBox(); this.label131 = new System.Windows.Forms.Label(); this.label130 = new System.Windows.Forms.Label(); this.tb_Options_Path_StepWidth = new System.Windows.Forms.TextBox(); @@ -127,8 +112,6 @@ this.groupBox13 = new System.Windows.Forms.GroupBox(); this.gm_Options_SRTM1 = new GMap.NET.WindowsForms.GMapControl(); this.groupBox12 = new System.Windows.Forms.GroupBox(); - this.cb_Options_Elevation_SRTM1_EnableCache = new System.Windows.Forms.CheckBox(); - this.cb_Options_Elevation_SRTM1 = new System.Windows.Forms.CheckBox(); this.tab_Options_SRTM3 = new System.Windows.Forms.TabPage(); this.groupBox42 = new System.Windows.Forms.GroupBox(); this.label100 = new System.Windows.Forms.Label(); @@ -137,8 +120,6 @@ this.groupBox9 = new System.Windows.Forms.GroupBox(); this.gm_Options_SRTM3 = new GMap.NET.WindowsForms.GMapControl(); this.groupBox8 = new System.Windows.Forms.GroupBox(); - this.cb_Options_Elevation_SRTM3_EnableCache = new System.Windows.Forms.CheckBox(); - this.cb_Options_Elevation_SRTM3 = new System.Windows.Forms.CheckBox(); this.tab_Options_GLOBE = new System.Windows.Forms.TabPage(); this.groupBox41 = new System.Windows.Forms.GroupBox(); this.label99 = new System.Windows.Forms.Label(); @@ -147,35 +128,19 @@ this.groupBox11 = new System.Windows.Forms.GroupBox(); this.gm_Options_GLOBE = new GMap.NET.WindowsForms.GMapControl(); this.groupBox10 = new System.Windows.Forms.GroupBox(); - this.cb_Options_Elevation_GLOBE_EnableCache = new System.Windows.Forms.CheckBox(); - this.cb_Options_Elevation_GLOBE = new System.Windows.Forms.CheckBox(); this.tab_Options_Map = new System.Windows.Forms.TabPage(); this.groupBox22 = new System.Windows.Forms.GroupBox(); - this.cb_Options_Gauges_Show = new System.Windows.Forms.CheckBox(); this.cb_Options_Gauges_ForeColor = new System.Windows.Forms.ComboBox(); this.label198 = new System.Windows.Forms.Label(); this.label188 = new System.Windows.Forms.Label(); - this.ud_Options_Gauges_Width = new System.Windows.Forms.NumericUpDown(); this.groupBox49 = new System.Windows.Forms.GroupBox(); - this.cb_Options_Map_SmallMarkers = new System.Windows.Forms.CheckBox(); - this.cb_Options_Map_LabelCalls = new System.Windows.Forms.CheckBox(); this.groupBox37 = new System.Windows.Forms.GroupBox(); this.label34 = new System.Windows.Forms.Label(); - this.ud_Options_Charts_FontSize = new System.Windows.Forms.NumericUpDown(); this.groupBox23 = new System.Windows.Forms.GroupBox(); - this.cb_Options_Distances_Activated = new System.Windows.Forms.CheckBox(); - this.cb_Options_Locators_Activate = new System.Windows.Forms.CheckBox(); - this.cb_Options_Watchlist_Activate = new System.Windows.Forms.CheckBox(); - this.cb_Options_Airports_Activate = new System.Windows.Forms.CheckBox(); this.groupBox39 = new System.Windows.Forms.GroupBox(); - this.tb_Options_Map_Update_Interval = new ScoutBase.Core.Int32TextBox(); this.label97 = new System.Windows.Forms.Label(); this.label29 = new System.Windows.Forms.Label(); this.groupBox30 = new System.Windows.Forms.GroupBox(); - this.tb_Options_Planes_IconSize_S = new ScoutBase.Core.Int32TextBox(); - this.tb_Options_Planes_IconSize_H = new ScoutBase.Core.Int32TextBox(); - this.tb_Options_Planes_IconSize_M = new ScoutBase.Core.Int32TextBox(); - this.tb_Options_Planes_IconSize_L = new ScoutBase.Core.Int32TextBox(); this.label84 = new System.Windows.Forms.Label(); this.label83 = new System.Windows.Forms.Label(); this.label82 = new System.Windows.Forms.Label(); @@ -184,44 +149,21 @@ this.groupBox7 = new System.Windows.Forms.GroupBox(); this.groupBox34 = new System.Windows.Forms.GroupBox(); this.label76 = new System.Windows.Forms.Label(); - this.cb_Options_InfoWin_MyElevation = new System.Windows.Forms.CheckBox(); - this.cb_Options_InfoWin_MyAzimuth = new System.Windows.Forms.CheckBox(); - this.cb_Options_InfoWin_MyDoppler = new System.Windows.Forms.CheckBox(); - this.cb_Options_InfoWin_DXDoppler = new System.Windows.Forms.CheckBox(); - this.cb_Options_InfoWin_DXAzimuth = new System.Windows.Forms.CheckBox(); - this.cb_Options_InfoWin_DXElevation = new System.Windows.Forms.CheckBox(); this.groupBox33 = new System.Windows.Forms.GroupBox(); this.label75 = new System.Windows.Forms.Label(); - this.cb_Options_InfoWin_Dist = new System.Windows.Forms.CheckBox(); - this.cb_Options_InfoWin_Time = new System.Windows.Forms.CheckBox(); - this.cb_Options_InfoWin_Epsilon = new System.Windows.Forms.CheckBox(); - this.cb_Options_InfoWin_Squint = new System.Windows.Forms.CheckBox(); - this.cb_Options_InfoWin_Angle = new System.Windows.Forms.CheckBox(); - this.rb_Options_InfoWin_Imperial = new System.Windows.Forms.RadioButton(); - this.rb_Options_InfoWin_Metric = new System.Windows.Forms.RadioButton(); this.label72 = new System.Windows.Forms.Label(); this.btn_Options_SelectFont = new System.Windows.Forms.Button(); this.label62 = new System.Windows.Forms.Label(); - this.tb_Options_Map_ToolTipFont = new System.Windows.Forms.TextBox(); this.groupBox29 = new System.Windows.Forms.GroupBox(); this.label74 = new System.Windows.Forms.Label(); - this.cb_Options_InfoWin_Position = new System.Windows.Forms.CheckBox(); - this.cb_Options_InfoWin_Alt = new System.Windows.Forms.CheckBox(); - this.cb_Options_InfoWin_Track = new System.Windows.Forms.CheckBox(); - this.cb_Options_InfoWin_Type = new System.Windows.Forms.CheckBox(); - this.cb_Options_InfoWin_Speed = new System.Windows.Forms.CheckBox(); this.groupBox2 = new System.Windows.Forms.GroupBox(); this.label61 = new System.Windows.Forms.Label(); this.cb_Options_Map_Provider = new System.Windows.Forms.ComboBox(); - this.cb_Options_Map_Preloader_Enabled = new System.Windows.Forms.CheckBox(); - this.ud_Options_Map_Opacity = new AirScout.PercentageControl(); this.label148 = new System.Windows.Forms.Label(); - this.ud_Options_Map_Preloader_MaxZoom = new System.Windows.Forms.NumericUpDown(); this.label144 = new System.Windows.Forms.Label(); this.tab_Options_Stations = new System.Windows.Forms.TabPage(); this.groupBox18 = new System.Windows.Forms.GroupBox(); this.lbl_Options_LocalObstructions = new System.Windows.Forms.Label(); - this.btn_Options_LocalObstructions = new System.Windows.Forms.Button(); this.groupBox46 = new System.Windows.Forms.GroupBox(); this.lbl_Options_DXLastUpdated = new System.Windows.Forms.Label(); this.label128 = new System.Windows.Forms.Label(); @@ -251,21 +193,15 @@ this.label28 = new System.Windows.Forms.Label(); this.label41 = new System.Windows.Forms.Label(); this.groupBox14 = new System.Windows.Forms.GroupBox(); - this.cb_Options_SmallLettersForSubSquares = new System.Windows.Forms.CheckBox(); - this.cb_Options_Locator_AutoLength = new System.Windows.Forms.CheckBox(); this.label48 = new System.Windows.Forms.Label(); - this.ud_Options_Locator_MaxLength = new System.Windows.Forms.NumericUpDown(); this.groupBox16 = new System.Windows.Forms.GroupBox(); this.label52 = new System.Windows.Forms.Label(); this.groupBox5 = new System.Windows.Forms.GroupBox(); this.btn_Options_DXMap = new System.Windows.Forms.Button(); this.tb_Options_DXLon = new ScoutBase.Core.DoubleTextBox(); this.tb_Options_DXLat = new ScoutBase.Core.DoubleTextBox(); - this.tb_Options_DXLoc = new ScoutBase.Core.LocatorTextBox(); this.tb_Options_DXCall = new ScoutBase.Core.CallsignTextBox(); this.label21 = new System.Windows.Forms.Label(); - this.btn_Options_DXHorizon = new System.Windows.Forms.Button(); - this.btn_DXCall_QRZ = new System.Windows.Forms.Button(); this.label14 = new System.Windows.Forms.Label(); this.label15 = new System.Windows.Forms.Label(); this.label42 = new System.Windows.Forms.Label(); @@ -274,13 +210,10 @@ this.label44 = new System.Windows.Forms.Label(); this.groupBox4 = new System.Windows.Forms.GroupBox(); this.btn_Options_MyMap = new System.Windows.Forms.Button(); - this.btn_Options_MyHorizon = new System.Windows.Forms.Button(); this.tb_Options_MyLon = new ScoutBase.Core.DoubleTextBox(); this.tb_Options_MyLat = new ScoutBase.Core.DoubleTextBox(); - this.tb_Options_MyLoc = new ScoutBase.Core.LocatorTextBox(); this.tb_Options_MyCall = new ScoutBase.Core.CallsignTextBox(); this.label18 = new System.Windows.Forms.Label(); - this.btn_MyCall_QRZ = new System.Windows.Forms.Button(); this.label40 = new System.Windows.Forms.Label(); this.label39 = new System.Windows.Forms.Label(); this.label10 = new System.Windows.Forms.Label(); @@ -289,10 +222,6 @@ this.label11 = new System.Windows.Forms.Label(); this.tab_Options_General = new System.Windows.Forms.TabPage(); this.groupBox25 = new System.Windows.Forms.GroupBox(); - this.tb_Coverage_MaxLat = new ScoutBase.Core.DoubleTextBox(); - this.tb_Coverage_MinLat = new ScoutBase.Core.DoubleTextBox(); - this.tb_Coverage_MaxLon = new ScoutBase.Core.DoubleTextBox(); - this.tb_Coverage_MinLon = new ScoutBase.Core.DoubleTextBox(); this.gm_Options_Coverage = new GMap.NET.WindowsForms.GMapControl(); this.label35 = new System.Windows.Forms.Label(); this.label54 = new System.Windows.Forms.Label(); @@ -304,9 +233,7 @@ this.groupBox27 = new System.Windows.Forms.GroupBox(); this.label108 = new System.Windows.Forms.Label(); this.gb_Options_Database_Settings = new System.Windows.Forms.GroupBox(); - this.cb_Options_Background_Calculations_Enable = new System.Windows.Forms.CheckBox(); this.label47 = new System.Windows.Forms.Label(); - this.ud_Options_Database_Update_Period = new System.Windows.Forms.NumericUpDown(); this.rb_Options_Database_Update_Periodically = new System.Windows.Forms.RadioButton(); this.rb_Options_Database_Update_OnStartup = new System.Windows.Forms.RadioButton(); this.rb_Options_Database_Update_Never = new System.Windows.Forms.RadioButton(); @@ -376,8 +303,6 @@ this.groupBox52 = new System.Windows.Forms.GroupBox(); this.gm_Options_ASTER3 = new GMap.NET.WindowsForms.GMapControl(); this.groupBox53 = new System.Windows.Forms.GroupBox(); - this.cb_Options_Elevation_ASTER3_EnableCache = new System.Windows.Forms.CheckBox(); - this.cb_Options_Elevation_ASTER3 = new System.Windows.Forms.CheckBox(); this.tba_Option_ASTER1 = new System.Windows.Forms.TabPage(); this.groupBox54 = new System.Windows.Forms.GroupBox(); this.label145 = new System.Windows.Forms.Label(); @@ -385,48 +310,33 @@ this.groupBox55 = new System.Windows.Forms.GroupBox(); this.gm_Options_ASTER1 = new GMap.NET.WindowsForms.GMapControl(); this.groupBox56 = new System.Windows.Forms.GroupBox(); - this.cb_Options_Elevation_ASTER1_EnableCache = new System.Windows.Forms.CheckBox(); - this.cb_Options_Elevation_ASTER1 = new System.Windows.Forms.CheckBox(); this.tab_Options_Alarm = new System.Windows.Forms.TabPage(); this.groupBox21 = new System.Windows.Forms.GroupBox(); - this.cb_Options_Alarm_Activate = new System.Windows.Forms.CheckBox(); this.groupBox19 = new System.Windows.Forms.GroupBox(); - this.cb_Options_Alarm_PlaySound = new System.Windows.Forms.CheckBox(); this.cb_Options_Alarm_BringWindowToFront = new System.Windows.Forms.CheckBox(); this.groupBox20 = new System.Windows.Forms.GroupBox(); - this.tb_Options_Alarm_Distance = new ScoutBase.Core.DoubleTextBox(); this.label36 = new System.Windows.Forms.Label(); this.label56 = new System.Windows.Forms.Label(); this.tab_Options_Network = new System.Windows.Forms.TabPage(); this.label86 = new System.Windows.Forms.Label(); this.groupBox32 = new System.Windows.Forms.GroupBox(); - this.tb_Options_Webserver_Port = new ScoutBase.Core.Int32TextBox(); this.label85 = new System.Windows.Forms.Label(); this.groupBox31 = new System.Windows.Forms.GroupBox(); - this.cb_Options_Server_Activate = new System.Windows.Forms.CheckBox(); this.label3 = new System.Windows.Forms.Label(); this.groupBox24 = new System.Windows.Forms.GroupBox(); - this.tb_Options_Server_Port = new ScoutBase.Core.Int32TextBox(); this.label6 = new System.Windows.Forms.Label(); this.label4 = new System.Windows.Forms.Label(); - this.tb_Options_Server_Name = new System.Windows.Forms.TextBox(); this.tab_Options_SpecLab = new System.Windows.Forms.TabPage(); this.groupBox3 = new System.Windows.Forms.GroupBox(); - this.tb_Options_SpecLab_UpdateInterval = new ScoutBase.Core.DoubleTextBox(); - this.tb_Options_SpecLab_F2 = new ScoutBase.Core.Int32TextBox(); - this.tb_Options_SpecLab_F1 = new ScoutBase.Core.Int32TextBox(); this.label70 = new System.Windows.Forms.Label(); this.label71 = new System.Windows.Forms.Label(); this.label68 = new System.Windows.Forms.Label(); this.label69 = new System.Windows.Forms.Label(); this.label67 = new System.Windows.Forms.Label(); this.label66 = new System.Windows.Forms.Label(); - this.tb_SpecLab_FileName = new System.Windows.Forms.TextBox(); this.label63 = new System.Windows.Forms.Label(); this.label64 = new System.Windows.Forms.Label(); this.label65 = new System.Windows.Forms.Label(); - this.tb_SpecLab_URL = new System.Windows.Forms.TextBox(); - this.cb_SpecLab_Enabled = new System.Windows.Forms.CheckBox(); this.tab_Options_Track = new System.Windows.Forms.TabPage(); this.gb_Options_Doppler = new System.Windows.Forms.GroupBox(); this.label150 = new System.Windows.Forms.Label(); @@ -476,8 +386,6 @@ this.rb_Options_Track_DDE_None = new System.Windows.Forms.RadioButton(); this.rb_Options_Track_DDE_HRD = new System.Windows.Forms.RadioButton(); this.gb_Options_Track_UDP = new System.Windows.Forms.GroupBox(); - this.tb_Options_Track_UDP_AirScout_Port = new ScoutBase.Core.Int32TextBox(); - this.tb_Options_Track_UDP_WinTest_Port = new ScoutBase.Core.Int32TextBox(); this.label90 = new System.Windows.Forms.Label(); this.label89 = new System.Windows.Forms.Label(); this.rb_Options_Track_UDP_None = new System.Windows.Forms.RadioButton(); @@ -534,11 +442,10 @@ this.pictureBox1 = new System.Windows.Forms.PictureBox(); this.btn_Options_Watchlist_Clear = new System.Windows.Forms.Button(); this.groupBox17 = new System.Windows.Forms.GroupBox(); - this.cb_Options_Watchlist_SyncWithKST = new System.Windows.Forms.CheckBox(); - this.tb_Options_Watchlist_MaxCount = new ScoutBase.Core.Int32TextBox(); this.label31 = new System.Windows.Forms.Label(); this.btn_Options_Watchlist_Manage = new System.Windows.Forms.Button(); this.tab_Options_Misc = new System.Windows.Forms.TabPage(); + this.groupBox35 = new System.Windows.Forms.GroupBox(); this.pictureBox4 = new System.Windows.Forms.PictureBox(); this.label143 = new System.Windows.Forms.Label(); this.groupBox15 = new System.Windows.Forms.GroupBox(); @@ -570,11 +477,107 @@ this.bw_StationDataUpdater = new System.ComponentModel.BackgroundWorker(); this.bw_ASTER3_MapUpdater = new System.ComponentModel.BackgroundWorker(); this.bw_ASTER1_MapUpdater = new System.ComponentModel.BackgroundWorker(); + this.groupBox36 = new System.Windows.Forms.GroupBox(); + this.tb_Coverage_MaxLat = new ScoutBase.Core.DoubleTextBox(); + this.tb_Coverage_MinLat = new ScoutBase.Core.DoubleTextBox(); + this.tb_Coverage_MaxLon = new ScoutBase.Core.DoubleTextBox(); + this.tb_Coverage_MinLon = new ScoutBase.Core.DoubleTextBox(); + this.cb_Options_Background_Calculations_Enable = new System.Windows.Forms.CheckBox(); + this.ud_Options_Database_Update_Period = new System.Windows.Forms.NumericUpDown(); + this.cb_Options_Locations_RestrictToAreaOfInterest = new System.Windows.Forms.CheckBox(); + this.cb_Options_SmallLettersForSubSquares = new System.Windows.Forms.CheckBox(); + this.cb_Options_Locator_AutoLength = new System.Windows.Forms.CheckBox(); + this.ud_Options_Locator_MaxLength = new System.Windows.Forms.NumericUpDown(); + this.tb_Options_DXLoc = new ScoutBase.Core.LocatorTextBox(); + this.tb_Options_MyLoc = new ScoutBase.Core.LocatorTextBox(); + this.cb_Options_Gauges_Show = new System.Windows.Forms.CheckBox(); + this.ud_Options_Gauges_Width = new System.Windows.Forms.NumericUpDown(); + this.cb_Options_Map_SmallMarkers = new System.Windows.Forms.CheckBox(); + this.cb_Options_Map_LabelCalls = new System.Windows.Forms.CheckBox(); + this.ud_Options_Charts_FontSize = new System.Windows.Forms.NumericUpDown(); + this.cb_Options_Distances_Activated = new System.Windows.Forms.CheckBox(); + this.cb_Options_Locators_Activate = new System.Windows.Forms.CheckBox(); + this.cb_Options_Watchlist_Activate = new System.Windows.Forms.CheckBox(); + this.cb_Options_Airports_Activate = new System.Windows.Forms.CheckBox(); + this.tb_Options_Map_Update_Interval = new ScoutBase.Core.Int32TextBox(); + this.tb_Options_Planes_IconSize_S = new ScoutBase.Core.Int32TextBox(); + this.tb_Options_Planes_IconSize_H = new ScoutBase.Core.Int32TextBox(); + this.tb_Options_Planes_IconSize_M = new ScoutBase.Core.Int32TextBox(); + this.tb_Options_Planes_IconSize_L = new ScoutBase.Core.Int32TextBox(); + this.cb_Options_InfoWin_MyElevation = new System.Windows.Forms.CheckBox(); + this.cb_Options_InfoWin_MyAzimuth = new System.Windows.Forms.CheckBox(); + this.cb_Options_InfoWin_MyDoppler = new System.Windows.Forms.CheckBox(); + this.cb_Options_InfoWin_DXDoppler = new System.Windows.Forms.CheckBox(); + this.cb_Options_InfoWin_DXAzimuth = new System.Windows.Forms.CheckBox(); + this.cb_Options_InfoWin_DXElevation = new System.Windows.Forms.CheckBox(); + this.cb_Options_InfoWin_Dist = new System.Windows.Forms.CheckBox(); + this.cb_Options_InfoWin_Time = new System.Windows.Forms.CheckBox(); + this.cb_Options_InfoWin_Epsilon = new System.Windows.Forms.CheckBox(); + this.cb_Options_InfoWin_Squint = new System.Windows.Forms.CheckBox(); + this.cb_Options_InfoWin_Angle = new System.Windows.Forms.CheckBox(); + this.rb_Options_InfoWin_Imperial = new System.Windows.Forms.RadioButton(); + this.rb_Options_InfoWin_Metric = new System.Windows.Forms.RadioButton(); + this.tb_Options_Map_ToolTipFont = new System.Windows.Forms.TextBox(); + this.cb_Options_InfoWin_AlwaysDetailed = new System.Windows.Forms.CheckBox(); + this.cb_Options_InfoWin_Position = new System.Windows.Forms.CheckBox(); + this.cb_Options_InfoWin_Alt = new System.Windows.Forms.CheckBox(); + this.cb_Options_InfoWin_Track = new System.Windows.Forms.CheckBox(); + this.cb_Options_InfoWin_Type = new System.Windows.Forms.CheckBox(); + this.cb_Options_InfoWin_Speed = new System.Windows.Forms.CheckBox(); + this.cb_Options_Map_Preloader_Enabled = new System.Windows.Forms.CheckBox(); + this.ud_Options_Map_Opacity = new AirScout.PercentageControl(); + this.ud_Options_Map_Preloader_MaxZoom = new System.Windows.Forms.NumericUpDown(); + this.cb_Options_Elevation_GLOBE_EnableCache = new System.Windows.Forms.CheckBox(); + this.cb_Options_Elevation_GLOBE = new System.Windows.Forms.CheckBox(); + this.cb_Options_Elevation_SRTM3_EnableCache = new System.Windows.Forms.CheckBox(); + this.cb_Options_Elevation_SRTM3 = new System.Windows.Forms.CheckBox(); + this.cb_Options_Elevation_SRTM1_EnableCache = new System.Windows.Forms.CheckBox(); + this.cb_Options_Elevation_SRTM1 = new System.Windows.Forms.CheckBox(); + this.cb_Options_Elevation_ASTER3_EnableCache = new System.Windows.Forms.CheckBox(); + this.cb_Options_Elevation_ASTER3 = new System.Windows.Forms.CheckBox(); + this.cb_Options_Elevation_ASTER1_EnableCache = new System.Windows.Forms.CheckBox(); + this.cb_Options_Elevation_ASTER1 = new System.Windows.Forms.CheckBox(); + this.tb_Options_Path_MaxLength = new ScoutBase.Core.DoubleTextBox(); + this.cb_Options_Path_BestCaseElevation = new System.Windows.Forms.CheckBox(); + this.cb_Options_TracePositions = new System.Windows.Forms.CheckBox(); + this.int32TextBox1 = new ScoutBase.Core.Int32TextBox(); + this.cb_Options_Planes_ExtendedPlausibilityCheck_Enabled = new System.Windows.Forms.CheckBox(); + this.tb_Options_Planes_Interval = new ScoutBase.Core.Int32TextBox(); + this.cb_Options_Planes_LogErrors = new System.Windows.Forms.CheckBox(); + this.cb_Options_Planes_KeepHistory = new System.Windows.Forms.CheckBox(); + this.ud_Options_Planes_Position_DatabaseLifetime = new System.Windows.Forms.NumericUpDown(); + this.tb_Options_Planes_Positions_TTL = new ScoutBase.Core.Int32TextBox(); + this.tb_Options_Planes_MaxAlt = new ScoutBase.Core.Int32TextBox(); + this.tb_Options_Planes_MinAlt = new ScoutBase.Core.Int32TextBox(); + this.tb_Options_Planes_Filter_MinAlt = new ScoutBase.Core.Int32TextBox(); + this.tb_Options_Planes_Filter_Max_Circumcircle = new ScoutBase.Core.Int32TextBox(); + this.cb_Options_Alarm_Activate = new System.Windows.Forms.CheckBox(); + this.cb_Options_Alarm_PlaySound = new System.Windows.Forms.CheckBox(); + this.tb_Options_Alarm_Distance = new ScoutBase.Core.DoubleTextBox(); + this.tb_Options_Webserver_Port = new ScoutBase.Core.Int32TextBox(); + this.cb_Options_Server_Activate = new System.Windows.Forms.CheckBox(); + this.tb_Options_Server_Port = new ScoutBase.Core.Int32TextBox(); + this.tb_Options_Server_Name = new System.Windows.Forms.TextBox(); + this.tb_Options_SpecLab_UpdateInterval = new ScoutBase.Core.DoubleTextBox(); + this.tb_Options_SpecLab_F2 = new ScoutBase.Core.Int32TextBox(); + this.tb_Options_SpecLab_F1 = new ScoutBase.Core.Int32TextBox(); + this.tb_SpecLab_FileName = new System.Windows.Forms.TextBox(); + this.tb_SpecLab_URL = new System.Windows.Forms.TextBox(); + this.cb_SpecLab_Enabled = new System.Windows.Forms.CheckBox(); + this.tb_Options_Track_UDP_AirScout_Port = new ScoutBase.Core.Int32TextBox(); + this.tb_Options_Track_UDP_WinTest_Port = new ScoutBase.Core.Int32TextBox(); + this.tb_Options_Track_Serial_Baudrate = new ScoutBase.Core.Int32TextBox(); + this.tb_Options_Track_Serial_Port = new System.Windows.Forms.TextBox(); + this.tb_Options_Track_Offset = new ScoutBase.Core.Int32TextBox(); + this.int32TextBox2 = new ScoutBase.Core.Int32TextBox(); + this.cb_Options_Track_Activate = new System.Windows.Forms.CheckBox(); + this.cb_Options_Watchlist_SyncWithKST = new System.Windows.Forms.CheckBox(); + this.tb_Options_Watchlist_MaxCount = new ScoutBase.Core.Int32TextBox(); + this.cb_Options_NewsFeed = new System.Windows.Forms.CheckBox(); ((System.ComponentModel.ISupportInitialize)(this.pb_Donate)).BeginInit(); this.tab_Options_Planes.SuspendLayout(); this.groupBox48.SuspendLayout(); this.groupBox40.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)(this.ud_Options_Planes_Position_DatabaseLifetime)).BeginInit(); this.groupBox38.SuspendLayout(); this.groupBox26.SuspendLayout(); this.groupBox6.SuspendLayout(); @@ -595,10 +598,8 @@ this.groupBox10.SuspendLayout(); this.tab_Options_Map.SuspendLayout(); this.groupBox22.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)(this.ud_Options_Gauges_Width)).BeginInit(); this.groupBox49.SuspendLayout(); this.groupBox37.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)(this.ud_Options_Charts_FontSize)).BeginInit(); this.groupBox23.SuspendLayout(); this.groupBox39.SuspendLayout(); this.groupBox30.SuspendLayout(); @@ -607,15 +608,12 @@ this.groupBox33.SuspendLayout(); this.groupBox29.SuspendLayout(); this.groupBox2.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)(this.ud_Options_Map_Opacity)).BeginInit(); - ((System.ComponentModel.ISupportInitialize)(this.ud_Options_Map_Preloader_MaxZoom)).BeginInit(); this.tab_Options_Stations.SuspendLayout(); this.groupBox18.SuspendLayout(); this.groupBox46.SuspendLayout(); this.groupBox45.SuspendLayout(); this.groupBox44.SuspendLayout(); this.groupBox14.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)(this.ud_Options_Locator_MaxLength)).BeginInit(); this.groupBox16.SuspendLayout(); this.groupBox5.SuspendLayout(); this.groupBox4.SuspendLayout(); @@ -626,7 +624,6 @@ this.groupBox47.SuspendLayout(); this.groupBox27.SuspendLayout(); this.gb_Options_Database_Settings.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)(this.ud_Options_Database_Update_Period)).BeginInit(); this.gb_Options_Database_Info.SuspendLayout(); this.tab_Options_ASTER3.SuspendLayout(); this.groupBox51.SuspendLayout(); @@ -668,10 +665,19 @@ ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit(); this.groupBox17.SuspendLayout(); this.tab_Options_Misc.SuspendLayout(); + this.groupBox35.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.pictureBox4)).BeginInit(); this.groupBox15.SuspendLayout(); this.tab_Options_Info.SuspendLayout(); this.ss_Options.SuspendLayout(); + this.groupBox36.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.ud_Options_Database_Update_Period)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.ud_Options_Locator_MaxLength)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.ud_Options_Gauges_Width)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.ud_Options_Charts_FontSize)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.ud_Options_Map_Opacity)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.ud_Options_Map_Preloader_MaxZoom)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.ud_Options_Planes_Position_DatabaseLifetime)).BeginInit(); this.SuspendLayout(); // // btn_Options_OK @@ -874,150 +880,72 @@ this.btn_DeleteSingleStation.UseVisualStyleBackColor = true; this.btn_DeleteSingleStation.Click += new System.EventHandler(this.btn_DeleteSingleStation_Click); // - // cb_Options_Locations_RestrictToAreaOfInterest + // btn_Options_LocalObstructions // - this.cb_Options_Locations_RestrictToAreaOfInterest.AutoSize = true; - this.cb_Options_Locations_RestrictToAreaOfInterest.Checked = global::AirScout.Properties.Settings.Default.Location_RestrictToAreaOfInterest; - this.cb_Options_Locations_RestrictToAreaOfInterest.CheckState = System.Windows.Forms.CheckState.Checked; - this.cb_Options_Locations_RestrictToAreaOfInterest.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "Location_RestrictToAreaOfInterest", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.cb_Options_Locations_RestrictToAreaOfInterest.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.cb_Options_Locations_RestrictToAreaOfInterest.Location = new System.Drawing.Point(12, 58); - this.cb_Options_Locations_RestrictToAreaOfInterest.Name = "cb_Options_Locations_RestrictToAreaOfInterest"; - this.cb_Options_Locations_RestrictToAreaOfInterest.Size = new System.Drawing.Size(230, 17); - this.cb_Options_Locations_RestrictToAreaOfInterest.TabIndex = 12; - this.cb_Options_Locations_RestrictToAreaOfInterest.Text = "Restrict locations to current Area of Interest"; - this.tt_Options.SetToolTip(this.cb_Options_Locations_RestrictToAreaOfInterest, "Restrict stations kept in the database to Area of Interest \r\n(all other stations" + - " will be removed during the update process)"); - this.cb_Options_Locations_RestrictToAreaOfInterest.UseVisualStyleBackColor = true; + this.btn_Options_LocalObstructions.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.btn_Options_LocalObstructions.Location = new System.Drawing.Point(9, 46); + this.btn_Options_LocalObstructions.Name = "btn_Options_LocalObstructions"; + this.btn_Options_LocalObstructions.Size = new System.Drawing.Size(220, 23); + this.btn_Options_LocalObstructions.TabIndex = 28; + this.btn_Options_LocalObstructions.Text = "Manage"; + this.tt_Options.SetToolTip(this.btn_Options_LocalObstructions, resources.GetString("btn_Options_LocalObstructions.ToolTip")); + this.btn_Options_LocalObstructions.UseVisualStyleBackColor = true; + this.btn_Options_LocalObstructions.Click += new System.EventHandler(this.btn_Options_LocalObstructions_Click); // - // cb_Options_InfoWin_AlwaysDetailed + // btn_Options_DXHorizon // - this.cb_Options_InfoWin_AlwaysDetailed.AutoSize = true; - this.cb_Options_InfoWin_AlwaysDetailed.Checked = global::AirScout.Properties.Settings.Default.InfoWin_AlwaysDetailed; - this.cb_Options_InfoWin_AlwaysDetailed.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "InfoWin_AlwaysDetailed", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.cb_Options_InfoWin_AlwaysDetailed.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.cb_Options_InfoWin_AlwaysDetailed.Location = new System.Drawing.Point(7, 92); - this.cb_Options_InfoWin_AlwaysDetailed.Name = "cb_Options_InfoWin_AlwaysDetailed"; - this.cb_Options_InfoWin_AlwaysDetailed.Size = new System.Drawing.Size(117, 43); - this.cb_Options_InfoWin_AlwaysDetailed.TabIndex = 35; - this.cb_Options_InfoWin_AlwaysDetailed.Tag = ""; - this.cb_Options_InfoWin_AlwaysDetailed.Text = "Always show \r\ndetailed window\r\nwhen selected"; - this.tt_Options.SetToolTip(this.cb_Options_InfoWin_AlwaysDetailed, "Always show detailed window when selected even when the aircraft is not heading t" + - "owards path."); - this.cb_Options_InfoWin_AlwaysDetailed.UseVisualStyleBackColor = true; + this.btn_Options_DXHorizon.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.btn_Options_DXHorizon.Location = new System.Drawing.Point(90, 157); + this.btn_Options_DXHorizon.Name = "btn_Options_DXHorizon"; + this.btn_Options_DXHorizon.Size = new System.Drawing.Size(100, 20); + this.btn_Options_DXHorizon.TabIndex = 24; + this.btn_Options_DXHorizon.Text = "Radio Horizon"; + this.tt_Options.SetToolTip(this.btn_Options_DXHorizon, "Calculates a radio horizon around the station\'s location"); + this.btn_Options_DXHorizon.UseVisualStyleBackColor = true; + this.btn_Options_DXHorizon.Click += new System.EventHandler(this.btn_Options_DXHorizon_Click); // - // cb_Options_Path_BestCaseElevation + // btn_DXCall_QRZ // - this.cb_Options_Path_BestCaseElevation.AutoSize = true; - this.cb_Options_Path_BestCaseElevation.Checked = global::AirScout.Properties.Settings.Default.Path_BestCaseElevation; - this.cb_Options_Path_BestCaseElevation.CheckState = System.Windows.Forms.CheckState.Checked; - this.cb_Options_Path_BestCaseElevation.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "Path_BestCaseElevation", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.cb_Options_Path_BestCaseElevation.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.cb_Options_Path_BestCaseElevation.Location = new System.Drawing.Point(6, 411); - this.cb_Options_Path_BestCaseElevation.Name = "cb_Options_Path_BestCaseElevation"; - this.cb_Options_Path_BestCaseElevation.Size = new System.Drawing.Size(438, 17); - this.cb_Options_Path_BestCaseElevation.TabIndex = 28; - this.cb_Options_Path_BestCaseElevation.Tag = ""; - this.cb_Options_Path_BestCaseElevation.Text = "Use best case elevation from grid square for both stations if precise location is" + - " unknown"; - this.tt_Options.SetToolTip(this.cb_Options_Path_BestCaseElevation, "If an exact position of a station is not available, use highest available elevati" + - "on within the given grid square. \r\nThis position is ONLY used for path calculati" + - "on and is not kept in database."); - this.cb_Options_Path_BestCaseElevation.UseVisualStyleBackColor = true; + this.btn_DXCall_QRZ.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.btn_DXCall_QRZ.Location = new System.Drawing.Point(90, 134); + this.btn_DXCall_QRZ.Name = "btn_DXCall_QRZ"; + this.btn_DXCall_QRZ.Size = new System.Drawing.Size(100, 20); + this.btn_DXCall_QRZ.TabIndex = 23; + this.btn_DXCall_QRZ.Text = "QRZ lookup"; + this.tt_Options.SetToolTip(this.btn_DXCall_QRZ, "Tries to get an exact location from www.qrz.com. The information will only be use" + + "d if the 6digit Maidenhead locator matches with the value in the Loc input box."); + this.btn_DXCall_QRZ.UseVisualStyleBackColor = true; + this.btn_DXCall_QRZ.Click += new System.EventHandler(this.btn_DXCall_QRZ_Click); // - // cb_Options_Planes_KeepHistory + // btn_Options_MyHorizon // - this.cb_Options_Planes_KeepHistory.AutoSize = true; - this.cb_Options_Planes_KeepHistory.Checked = global::AirScout.Properties.Settings.Default.Planes_KeepHistory; - this.cb_Options_Planes_KeepHistory.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "Planes_KeepHistory", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.cb_Options_Planes_KeepHistory.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.cb_Options_Planes_KeepHistory.Location = new System.Drawing.Point(18, 81); - this.cb_Options_Planes_KeepHistory.Name = "cb_Options_Planes_KeepHistory"; - this.cb_Options_Planes_KeepHistory.Size = new System.Drawing.Size(156, 17); - this.cb_Options_Planes_KeepHistory.TabIndex = 4; - this.cb_Options_Planes_KeepHistory.Text = "Keep Plane Position History"; - this.tt_Options.SetToolTip(this.cb_Options_Planes_KeepHistory, "Check this option to keep plane positions in database for history analysis.\r\nCAUT" + - "ION! This will need lot of CPU performance and space on disk!"); - this.cb_Options_Planes_KeepHistory.UseVisualStyleBackColor = true; + this.btn_Options_MyHorizon.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.btn_Options_MyHorizon.Location = new System.Drawing.Point(89, 157); + this.btn_Options_MyHorizon.Name = "btn_Options_MyHorizon"; + this.btn_Options_MyHorizon.Size = new System.Drawing.Size(100, 20); + this.btn_Options_MyHorizon.TabIndex = 17; + this.btn_Options_MyHorizon.Text = "Radio Horizon"; + this.tt_Options.SetToolTip(this.btn_Options_MyHorizon, "Calculates a radio horizon around the station\'s location"); + this.btn_Options_MyHorizon.UseVisualStyleBackColor = true; + this.btn_Options_MyHorizon.Click += new System.EventHandler(this.btn_Options_MyHorizon_Click); // - // tb_Options_Track_Serial_Baudrate + // btn_MyCall_QRZ // - this.tb_Options_Track_Serial_Baudrate.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::AirScout.Properties.Settings.Default, "Track_Serial_Baudrate", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.tb_Options_Track_Serial_Baudrate.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.tb_Options_Track_Serial_Baudrate.FormatSpecifier = "F0"; - this.tb_Options_Track_Serial_Baudrate.Location = new System.Drawing.Point(190, 40); - this.tb_Options_Track_Serial_Baudrate.MaxValue = 115200; - this.tb_Options_Track_Serial_Baudrate.MinValue = 0; - this.tb_Options_Track_Serial_Baudrate.Name = "tb_Options_Track_Serial_Baudrate"; - this.tb_Options_Track_Serial_Baudrate.Size = new System.Drawing.Size(72, 22); - this.tb_Options_Track_Serial_Baudrate.TabIndex = 11; - this.tb_Options_Track_Serial_Baudrate.Text = "4800"; - this.tt_Options.SetToolTip(this.tb_Options_Track_Serial_Baudrate, "Set the serial port baudrate for rotator control here.\\nBe sure that the baudrate" + - " is supported."); - this.tb_Options_Track_Serial_Baudrate.Value = global::AirScout.Properties.Settings.Default.Track_Serial_Baudrate; - // - // tb_Options_Track_Serial_Port - // - this.tb_Options_Track_Serial_Port.CharacterCasing = System.Windows.Forms.CharacterCasing.Upper; - this.tb_Options_Track_Serial_Port.DataBindings.Add(new System.Windows.Forms.Binding("Text", global::AirScout.Properties.Settings.Default, "Track_Serial_Port", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.tb_Options_Track_Serial_Port.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.tb_Options_Track_Serial_Port.Location = new System.Drawing.Point(190, 17); - this.tb_Options_Track_Serial_Port.Name = "tb_Options_Track_Serial_Port"; - this.tb_Options_Track_Serial_Port.Size = new System.Drawing.Size(54, 22); - this.tb_Options_Track_Serial_Port.TabIndex = 6; - this.tb_Options_Track_Serial_Port.Tag = ""; - this.tb_Options_Track_Serial_Port.Text = global::AirScout.Properties.Settings.Default.Track_Serial_Port; - this.tt_Options.SetToolTip(this.tb_Options_Track_Serial_Port, "Set the serial port for rotator control here.\\nBe sure that the port exists on yo" + - "ur computer."); - // - // tb_Options_Track_Offset - // - this.tb_Options_Track_Offset.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::AirScout.Properties.Settings.Default, "Track_Offset", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.tb_Options_Track_Offset.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.tb_Options_Track_Offset.FormatSpecifier = "F0"; - this.tb_Options_Track_Offset.Location = new System.Drawing.Point(569, 17); - this.tb_Options_Track_Offset.MaxValue = 30; - this.tb_Options_Track_Offset.MinValue = -30; - this.tb_Options_Track_Offset.Name = "tb_Options_Track_Offset"; - this.tb_Options_Track_Offset.Size = new System.Drawing.Size(43, 22); - this.tb_Options_Track_Offset.TabIndex = 57; - this.tb_Options_Track_Offset.Text = "0"; - this.tt_Options.SetToolTip(this.tb_Options_Track_Offset, "Allows you to set an offset in time when calculating aircraft position.\\n Use thi" + - "s to compensate delay in your rotator control."); - this.tb_Options_Track_Offset.Value = global::AirScout.Properties.Settings.Default.Track_Offset; - // - // int32TextBox2 - // - this.int32TextBox2.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::AirScout.Properties.Settings.Default, "Track_Update", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.int32TextBox2.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.int32TextBox2.FormatSpecifier = "F0"; - this.int32TextBox2.Location = new System.Drawing.Point(332, 17); - this.int32TextBox2.MaxValue = 10000; - this.int32TextBox2.MinValue = 100; - this.int32TextBox2.Name = "int32TextBox2"; - this.int32TextBox2.Size = new System.Drawing.Size(48, 22); - this.int32TextBox2.TabIndex = 1; - this.int32TextBox2.Text = "1000"; - this.tt_Options.SetToolTip(this.int32TextBox2, "Set the tracling update refresh rate.\\nBe sure that your rotator control and your" + - " rig can handle this rate."); - this.int32TextBox2.Value = global::AirScout.Properties.Settings.Default.Track_Update; - // - // cb_Options_Track_Activate - // - this.cb_Options_Track_Activate.Checked = global::AirScout.Properties.Settings.Default.Track_Activate; - this.cb_Options_Track_Activate.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "Track_Activate", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.cb_Options_Track_Activate.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.cb_Options_Track_Activate.Location = new System.Drawing.Point(13, 15); - this.cb_Options_Track_Activate.Name = "cb_Options_Track_Activate"; - this.cb_Options_Track_Activate.Size = new System.Drawing.Size(129, 24); - this.cb_Options_Track_Activate.TabIndex = 0; - this.cb_Options_Track_Activate.Text = "Activate Tracking"; - this.tt_Options.SetToolTip(this.cb_Options_Track_Activate, "Click here to activate/deactivate tracking"); - this.cb_Options_Track_Activate.CheckedChanged += new System.EventHandler(this.cb_Options_Track_Activate_CheckedChanged); + this.btn_MyCall_QRZ.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.btn_MyCall_QRZ.Location = new System.Drawing.Point(89, 134); + this.btn_MyCall_QRZ.Name = "btn_MyCall_QRZ"; + this.btn_MyCall_QRZ.Size = new System.Drawing.Size(100, 20); + this.btn_MyCall_QRZ.TabIndex = 16; + this.btn_MyCall_QRZ.Text = "QRZ lookup"; + this.tt_Options.SetToolTip(this.btn_MyCall_QRZ, "Tries to get an exact location from www.qrz.com. The information will only be use" + + "d if the 6digit Maidenhead locator matches with the value in the Loc input box."); + this.btn_MyCall_QRZ.UseVisualStyleBackColor = true; + this.btn_MyCall_QRZ.Click += new System.EventHandler(this.btn_MyCall_QRZ_Click); // // tab_Options_Planes // this.tab_Options_Planes.BackColor = System.Drawing.SystemColors.Control; + this.tab_Options_Planes.Controls.Add(this.groupBox36); this.tab_Options_Planes.Controls.Add(this.groupBox48); this.tab_Options_Planes.Controls.Add(this.groupBox40); this.tab_Options_Planes.Controls.Add(this.groupBox38); @@ -1047,20 +975,6 @@ this.groupBox48.TabStop = false; this.groupBox48.Text = "General Plane Feed Settings"; // - // int32TextBox1 - // - this.int32TextBox1.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::AirScout.Properties.Settings.Default, "Planes_ExtendedPlausibilityCheck_MaxErrorDist", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.int32TextBox1.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.int32TextBox1.FormatSpecifier = "F0"; - this.int32TextBox1.Location = new System.Drawing.Point(199, 84); - this.int32TextBox1.MaxValue = 600; - this.int32TextBox1.MinValue = 10; - this.int32TextBox1.Name = "int32TextBox1"; - this.int32TextBox1.Size = new System.Drawing.Size(52, 22); - this.int32TextBox1.TabIndex = 46; - this.int32TextBox1.Text = "10"; - this.int32TextBox1.Value = global::AirScout.Properties.Settings.Default.Planes_ExtendedPlausibilityCheck_MaxErrorDist; - // // label33 // this.label33.AutoSize = true; @@ -1071,34 +985,6 @@ this.label33.TabIndex = 45; this.label33.Text = "Max. allowed distance between \r\nreported and estimated position [km]:"; // - // cb_Options_Planes_ExtendedPlausibilityCheck_Enabled - // - this.cb_Options_Planes_ExtendedPlausibilityCheck_Enabled.AutoSize = true; - this.cb_Options_Planes_ExtendedPlausibilityCheck_Enabled.Checked = global::AirScout.Properties.Settings.Default.Planes_ExtendedPlausibilityCheck_Enabled; - this.cb_Options_Planes_ExtendedPlausibilityCheck_Enabled.CheckState = System.Windows.Forms.CheckState.Checked; - this.cb_Options_Planes_ExtendedPlausibilityCheck_Enabled.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "Planes_ExtendedPlausibilityCheck_Enabled", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.cb_Options_Planes_ExtendedPlausibilityCheck_Enabled.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.cb_Options_Planes_ExtendedPlausibilityCheck_Enabled.Location = new System.Drawing.Point(13, 53); - this.cb_Options_Planes_ExtendedPlausibilityCheck_Enabled.Name = "cb_Options_Planes_ExtendedPlausibilityCheck_Enabled"; - this.cb_Options_Planes_ExtendedPlausibilityCheck_Enabled.Size = new System.Drawing.Size(256, 17); - this.cb_Options_Planes_ExtendedPlausibilityCheck_Enabled.TabIndex = 44; - this.cb_Options_Planes_ExtendedPlausibilityCheck_Enabled.Text = "Enable extended plausibility check of aircraft info"; - this.cb_Options_Planes_ExtendedPlausibilityCheck_Enabled.UseVisualStyleBackColor = true; - // - // tb_Options_Planes_Interval - // - this.tb_Options_Planes_Interval.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::AirScout.Properties.Settings.Default, "Planes_Interval", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.tb_Options_Planes_Interval.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.tb_Options_Planes_Interval.FormatSpecifier = "F0"; - this.tb_Options_Planes_Interval.Location = new System.Drawing.Point(199, 22); - this.tb_Options_Planes_Interval.MaxValue = 600; - this.tb_Options_Planes_Interval.MinValue = 10; - this.tb_Options_Planes_Interval.Name = "tb_Options_Planes_Interval"; - this.tb_Options_Planes_Interval.Size = new System.Drawing.Size(52, 22); - this.tb_Options_Planes_Interval.TabIndex = 43; - this.tb_Options_Planes_Interval.Text = "60"; - this.tb_Options_Planes_Interval.Value = global::AirScout.Properties.Settings.Default.Planes_Interval; - // // label22 // this.label22.AutoSize = true; @@ -1109,19 +995,6 @@ this.label22.TabIndex = 35; this.label22.Text = "Interval [sec]:"; // - // cb_Options_Planes_LogErrors - // - this.cb_Options_Planes_LogErrors.AutoSize = true; - this.cb_Options_Planes_LogErrors.Checked = global::AirScout.Properties.Settings.Default.Planes_LogErrors; - this.cb_Options_Planes_LogErrors.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "Planes_LogErrors", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.cb_Options_Planes_LogErrors.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.cb_Options_Planes_LogErrors.Location = new System.Drawing.Point(12, 118); - this.cb_Options_Planes_LogErrors.Name = "cb_Options_Planes_LogErrors"; - this.cb_Options_Planes_LogErrors.Size = new System.Drawing.Size(249, 17); - this.cb_Options_Planes_LogErrors.TabIndex = 0; - this.cb_Options_Planes_LogErrors.Text = "Log errors as warnings to AirScout\'s main logfile"; - this.cb_Options_Planes_LogErrors.UseVisualStyleBackColor = true; - // // groupBox40 // this.groupBox40.Controls.Add(this.cb_Options_Planes_KeepHistory); @@ -1146,26 +1019,6 @@ this.label55.TabIndex = 3; this.label55.Text = "Aircraft positions older than above entered value will be deleted on next startup" + " (0 = forever)."; - // - // ud_Options_Planes_Position_DatabaseLifetime - // - this.ud_Options_Planes_Position_DatabaseLifetime.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::AirScout.Properties.Settings.Default, "AircraftDatabase_MaxDaysLifetime", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.ud_Options_Planes_Position_DatabaseLifetime.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.ud_Options_Planes_Position_DatabaseLifetime.Location = new System.Drawing.Point(199, 14); - this.ud_Options_Planes_Position_DatabaseLifetime.Maximum = new decimal(new int[] { - 365, - 0, - 0, - 0}); - this.ud_Options_Planes_Position_DatabaseLifetime.Minimum = new decimal(new int[] { - 1, - 0, - 0, - 0}); - this.ud_Options_Planes_Position_DatabaseLifetime.Name = "ud_Options_Planes_Position_DatabaseLifetime"; - this.ud_Options_Planes_Position_DatabaseLifetime.Size = new System.Drawing.Size(49, 22); - this.ud_Options_Planes_Position_DatabaseLifetime.TabIndex = 2; - this.ud_Options_Planes_Position_DatabaseLifetime.Value = global::AirScout.Properties.Settings.Default.AircraftDatabase_MaxDaysLifetime; // // label53 // @@ -1206,48 +1059,6 @@ this.groupBox38.TabStop = false; this.groupBox38.Text = "Plane Position Database Filters"; // - // tb_Options_Planes_Positions_TTL - // - this.tb_Options_Planes_Positions_TTL.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::AirScout.Properties.Settings.Default, "Planes_Position_TTL", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.tb_Options_Planes_Positions_TTL.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.tb_Options_Planes_Positions_TTL.FormatSpecifier = "F0"; - this.tb_Options_Planes_Positions_TTL.Location = new System.Drawing.Point(192, 65); - this.tb_Options_Planes_Positions_TTL.MaxValue = 30; - this.tb_Options_Planes_Positions_TTL.MinValue = 0; - this.tb_Options_Planes_Positions_TTL.Name = "tb_Options_Planes_Positions_TTL"; - this.tb_Options_Planes_Positions_TTL.Size = new System.Drawing.Size(52, 22); - this.tb_Options_Planes_Positions_TTL.TabIndex = 43; - this.tb_Options_Planes_Positions_TTL.Text = "5"; - this.tb_Options_Planes_Positions_TTL.Value = global::AirScout.Properties.Settings.Default.Planes_Position_TTL; - // - // tb_Options_Planes_MaxAlt - // - this.tb_Options_Planes_MaxAlt.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::AirScout.Properties.Settings.Default, "Planes_MaxAlt", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.tb_Options_Planes_MaxAlt.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.tb_Options_Planes_MaxAlt.FormatSpecifier = "F0"; - this.tb_Options_Planes_MaxAlt.Location = new System.Drawing.Point(192, 39); - this.tb_Options_Planes_MaxAlt.MaxValue = 20000; - this.tb_Options_Planes_MaxAlt.MinValue = 0; - this.tb_Options_Planes_MaxAlt.Name = "tb_Options_Planes_MaxAlt"; - this.tb_Options_Planes_MaxAlt.Size = new System.Drawing.Size(52, 22); - this.tb_Options_Planes_MaxAlt.TabIndex = 42; - this.tb_Options_Planes_MaxAlt.Text = "12200"; - this.tb_Options_Planes_MaxAlt.Value = global::AirScout.Properties.Settings.Default.Planes_MaxAlt; - // - // tb_Options_Planes_MinAlt - // - this.tb_Options_Planes_MinAlt.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::AirScout.Properties.Settings.Default, "Planes_MinAlt", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.tb_Options_Planes_MinAlt.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.tb_Options_Planes_MinAlt.FormatSpecifier = "F0"; - this.tb_Options_Planes_MinAlt.Location = new System.Drawing.Point(192, 14); - this.tb_Options_Planes_MinAlt.MaxValue = 20000; - this.tb_Options_Planes_MinAlt.MinValue = 0; - this.tb_Options_Planes_MinAlt.Name = "tb_Options_Planes_MinAlt"; - this.tb_Options_Planes_MinAlt.Size = new System.Drawing.Size(52, 22); - this.tb_Options_Planes_MinAlt.TabIndex = 41; - this.tb_Options_Planes_MinAlt.Text = "5000"; - this.tb_Options_Planes_MinAlt.Value = global::AirScout.Properties.Settings.Default.Planes_MinAlt; - // // label2 // this.label2.AutoSize = true; @@ -1326,34 +1137,6 @@ this.groupBox26.TabStop = false; this.groupBox26.Text = "Plane Live Position Filters"; // - // tb_Options_Planes_Filter_MinAlt - // - this.tb_Options_Planes_Filter_MinAlt.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::AirScout.Properties.Settings.Default, "Planes_Filter_Min_Alt", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.tb_Options_Planes_Filter_MinAlt.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.tb_Options_Planes_Filter_MinAlt.FormatSpecifier = "F0"; - this.tb_Options_Planes_Filter_MinAlt.Location = new System.Drawing.Point(192, 86); - this.tb_Options_Planes_Filter_MinAlt.MaxValue = 12000; - this.tb_Options_Planes_Filter_MinAlt.MinValue = 0; - this.tb_Options_Planes_Filter_MinAlt.Name = "tb_Options_Planes_Filter_MinAlt"; - this.tb_Options_Planes_Filter_MinAlt.Size = new System.Drawing.Size(52, 22); - this.tb_Options_Planes_Filter_MinAlt.TabIndex = 43; - this.tb_Options_Planes_Filter_MinAlt.Text = "0"; - this.tb_Options_Planes_Filter_MinAlt.Value = global::AirScout.Properties.Settings.Default.Planes_Filter_Min_Alt; - // - // tb_Options_Planes_Filter_Max_Circumcircle - // - this.tb_Options_Planes_Filter_Max_Circumcircle.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::AirScout.Properties.Settings.Default, "Planes_Filter_Max_Circumcircle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.tb_Options_Planes_Filter_Max_Circumcircle.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.tb_Options_Planes_Filter_Max_Circumcircle.FormatSpecifier = "F0"; - this.tb_Options_Planes_Filter_Max_Circumcircle.Location = new System.Drawing.Point(192, 59); - this.tb_Options_Planes_Filter_Max_Circumcircle.MaxValue = 1000; - this.tb_Options_Planes_Filter_Max_Circumcircle.MinValue = -1; - this.tb_Options_Planes_Filter_Max_Circumcircle.Name = "tb_Options_Planes_Filter_Max_Circumcircle"; - this.tb_Options_Planes_Filter_Max_Circumcircle.Size = new System.Drawing.Size(52, 22); - this.tb_Options_Planes_Filter_Max_Circumcircle.TabIndex = 42; - this.tb_Options_Planes_Filter_Max_Circumcircle.Text = "0"; - this.tb_Options_Planes_Filter_Max_Circumcircle.Value = global::AirScout.Properties.Settings.Default.Planes_Filter_Max_Circumcircle; - // // label96 // this.label96.AutoSize = true; @@ -1706,20 +1489,6 @@ this.label147.TabIndex = 40; this.label147.Text = "Export elevation path to CSV (do not change settings before as they may not have " + " effect):"; - // - // tb_Options_Path_MaxLength - // - this.tb_Options_Path_MaxLength.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::AirScout.Properties.Settings.Default, "Path_MaxLength", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.tb_Options_Path_MaxLength.Font = new System.Drawing.Font("Courier New", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.tb_Options_Path_MaxLength.FormatSpecifier = "F0"; - this.tb_Options_Path_MaxLength.Location = new System.Drawing.Point(318, 385); - this.tb_Options_Path_MaxLength.MaxValue = double.NaN; - this.tb_Options_Path_MaxLength.MinValue = double.NaN; - this.tb_Options_Path_MaxLength.Name = "tb_Options_Path_MaxLength"; - this.tb_Options_Path_MaxLength.Size = new System.Drawing.Size(57, 20); - this.tb_Options_Path_MaxLength.TabIndex = 39; - this.tb_Options_Path_MaxLength.Text = "1000"; - this.tb_Options_Path_MaxLength.Value = global::AirScout.Properties.Settings.Default.Path_MaxLength; // // label131 // @@ -1892,34 +1661,6 @@ this.groupBox12.TabStop = false; this.groupBox12.Text = "Use Elevation Model"; // - // cb_Options_Elevation_SRTM1_EnableCache - // - this.cb_Options_Elevation_SRTM1_EnableCache.AutoSize = true; - this.cb_Options_Elevation_SRTM1_EnableCache.Checked = global::AirScout.Properties.Settings.Default.Elevation_SRTM1_EnableCache; - this.cb_Options_Elevation_SRTM1_EnableCache.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "Elevation_SRTM1_EnableCache", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.cb_Options_Elevation_SRTM1_EnableCache.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.cb_Options_Elevation_SRTM1_EnableCache.Location = new System.Drawing.Point(6, 42); - this.cb_Options_Elevation_SRTM1_EnableCache.Name = "cb_Options_Elevation_SRTM1_EnableCache"; - this.cb_Options_Elevation_SRTM1_EnableCache.Size = new System.Drawing.Size(179, 17); - this.cb_Options_Elevation_SRTM1_EnableCache.TabIndex = 17; - this.cb_Options_Elevation_SRTM1_EnableCache.Tag = ""; - this.cb_Options_Elevation_SRTM1_EnableCache.Text = "Keep downloaded elevation tiles"; - this.cb_Options_Elevation_SRTM1_EnableCache.UseVisualStyleBackColor = true; - // - // cb_Options_Elevation_SRTM1 - // - this.cb_Options_Elevation_SRTM1.AutoSize = true; - this.cb_Options_Elevation_SRTM1.Checked = global::AirScout.Properties.Settings.Default.Elevation_SRTM1_Enabled; - this.cb_Options_Elevation_SRTM1.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "Elevation_SRTM1_Enabled", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.cb_Options_Elevation_SRTM1.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.cb_Options_Elevation_SRTM1.Location = new System.Drawing.Point(6, 19); - this.cb_Options_Elevation_SRTM1.Name = "cb_Options_Elevation_SRTM1"; - this.cb_Options_Elevation_SRTM1.Size = new System.Drawing.Size(155, 17); - this.cb_Options_Elevation_SRTM1.TabIndex = 16; - this.cb_Options_Elevation_SRTM1.Tag = ""; - this.cb_Options_Elevation_SRTM1.Text = "Use SRTM1 elevation data"; - this.cb_Options_Elevation_SRTM1.UseVisualStyleBackColor = true; - // // tab_Options_SRTM3 // this.tab_Options_SRTM3.BackColor = System.Drawing.SystemColors.Control; @@ -2028,34 +1769,6 @@ this.groupBox8.TabStop = false; this.groupBox8.Text = "Use Elevation Model"; // - // cb_Options_Elevation_SRTM3_EnableCache - // - this.cb_Options_Elevation_SRTM3_EnableCache.AutoSize = true; - this.cb_Options_Elevation_SRTM3_EnableCache.Checked = global::AirScout.Properties.Settings.Default.Elevation_SRTM3_EnableCache; - this.cb_Options_Elevation_SRTM3_EnableCache.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "Elevation_SRTM3_EnableCache", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.cb_Options_Elevation_SRTM3_EnableCache.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.cb_Options_Elevation_SRTM3_EnableCache.Location = new System.Drawing.Point(6, 42); - this.cb_Options_Elevation_SRTM3_EnableCache.Name = "cb_Options_Elevation_SRTM3_EnableCache"; - this.cb_Options_Elevation_SRTM3_EnableCache.Size = new System.Drawing.Size(179, 17); - this.cb_Options_Elevation_SRTM3_EnableCache.TabIndex = 13; - this.cb_Options_Elevation_SRTM3_EnableCache.Tag = ""; - this.cb_Options_Elevation_SRTM3_EnableCache.Text = "Keep downloaded elevation tiles"; - this.cb_Options_Elevation_SRTM3_EnableCache.UseVisualStyleBackColor = true; - // - // cb_Options_Elevation_SRTM3 - // - this.cb_Options_Elevation_SRTM3.AutoSize = true; - this.cb_Options_Elevation_SRTM3.Checked = global::AirScout.Properties.Settings.Default.Elevation_SRTM3_Enabled; - this.cb_Options_Elevation_SRTM3.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "Elevation_SRTM3_Enabled", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.cb_Options_Elevation_SRTM3.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.cb_Options_Elevation_SRTM3.Location = new System.Drawing.Point(6, 19); - this.cb_Options_Elevation_SRTM3.Name = "cb_Options_Elevation_SRTM3"; - this.cb_Options_Elevation_SRTM3.Size = new System.Drawing.Size(155, 17); - this.cb_Options_Elevation_SRTM3.TabIndex = 12; - this.cb_Options_Elevation_SRTM3.Tag = ""; - this.cb_Options_Elevation_SRTM3.Text = "Use SRTM3 elevation data"; - this.cb_Options_Elevation_SRTM3.UseVisualStyleBackColor = true; - // // tab_Options_GLOBE // this.tab_Options_GLOBE.BackColor = System.Drawing.SystemColors.Control; @@ -2164,36 +1877,6 @@ this.groupBox10.TabStop = false; this.groupBox10.Text = "Use Elevation Model"; // - // cb_Options_Elevation_GLOBE_EnableCache - // - this.cb_Options_Elevation_GLOBE_EnableCache.AutoSize = true; - this.cb_Options_Elevation_GLOBE_EnableCache.Checked = global::AirScout.Properties.Settings.Default.Elevation_GLOBE_EnableCache; - this.cb_Options_Elevation_GLOBE_EnableCache.CheckState = System.Windows.Forms.CheckState.Checked; - this.cb_Options_Elevation_GLOBE_EnableCache.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "Elevation_GLOBE_EnableCache", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.cb_Options_Elevation_GLOBE_EnableCache.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.cb_Options_Elevation_GLOBE_EnableCache.Location = new System.Drawing.Point(12, 42); - this.cb_Options_Elevation_GLOBE_EnableCache.Name = "cb_Options_Elevation_GLOBE_EnableCache"; - this.cb_Options_Elevation_GLOBE_EnableCache.Size = new System.Drawing.Size(179, 17); - this.cb_Options_Elevation_GLOBE_EnableCache.TabIndex = 8; - this.cb_Options_Elevation_GLOBE_EnableCache.Tag = ""; - this.cb_Options_Elevation_GLOBE_EnableCache.Text = "Keep downloaded elevation tiles"; - this.cb_Options_Elevation_GLOBE_EnableCache.UseVisualStyleBackColor = true; - // - // cb_Options_Elevation_GLOBE - // - this.cb_Options_Elevation_GLOBE.AutoSize = true; - this.cb_Options_Elevation_GLOBE.Checked = global::AirScout.Properties.Settings.Default.Elevation_GLOBE_Enabled; - this.cb_Options_Elevation_GLOBE.CheckState = System.Windows.Forms.CheckState.Checked; - this.cb_Options_Elevation_GLOBE.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "Elevation_GLOBE_Enabled", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.cb_Options_Elevation_GLOBE.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.cb_Options_Elevation_GLOBE.Location = new System.Drawing.Point(12, 19); - this.cb_Options_Elevation_GLOBE.Name = "cb_Options_Elevation_GLOBE"; - this.cb_Options_Elevation_GLOBE.Size = new System.Drawing.Size(154, 17); - this.cb_Options_Elevation_GLOBE.TabIndex = 7; - this.cb_Options_Elevation_GLOBE.Tag = ""; - this.cb_Options_Elevation_GLOBE.Text = "Use GLOBE elevation data"; - this.cb_Options_Elevation_GLOBE.UseVisualStyleBackColor = true; - // // tab_Options_Map // this.tab_Options_Map.BackColor = System.Drawing.SystemColors.Control; @@ -2228,20 +1911,6 @@ this.groupBox22.TabStop = false; this.groupBox22.Text = "Tracking Gauges"; // - // cb_Options_Gauges_Show - // - this.cb_Options_Gauges_Show.AutoSize = true; - this.cb_Options_Gauges_Show.Checked = global::AirScout.Properties.Settings.Default.Map_TrackingGaugesShow; - this.cb_Options_Gauges_Show.CheckState = System.Windows.Forms.CheckState.Checked; - this.cb_Options_Gauges_Show.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "Map_TrackingGaugesShow", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.cb_Options_Gauges_Show.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.cb_Options_Gauges_Show.Location = new System.Drawing.Point(16, 19); - this.cb_Options_Gauges_Show.Name = "cb_Options_Gauges_Show"; - this.cb_Options_Gauges_Show.Size = new System.Drawing.Size(199, 17); - this.cb_Options_Gauges_Show.TabIndex = 7; - this.cb_Options_Gauges_Show.Text = "Show large Tracking Display on map"; - this.cb_Options_Gauges_Show.UseVisualStyleBackColor = true; - // // cb_Options_Gauges_ForeColor // this.cb_Options_Gauges_ForeColor.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); @@ -2272,26 +1941,6 @@ this.label188.TabIndex = 4; this.label188.Text = "Azimuth/Elevation Gauge Width:"; // - // ud_Options_Gauges_Width - // - this.ud_Options_Gauges_Width.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::AirScout.Properties.Settings.Default, "Map_TrackingGaugeWidth", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.ud_Options_Gauges_Width.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.ud_Options_Gauges_Width.Location = new System.Drawing.Point(174, 41); - this.ud_Options_Gauges_Width.Maximum = new decimal(new int[] { - 1000, - 0, - 0, - 0}); - this.ud_Options_Gauges_Width.Minimum = new decimal(new int[] { - 175, - 0, - 0, - 0}); - this.ud_Options_Gauges_Width.Name = "ud_Options_Gauges_Width"; - this.ud_Options_Gauges_Width.Size = new System.Drawing.Size(63, 22); - this.ud_Options_Gauges_Width.TabIndex = 3; - this.ud_Options_Gauges_Width.Value = global::AirScout.Properties.Settings.Default.Map_TrackingGaugeWidth; - // // groupBox49 // this.groupBox49.Controls.Add(this.cb_Options_Map_SmallMarkers); @@ -2304,34 +1953,6 @@ this.groupBox49.TabStop = false; this.groupBox49.Text = "Multi-Path"; // - // cb_Options_Map_SmallMarkers - // - this.cb_Options_Map_SmallMarkers.AutoSize = true; - this.cb_Options_Map_SmallMarkers.Checked = global::AirScout.Properties.Settings.Default.Map_SmallMarkers; - this.cb_Options_Map_SmallMarkers.CheckState = System.Windows.Forms.CheckState.Checked; - this.cb_Options_Map_SmallMarkers.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "Map_SmallMarkers", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.cb_Options_Map_SmallMarkers.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.cb_Options_Map_SmallMarkers.Location = new System.Drawing.Point(18, 16); - this.cb_Options_Map_SmallMarkers.Name = "cb_Options_Map_SmallMarkers"; - this.cb_Options_Map_SmallMarkers.Size = new System.Drawing.Size(199, 17); - this.cb_Options_Map_SmallMarkers.TabIndex = 2; - this.cb_Options_Map_SmallMarkers.Text = "Use Small Markers for all Path Marks"; - this.cb_Options_Map_SmallMarkers.UseVisualStyleBackColor = true; - // - // cb_Options_Map_LabelCalls - // - this.cb_Options_Map_LabelCalls.AutoSize = true; - this.cb_Options_Map_LabelCalls.Checked = global::AirScout.Properties.Settings.Default.Map_LabelCalls; - this.cb_Options_Map_LabelCalls.CheckState = System.Windows.Forms.CheckState.Checked; - this.cb_Options_Map_LabelCalls.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "Map_LabelCalls", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.cb_Options_Map_LabelCalls.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.cb_Options_Map_LabelCalls.Location = new System.Drawing.Point(18, 35); - this.cb_Options_Map_LabelCalls.Name = "cb_Options_Map_LabelCalls"; - this.cb_Options_Map_LabelCalls.Size = new System.Drawing.Size(209, 17); - this.cb_Options_Map_LabelCalls.TabIndex = 3; - this.cb_Options_Map_LabelCalls.Text = "Show Labels with Callsign at Locations"; - this.cb_Options_Map_LabelCalls.UseVisualStyleBackColor = true; - // // groupBox37 // this.groupBox37.Controls.Add(this.label34); @@ -2354,26 +1975,6 @@ this.label34.TabIndex = 2; this.label34.Text = "Font Size for Axes in Diagrams etc.:"; // - // 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(192, 19); - 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; - // // groupBox23 // this.groupBox23.Controls.Add(this.cb_Options_Distances_Activated); @@ -2388,61 +1989,6 @@ this.groupBox23.TabStop = false; this.groupBox23.Text = "General "; // - // cb_Options_Distances_Activated - // - this.cb_Options_Distances_Activated.AutoSize = true; - this.cb_Options_Distances_Activated.Checked = global::AirScout.Properties.Settings.Default.Map_ShowDistances; - this.cb_Options_Distances_Activated.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "Map_ShowDistances", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.cb_Options_Distances_Activated.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.cb_Options_Distances_Activated.Location = new System.Drawing.Point(16, 54); - this.cb_Options_Distances_Activated.Name = "cb_Options_Distances_Activated"; - this.cb_Options_Distances_Activated.Size = new System.Drawing.Size(132, 17); - this.cb_Options_Distances_Activated.TabIndex = 12; - this.cb_Options_Distances_Activated.Text = "Show Distance Circles"; - this.cb_Options_Distances_Activated.UseVisualStyleBackColor = true; - // - // cb_Options_Locators_Activate - // - this.cb_Options_Locators_Activate.AutoSize = true; - this.cb_Options_Locators_Activate.Checked = global::AirScout.Properties.Settings.Default.Map_ShowLocators; - this.cb_Options_Locators_Activate.CheckState = System.Windows.Forms.CheckState.Checked; - this.cb_Options_Locators_Activate.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "Map_ShowLocators", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.cb_Options_Locators_Activate.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.cb_Options_Locators_Activate.Location = new System.Drawing.Point(16, 37); - this.cb_Options_Locators_Activate.Name = "cb_Options_Locators_Activate"; - this.cb_Options_Locators_Activate.Size = new System.Drawing.Size(114, 17); - this.cb_Options_Locators_Activate.TabIndex = 11; - this.cb_Options_Locators_Activate.Text = "Show Locator Grid"; - this.cb_Options_Locators_Activate.UseVisualStyleBackColor = true; - // - // cb_Options_Watchlist_Activate - // - this.cb_Options_Watchlist_Activate.AutoSize = true; - this.cb_Options_Watchlist_Activate.Checked = global::AirScout.Properties.Settings.Default.Watchlist_Activated; - this.cb_Options_Watchlist_Activate.CheckState = System.Windows.Forms.CheckState.Checked; - this.cb_Options_Watchlist_Activate.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "Watchlist_Activated", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.cb_Options_Watchlist_Activate.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.cb_Options_Watchlist_Activate.Location = new System.Drawing.Point(16, 71); - this.cb_Options_Watchlist_Activate.Name = "cb_Options_Watchlist_Activate"; - this.cb_Options_Watchlist_Activate.Size = new System.Drawing.Size(144, 17); - this.cb_Options_Watchlist_Activate.TabIndex = 1; - this.cb_Options_Watchlist_Activate.Text = "Show Watchlist Callsigns"; - this.cb_Options_Watchlist_Activate.UseVisualStyleBackColor = true; - // - // cb_Options_Airports_Activate - // - this.cb_Options_Airports_Activate.AutoSize = true; - this.cb_Options_Airports_Activate.Checked = global::AirScout.Properties.Settings.Default.Airports_Activate; - this.cb_Options_Airports_Activate.CheckState = System.Windows.Forms.CheckState.Checked; - this.cb_Options_Airports_Activate.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "Airports_Activate", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.cb_Options_Airports_Activate.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.cb_Options_Airports_Activate.Location = new System.Drawing.Point(16, 19); - this.cb_Options_Airports_Activate.Name = "cb_Options_Airports_Activate"; - this.cb_Options_Airports_Activate.Size = new System.Drawing.Size(91, 17); - this.cb_Options_Airports_Activate.TabIndex = 0; - this.cb_Options_Airports_Activate.Text = "Show Airports"; - this.cb_Options_Airports_Activate.UseVisualStyleBackColor = true; - // // groupBox39 // this.groupBox39.Controls.Add(this.tb_Options_Map_Update_Interval); @@ -2456,20 +2002,6 @@ this.groupBox39.TabStop = false; this.groupBox39.Text = "Screen Updates"; // - // tb_Options_Map_Update_Interval - // - this.tb_Options_Map_Update_Interval.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::AirScout.Properties.Settings.Default, "Map_Update", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.tb_Options_Map_Update_Interval.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.tb_Options_Map_Update_Interval.FormatSpecifier = "F0"; - this.tb_Options_Map_Update_Interval.Location = new System.Drawing.Point(119, 17); - this.tb_Options_Map_Update_Interval.MaxValue = 3600; - this.tb_Options_Map_Update_Interval.MinValue = 0; - this.tb_Options_Map_Update_Interval.Name = "tb_Options_Map_Update_Interval"; - this.tb_Options_Map_Update_Interval.Size = new System.Drawing.Size(37, 22); - this.tb_Options_Map_Update_Interval.TabIndex = 23; - this.tb_Options_Map_Update_Interval.Text = "1"; - this.tb_Options_Map_Update_Interval.Value = global::AirScout.Properties.Settings.Default.Map_Update; - // // label97 // this.label97.AutoSize = true; @@ -2509,62 +2041,6 @@ this.groupBox30.TabStop = false; this.groupBox30.Text = "Plane Icon Sizes per Category"; // - // tb_Options_Planes_IconSize_S - // - this.tb_Options_Planes_IconSize_S.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::AirScout.Properties.Settings.Default, "Planes_IconSize_S", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.tb_Options_Planes_IconSize_S.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.tb_Options_Planes_IconSize_S.FormatSpecifier = "F0"; - this.tb_Options_Planes_IconSize_S.Location = new System.Drawing.Point(183, 43); - this.tb_Options_Planes_IconSize_S.MaxValue = 128; - this.tb_Options_Planes_IconSize_S.MinValue = 0; - this.tb_Options_Planes_IconSize_S.Name = "tb_Options_Planes_IconSize_S"; - this.tb_Options_Planes_IconSize_S.Size = new System.Drawing.Size(37, 22); - this.tb_Options_Planes_IconSize_S.TabIndex = 16; - this.tb_Options_Planes_IconSize_S.Text = "48"; - this.tb_Options_Planes_IconSize_S.Value = global::AirScout.Properties.Settings.Default.Planes_IconSize_S; - // - // tb_Options_Planes_IconSize_H - // - this.tb_Options_Planes_IconSize_H.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::AirScout.Properties.Settings.Default, "Planes_IconSize_H", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.tb_Options_Planes_IconSize_H.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.tb_Options_Planes_IconSize_H.FormatSpecifier = "F0"; - this.tb_Options_Planes_IconSize_H.Location = new System.Drawing.Point(183, 15); - this.tb_Options_Planes_IconSize_H.MaxValue = 128; - this.tb_Options_Planes_IconSize_H.MinValue = 0; - this.tb_Options_Planes_IconSize_H.Name = "tb_Options_Planes_IconSize_H"; - this.tb_Options_Planes_IconSize_H.Size = new System.Drawing.Size(37, 22); - this.tb_Options_Planes_IconSize_H.TabIndex = 15; - this.tb_Options_Planes_IconSize_H.Text = "36"; - this.tb_Options_Planes_IconSize_H.Value = global::AirScout.Properties.Settings.Default.Planes_IconSize_H; - // - // tb_Options_Planes_IconSize_M - // - this.tb_Options_Planes_IconSize_M.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::AirScout.Properties.Settings.Default, "Planes_IconSize_M", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.tb_Options_Planes_IconSize_M.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.tb_Options_Planes_IconSize_M.FormatSpecifier = "F0"; - this.tb_Options_Planes_IconSize_M.Location = new System.Drawing.Point(63, 43); - this.tb_Options_Planes_IconSize_M.MaxValue = 128; - this.tb_Options_Planes_IconSize_M.MinValue = 0; - this.tb_Options_Planes_IconSize_M.Name = "tb_Options_Planes_IconSize_M"; - this.tb_Options_Planes_IconSize_M.Size = new System.Drawing.Size(37, 22); - this.tb_Options_Planes_IconSize_M.TabIndex = 14; - this.tb_Options_Planes_IconSize_M.Text = "24"; - this.tb_Options_Planes_IconSize_M.Value = global::AirScout.Properties.Settings.Default.Planes_IconSize_M; - // - // tb_Options_Planes_IconSize_L - // - this.tb_Options_Planes_IconSize_L.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::AirScout.Properties.Settings.Default, "Planes_IconSize_L", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.tb_Options_Planes_IconSize_L.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.tb_Options_Planes_IconSize_L.FormatSpecifier = "F0"; - this.tb_Options_Planes_IconSize_L.Location = new System.Drawing.Point(63, 17); - this.tb_Options_Planes_IconSize_L.MaxValue = 128; - this.tb_Options_Planes_IconSize_L.MinValue = 0; - this.tb_Options_Planes_IconSize_L.Name = "tb_Options_Planes_IconSize_L"; - this.tb_Options_Planes_IconSize_L.Size = new System.Drawing.Size(37, 22); - this.tb_Options_Planes_IconSize_L.TabIndex = 13; - this.tb_Options_Planes_IconSize_L.Text = "16"; - this.tb_Options_Planes_IconSize_L.Value = global::AirScout.Properties.Settings.Default.Planes_IconSize_L; - // // label84 // this.label84.AutoSize = true; @@ -2664,90 +2140,6 @@ this.label76.Text = "Visible only in detailed window and when tracking"; this.label76.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; // - // cb_Options_InfoWin_MyElevation - // - this.cb_Options_InfoWin_MyElevation.AutoSize = true; - this.cb_Options_InfoWin_MyElevation.Checked = global::AirScout.Properties.Settings.Default.InfoWin_MyElevation; - this.cb_Options_InfoWin_MyElevation.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "InfoWin_MyElevation", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.cb_Options_InfoWin_MyElevation.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.cb_Options_InfoWin_MyElevation.Location = new System.Drawing.Point(18, 38); - this.cb_Options_InfoWin_MyElevation.Name = "cb_Options_InfoWin_MyElevation"; - this.cb_Options_InfoWin_MyElevation.Size = new System.Drawing.Size(87, 17); - this.cb_Options_InfoWin_MyElevation.TabIndex = 27; - this.cb_Options_InfoWin_MyElevation.Tag = ""; - this.cb_Options_InfoWin_MyElevation.Text = "My Elevation"; - this.cb_Options_InfoWin_MyElevation.UseVisualStyleBackColor = true; - // - // cb_Options_InfoWin_MyAzimuth - // - this.cb_Options_InfoWin_MyAzimuth.AutoSize = true; - this.cb_Options_InfoWin_MyAzimuth.Checked = global::AirScout.Properties.Settings.Default.InfoWin_MyAzimuth; - this.cb_Options_InfoWin_MyAzimuth.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "InfoWin_MyAzimuth", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.cb_Options_InfoWin_MyAzimuth.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.cb_Options_InfoWin_MyAzimuth.Location = new System.Drawing.Point(18, 18); - this.cb_Options_InfoWin_MyAzimuth.Name = "cb_Options_InfoWin_MyAzimuth"; - this.cb_Options_InfoWin_MyAzimuth.Size = new System.Drawing.Size(80, 17); - this.cb_Options_InfoWin_MyAzimuth.TabIndex = 26; - this.cb_Options_InfoWin_MyAzimuth.Tag = ""; - this.cb_Options_InfoWin_MyAzimuth.Text = "My Azimuth"; - this.cb_Options_InfoWin_MyAzimuth.UseVisualStyleBackColor = true; - // - // cb_Options_InfoWin_MyDoppler - // - this.cb_Options_InfoWin_MyDoppler.AutoSize = true; - this.cb_Options_InfoWin_MyDoppler.Checked = global::AirScout.Properties.Settings.Default.InfoWin_MyDoppler; - this.cb_Options_InfoWin_MyDoppler.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "InfoWin_MyDoppler", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.cb_Options_InfoWin_MyDoppler.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.cb_Options_InfoWin_MyDoppler.Location = new System.Drawing.Point(18, 57); - this.cb_Options_InfoWin_MyDoppler.Name = "cb_Options_InfoWin_MyDoppler"; - this.cb_Options_InfoWin_MyDoppler.Size = new System.Drawing.Size(80, 17); - this.cb_Options_InfoWin_MyDoppler.TabIndex = 28; - this.cb_Options_InfoWin_MyDoppler.Tag = ""; - this.cb_Options_InfoWin_MyDoppler.Text = "My Doppler"; - this.cb_Options_InfoWin_MyDoppler.UseVisualStyleBackColor = true; - // - // cb_Options_InfoWin_DXDoppler - // - this.cb_Options_InfoWin_DXDoppler.AutoSize = true; - this.cb_Options_InfoWin_DXDoppler.Checked = global::AirScout.Properties.Settings.Default.InfoWin_DXDoppler; - this.cb_Options_InfoWin_DXDoppler.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "InfoWin_DXDoppler", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.cb_Options_InfoWin_DXDoppler.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.cb_Options_InfoWin_DXDoppler.Location = new System.Drawing.Point(18, 115); - this.cb_Options_InfoWin_DXDoppler.Name = "cb_Options_InfoWin_DXDoppler"; - this.cb_Options_InfoWin_DXDoppler.Size = new System.Drawing.Size(81, 17); - this.cb_Options_InfoWin_DXDoppler.TabIndex = 31; - this.cb_Options_InfoWin_DXDoppler.Tag = ""; - this.cb_Options_InfoWin_DXDoppler.Text = "DX Doppler"; - this.cb_Options_InfoWin_DXDoppler.UseVisualStyleBackColor = true; - // - // cb_Options_InfoWin_DXAzimuth - // - this.cb_Options_InfoWin_DXAzimuth.AutoSize = true; - this.cb_Options_InfoWin_DXAzimuth.Checked = global::AirScout.Properties.Settings.Default.InfoWin_DXAzimuth; - this.cb_Options_InfoWin_DXAzimuth.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "InfoWin_DXAzimuth", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.cb_Options_InfoWin_DXAzimuth.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.cb_Options_InfoWin_DXAzimuth.Location = new System.Drawing.Point(18, 77); - this.cb_Options_InfoWin_DXAzimuth.Name = "cb_Options_InfoWin_DXAzimuth"; - this.cb_Options_InfoWin_DXAzimuth.Size = new System.Drawing.Size(81, 17); - this.cb_Options_InfoWin_DXAzimuth.TabIndex = 29; - this.cb_Options_InfoWin_DXAzimuth.Tag = ""; - this.cb_Options_InfoWin_DXAzimuth.Text = "DX Azimuth"; - this.cb_Options_InfoWin_DXAzimuth.UseVisualStyleBackColor = true; - // - // cb_Options_InfoWin_DXElevation - // - this.cb_Options_InfoWin_DXElevation.AutoSize = true; - this.cb_Options_InfoWin_DXElevation.Checked = global::AirScout.Properties.Settings.Default.InfoWin_DXElevation; - this.cb_Options_InfoWin_DXElevation.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "InfoWin_DXElevation", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.cb_Options_InfoWin_DXElevation.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.cb_Options_InfoWin_DXElevation.Location = new System.Drawing.Point(18, 96); - this.cb_Options_InfoWin_DXElevation.Name = "cb_Options_InfoWin_DXElevation"; - this.cb_Options_InfoWin_DXElevation.Size = new System.Drawing.Size(88, 17); - this.cb_Options_InfoWin_DXElevation.TabIndex = 30; - this.cb_Options_InfoWin_DXElevation.Tag = ""; - this.cb_Options_InfoWin_DXElevation.Text = "DX Elevation"; - this.cb_Options_InfoWin_DXElevation.UseVisualStyleBackColor = true; - // // groupBox33 // this.groupBox33.Controls.Add(this.label75); @@ -2776,108 +2168,6 @@ this.label75.Text = "Visible only in detailed window when crossing"; this.label75.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; // - // cb_Options_InfoWin_Dist - // - this.cb_Options_InfoWin_Dist.AutoSize = true; - this.cb_Options_InfoWin_Dist.Checked = global::AirScout.Properties.Settings.Default.InfoWin_Dist; - this.cb_Options_InfoWin_Dist.CheckState = System.Windows.Forms.CheckState.Checked; - this.cb_Options_InfoWin_Dist.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "InfoWin_Dist", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.cb_Options_InfoWin_Dist.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.cb_Options_InfoWin_Dist.Location = new System.Drawing.Point(11, 18); - this.cb_Options_InfoWin_Dist.Name = "cb_Options_InfoWin_Dist"; - this.cb_Options_InfoWin_Dist.Size = new System.Drawing.Size(111, 17); - this.cb_Options_InfoWin_Dist.TabIndex = 11; - this.cb_Options_InfoWin_Dist.Tag = ""; - this.cb_Options_InfoWin_Dist.Text = "Crossing Distance"; - this.cb_Options_InfoWin_Dist.UseVisualStyleBackColor = true; - // - // cb_Options_InfoWin_Time - // - this.cb_Options_InfoWin_Time.AutoSize = true; - this.cb_Options_InfoWin_Time.Checked = global::AirScout.Properties.Settings.Default.InfoWin_Time; - this.cb_Options_InfoWin_Time.CheckState = System.Windows.Forms.CheckState.Checked; - this.cb_Options_InfoWin_Time.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "InfoWin_Time", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.cb_Options_InfoWin_Time.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.cb_Options_InfoWin_Time.Location = new System.Drawing.Point(11, 38); - this.cb_Options_InfoWin_Time.Name = "cb_Options_InfoWin_Time"; - this.cb_Options_InfoWin_Time.Size = new System.Drawing.Size(92, 17); - this.cb_Options_InfoWin_Time.TabIndex = 10; - this.cb_Options_InfoWin_Time.Tag = ""; - this.cb_Options_InfoWin_Time.Text = "Crossing Time"; - this.cb_Options_InfoWin_Time.UseVisualStyleBackColor = true; - // - // cb_Options_InfoWin_Epsilon - // - this.cb_Options_InfoWin_Epsilon.AutoSize = true; - this.cb_Options_InfoWin_Epsilon.Checked = global::AirScout.Properties.Settings.Default.InfoWin_Epsilon; - this.cb_Options_InfoWin_Epsilon.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "InfoWin_Epsilon", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.cb_Options_InfoWin_Epsilon.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.cb_Options_InfoWin_Epsilon.Location = new System.Drawing.Point(11, 76); - this.cb_Options_InfoWin_Epsilon.Name = "cb_Options_InfoWin_Epsilon"; - this.cb_Options_InfoWin_Epsilon.Size = new System.Drawing.Size(105, 17); - this.cb_Options_InfoWin_Epsilon.TabIndex = 12; - this.cb_Options_InfoWin_Epsilon.Tag = ""; - this.cb_Options_InfoWin_Epsilon.Text = "Elevation Angles"; - this.cb_Options_InfoWin_Epsilon.UseVisualStyleBackColor = true; - // - // cb_Options_InfoWin_Squint - // - this.cb_Options_InfoWin_Squint.AutoSize = true; - this.cb_Options_InfoWin_Squint.Checked = global::AirScout.Properties.Settings.Default.InfoWin_Squint; - this.cb_Options_InfoWin_Squint.CheckState = System.Windows.Forms.CheckState.Checked; - this.cb_Options_InfoWin_Squint.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "InfoWin_Squint", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.cb_Options_InfoWin_Squint.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.cb_Options_InfoWin_Squint.Location = new System.Drawing.Point(11, 96); - this.cb_Options_InfoWin_Squint.Name = "cb_Options_InfoWin_Squint"; - this.cb_Options_InfoWin_Squint.Size = new System.Drawing.Size(86, 17); - this.cb_Options_InfoWin_Squint.TabIndex = 13; - this.cb_Options_InfoWin_Squint.Tag = ""; - this.cb_Options_InfoWin_Squint.Text = "Squint Angle"; - this.cb_Options_InfoWin_Squint.UseVisualStyleBackColor = true; - // - // cb_Options_InfoWin_Angle - // - this.cb_Options_InfoWin_Angle.AutoSize = true; - this.cb_Options_InfoWin_Angle.Checked = global::AirScout.Properties.Settings.Default.InfoWin_Angle; - this.cb_Options_InfoWin_Angle.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "InfoWin_Angle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.cb_Options_InfoWin_Angle.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.cb_Options_InfoWin_Angle.Location = new System.Drawing.Point(11, 57); - this.cb_Options_InfoWin_Angle.Name = "cb_Options_InfoWin_Angle"; - this.cb_Options_InfoWin_Angle.Size = new System.Drawing.Size(96, 17); - this.cb_Options_InfoWin_Angle.TabIndex = 15; - this.cb_Options_InfoWin_Angle.Tag = ""; - this.cb_Options_InfoWin_Angle.Text = "Crossing Angle"; - this.cb_Options_InfoWin_Angle.UseVisualStyleBackColor = true; - // - // rb_Options_InfoWin_Imperial - // - this.rb_Options_InfoWin_Imperial.AutoSize = true; - this.rb_Options_InfoWin_Imperial.Checked = global::AirScout.Properties.Settings.Default.InfoWin_Imperial; - this.rb_Options_InfoWin_Imperial.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "InfoWin_Imperial", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.rb_Options_InfoWin_Imperial.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.rb_Options_InfoWin_Imperial.Location = new System.Drawing.Point(139, 19); - this.rb_Options_InfoWin_Imperial.Name = "rb_Options_InfoWin_Imperial"; - this.rb_Options_InfoWin_Imperial.Size = new System.Drawing.Size(61, 17); - this.rb_Options_InfoWin_Imperial.TabIndex = 25; - this.rb_Options_InfoWin_Imperial.Tag = ""; - this.rb_Options_InfoWin_Imperial.Text = "Imperial"; - this.rb_Options_InfoWin_Imperial.UseVisualStyleBackColor = true; - // - // rb_Options_InfoWin_Metric - // - this.rb_Options_InfoWin_Metric.AutoSize = true; - this.rb_Options_InfoWin_Metric.Checked = global::AirScout.Properties.Settings.Default.InfoWin_Metric; - this.rb_Options_InfoWin_Metric.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "InfoWin_Metric", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.rb_Options_InfoWin_Metric.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.rb_Options_InfoWin_Metric.Location = new System.Drawing.Point(66, 19); - this.rb_Options_InfoWin_Metric.Name = "rb_Options_InfoWin_Metric"; - this.rb_Options_InfoWin_Metric.Size = new System.Drawing.Size(54, 17); - this.rb_Options_InfoWin_Metric.TabIndex = 24; - this.rb_Options_InfoWin_Metric.TabStop = true; - this.rb_Options_InfoWin_Metric.Tag = ""; - this.rb_Options_InfoWin_Metric.Text = "Metric"; - this.rb_Options_InfoWin_Metric.UseVisualStyleBackColor = true; - // // label72 // this.label72.AutoSize = true; @@ -2908,17 +2198,6 @@ this.label62.TabIndex = 21; this.label62.Text = "Font:"; // - // tb_Options_Map_ToolTipFont - // - this.tb_Options_Map_ToolTipFont.DataBindings.Add(new System.Windows.Forms.Binding("Text", global::AirScout.Properties.Settings.Default, "Map_ToolTipFont", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.tb_Options_Map_ToolTipFont.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.tb_Options_Map_ToolTipFont.Location = new System.Drawing.Point(55, 40); - 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(179, 20); - this.tb_Options_Map_ToolTipFont.TabIndex = 20; - this.tb_Options_Map_ToolTipFont.Text = global::AirScout.Properties.Settings.Default.Map_ToolTipFont; - // // groupBox29 // this.groupBox29.Controls.Add(this.cb_Options_InfoWin_AlwaysDetailed); @@ -2947,80 +2226,6 @@ this.label74.Text = "Always visible"; this.label74.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; // - // cb_Options_InfoWin_Position - // - this.cb_Options_InfoWin_Position.AutoSize = true; - this.cb_Options_InfoWin_Position.Checked = global::AirScout.Properties.Settings.Default.InfoWin_Position; - this.cb_Options_InfoWin_Position.CheckState = System.Windows.Forms.CheckState.Checked; - this.cb_Options_InfoWin_Position.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "InfoWin_Position", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.cb_Options_InfoWin_Position.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.cb_Options_InfoWin_Position.Location = new System.Drawing.Point(6, 18); - this.cb_Options_InfoWin_Position.Name = "cb_Options_InfoWin_Position"; - this.cb_Options_InfoWin_Position.Size = new System.Drawing.Size(107, 17); - this.cb_Options_InfoWin_Position.TabIndex = 6; - this.cb_Options_InfoWin_Position.Tag = ""; - this.cb_Options_InfoWin_Position.Text = "Plane Position"; - this.cb_Options_InfoWin_Position.UseVisualStyleBackColor = true; - // - // cb_Options_InfoWin_Alt - // - this.cb_Options_InfoWin_Alt.AutoSize = true; - this.cb_Options_InfoWin_Alt.Checked = global::AirScout.Properties.Settings.Default.InfoWin_Alt; - this.cb_Options_InfoWin_Alt.CheckState = System.Windows.Forms.CheckState.Checked; - this.cb_Options_InfoWin_Alt.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "InfoWin_Alt", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.cb_Options_InfoWin_Alt.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.cb_Options_InfoWin_Alt.Location = new System.Drawing.Point(6, 37); - this.cb_Options_InfoWin_Alt.Name = "cb_Options_InfoWin_Alt"; - this.cb_Options_InfoWin_Alt.Size = new System.Drawing.Size(105, 17); - this.cb_Options_InfoWin_Alt.TabIndex = 7; - this.cb_Options_InfoWin_Alt.Tag = ""; - this.cb_Options_InfoWin_Alt.Text = "Plane Altitude"; - this.cb_Options_InfoWin_Alt.UseVisualStyleBackColor = true; - // - // cb_Options_InfoWin_Track - // - this.cb_Options_InfoWin_Track.AutoSize = true; - this.cb_Options_InfoWin_Track.Checked = global::AirScout.Properties.Settings.Default.InfoWin_Track; - this.cb_Options_InfoWin_Track.CheckState = System.Windows.Forms.CheckState.Checked; - this.cb_Options_InfoWin_Track.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "InfoWin_Track", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.cb_Options_InfoWin_Track.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.cb_Options_InfoWin_Track.Location = new System.Drawing.Point(6, 56); - this.cb_Options_InfoWin_Track.Name = "cb_Options_InfoWin_Track"; - this.cb_Options_InfoWin_Track.Size = new System.Drawing.Size(95, 17); - this.cb_Options_InfoWin_Track.TabIndex = 8; - this.cb_Options_InfoWin_Track.Tag = ""; - this.cb_Options_InfoWin_Track.Text = "Plane Track"; - this.cb_Options_InfoWin_Track.UseVisualStyleBackColor = true; - // - // cb_Options_InfoWin_Type - // - this.cb_Options_InfoWin_Type.AutoSize = true; - this.cb_Options_InfoWin_Type.Checked = global::AirScout.Properties.Settings.Default.InfoWin_Type; - this.cb_Options_InfoWin_Type.CheckState = System.Windows.Forms.CheckState.Checked; - this.cb_Options_InfoWin_Type.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "InfoWin_Type", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.cb_Options_InfoWin_Type.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.cb_Options_InfoWin_Type.Location = new System.Drawing.Point(6, 75); - this.cb_Options_InfoWin_Type.Name = "cb_Options_InfoWin_Type"; - this.cb_Options_InfoWin_Type.Size = new System.Drawing.Size(90, 17); - this.cb_Options_InfoWin_Type.TabIndex = 9; - this.cb_Options_InfoWin_Type.Tag = ""; - this.cb_Options_InfoWin_Type.Text = "Plane Type"; - this.cb_Options_InfoWin_Type.UseVisualStyleBackColor = true; - // - // cb_Options_InfoWin_Speed - // - this.cb_Options_InfoWin_Speed.AutoSize = true; - this.cb_Options_InfoWin_Speed.Checked = global::AirScout.Properties.Settings.Default.InfoWin_Speed; - this.cb_Options_InfoWin_Speed.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "InfoWin_Speed", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.cb_Options_InfoWin_Speed.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.cb_Options_InfoWin_Speed.Location = new System.Drawing.Point(275, 310); - this.cb_Options_InfoWin_Speed.Name = "cb_Options_InfoWin_Speed"; - this.cb_Options_InfoWin_Speed.Size = new System.Drawing.Size(87, 17); - this.cb_Options_InfoWin_Speed.TabIndex = 14; - this.cb_Options_InfoWin_Speed.Tag = ""; - this.cb_Options_InfoWin_Speed.Text = "Plane Speed"; - this.cb_Options_InfoWin_Speed.UseVisualStyleBackColor = true; - // // groupBox2 // this.groupBox2.Controls.Add(this.label61); @@ -3059,41 +2264,6 @@ this.cb_Options_Map_Provider.TabIndex = 0; this.cb_Options_Map_Provider.DropDown += new System.EventHandler(this.cb_Options_Map_Provider_DropDown); // - // cb_Options_Map_Preloader_Enabled - // - this.cb_Options_Map_Preloader_Enabled.AutoSize = true; - this.cb_Options_Map_Preloader_Enabled.CheckAlign = System.Drawing.ContentAlignment.MiddleRight; - this.cb_Options_Map_Preloader_Enabled.Checked = global::AirScout.Properties.Settings.Default.Map_Preloader_Enabled; - this.cb_Options_Map_Preloader_Enabled.CheckState = System.Windows.Forms.CheckState.Checked; - this.cb_Options_Map_Preloader_Enabled.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "Map_Preloader_Enabled", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.cb_Options_Map_Preloader_Enabled.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.cb_Options_Map_Preloader_Enabled.Location = new System.Drawing.Point(230, 111); - this.cb_Options_Map_Preloader_Enabled.Name = "cb_Options_Map_Preloader_Enabled"; - this.cb_Options_Map_Preloader_Enabled.Size = new System.Drawing.Size(136, 17); - this.cb_Options_Map_Preloader_Enabled.TabIndex = 4; - this.cb_Options_Map_Preloader_Enabled.Text = "Enable Map Preloading"; - this.cb_Options_Map_Preloader_Enabled.UseVisualStyleBackColor = true; - // - // ud_Options_Map_Opacity - // - this.ud_Options_Map_Opacity.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::AirScout.Properties.Settings.Default, "Map_Opacity", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.ud_Options_Map_Opacity.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.ud_Options_Map_Opacity.Increment = new decimal(new int[] { - 1, - 0, - 0, - 65536}); - this.ud_Options_Map_Opacity.Location = new System.Drawing.Point(88, 109); - this.ud_Options_Map_Opacity.Maximum = new decimal(new int[] { - 1, - 0, - 0, - 0}); - this.ud_Options_Map_Opacity.Name = "ud_Options_Map_Opacity"; - this.ud_Options_Map_Opacity.Size = new System.Drawing.Size(54, 20); - this.ud_Options_Map_Opacity.TabIndex = 10; - this.ud_Options_Map_Opacity.Value = global::AirScout.Properties.Settings.Default.Map_Opacity; - // // label148 // this.label148.AutoSize = true; @@ -3104,21 +2274,6 @@ this.label148.TabIndex = 7; this.label148.Text = "Map Opacity:"; // - // ud_Options_Map_Preloader_MaxZoom - // - this.ud_Options_Map_Preloader_MaxZoom.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::AirScout.Properties.Settings.Default, "Map_Preloader_MaxZoom", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.ud_Options_Map_Preloader_MaxZoom.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.ud_Options_Map_Preloader_MaxZoom.Location = new System.Drawing.Point(315, 134); - this.ud_Options_Map_Preloader_MaxZoom.Maximum = new decimal(new int[] { - 11, - 0, - 0, - 0}); - this.ud_Options_Map_Preloader_MaxZoom.Name = "ud_Options_Map_Preloader_MaxZoom"; - this.ud_Options_Map_Preloader_MaxZoom.Size = new System.Drawing.Size(54, 22); - this.ud_Options_Map_Preloader_MaxZoom.TabIndex = 6; - this.ud_Options_Map_Preloader_MaxZoom.Value = global::AirScout.Properties.Settings.Default.Map_Preloader_MaxZoom; - // // label144 // this.label144.AutoSize = true; @@ -3172,18 +2327,6 @@ this.lbl_Options_LocalObstructions.TabIndex = 19; this.lbl_Options_LocalObstructions.Text = "Status is unknown."; // - // btn_Options_LocalObstructions - // - this.btn_Options_LocalObstructions.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.btn_Options_LocalObstructions.Location = new System.Drawing.Point(9, 46); - this.btn_Options_LocalObstructions.Name = "btn_Options_LocalObstructions"; - this.btn_Options_LocalObstructions.Size = new System.Drawing.Size(220, 23); - this.btn_Options_LocalObstructions.TabIndex = 28; - this.btn_Options_LocalObstructions.Text = "Manage"; - this.tt_Options.SetToolTip(this.btn_Options_LocalObstructions, resources.GetString("btn_Options_LocalObstructions.ToolTip")); - this.btn_Options_LocalObstructions.UseVisualStyleBackColor = true; - this.btn_Options_LocalObstructions.Click += new System.EventHandler(this.btn_Options_LocalObstructions_Click); - // // groupBox46 // this.groupBox46.Controls.Add(this.lbl_Options_DXLastUpdated); @@ -3518,34 +2661,6 @@ this.groupBox14.TabStop = false; this.groupBox14.Text = "Location Settings"; // - // cb_Options_SmallLettersForSubSquares - // - this.cb_Options_SmallLettersForSubSquares.AutoSize = true; - this.cb_Options_SmallLettersForSubSquares.Checked = global::AirScout.Properties.Settings.Default.Locator_SmallLettersForSubsquares; - this.cb_Options_SmallLettersForSubSquares.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "Locator_SmallLettersForSubsquares", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.cb_Options_SmallLettersForSubSquares.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.cb_Options_SmallLettersForSubSquares.Location = new System.Drawing.Point(239, 16); - this.cb_Options_SmallLettersForSubSquares.Name = "cb_Options_SmallLettersForSubSquares"; - this.cb_Options_SmallLettersForSubSquares.Size = new System.Drawing.Size(157, 17); - this.cb_Options_SmallLettersForSubSquares.TabIndex = 11; - this.cb_Options_SmallLettersForSubSquares.Text = "Small letters for subsquares:"; - this.cb_Options_SmallLettersForSubSquares.UseVisualStyleBackColor = true; - this.cb_Options_SmallLettersForSubSquares.CheckedChanged += new System.EventHandler(this.cb_Options_SmallLettersForSubSquares_CheckedChanged); - // - // cb_Options_Locator_AutoLength - // - this.cb_Options_Locator_AutoLength.AutoSize = true; - this.cb_Options_Locator_AutoLength.Checked = global::AirScout.Properties.Settings.Default.Locator_AutoLength; - this.cb_Options_Locator_AutoLength.CheckState = System.Windows.Forms.CheckState.Checked; - this.cb_Options_Locator_AutoLength.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "Locator_AutoLength", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.cb_Options_Locator_AutoLength.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.cb_Options_Locator_AutoLength.Location = new System.Drawing.Point(12, 38); - this.cb_Options_Locator_AutoLength.Name = "cb_Options_Locator_AutoLength"; - this.cb_Options_Locator_AutoLength.Size = new System.Drawing.Size(319, 17); - this.cb_Options_Locator_AutoLength.TabIndex = 10; - this.cb_Options_Locator_AutoLength.Text = "Cut locator to significant digits automatically (Minimum 6 digits):"; - this.cb_Options_Locator_AutoLength.UseVisualStyleBackColor = true; - // // label48 // this.label48.AutoSize = true; @@ -3556,31 +2671,6 @@ this.label48.TabIndex = 1; this.label48.Text = "Number of Locator digits (6 ..14):"; // - // ud_Options_Locator_MaxLength - // - this.ud_Options_Locator_MaxLength.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::AirScout.Properties.Settings.Default, "Locator_MaxLength", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.ud_Options_Locator_MaxLength.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.ud_Options_Locator_MaxLength.Increment = new decimal(new int[] { - 2, - 0, - 0, - 0}); - this.ud_Options_Locator_MaxLength.Location = new System.Drawing.Point(180, 15); - this.ud_Options_Locator_MaxLength.Maximum = new decimal(new int[] { - 14, - 0, - 0, - 0}); - this.ud_Options_Locator_MaxLength.Minimum = new decimal(new int[] { - 6, - 0, - 0, - 0}); - this.ud_Options_Locator_MaxLength.Name = "ud_Options_Locator_MaxLength"; - this.ud_Options_Locator_MaxLength.Size = new System.Drawing.Size(50, 20); - this.ud_Options_Locator_MaxLength.TabIndex = 9; - this.ud_Options_Locator_MaxLength.Value = global::AirScout.Properties.Settings.Default.Locator_MaxLength; - // // groupBox16 // this.groupBox16.Controls.Add(this.label52); @@ -3667,21 +2757,6 @@ this.tb_Options_DXLat.Value = 52.05626084D; this.tb_Options_DXLat.TextChanged += new System.EventHandler(this.tb_Options_DXLat_TextChanged); // - // tb_Options_DXLoc - // - this.tb_Options_DXLoc.BackColor = System.Drawing.SystemColors.Window; - this.tb_Options_DXLoc.DataBindings.Add(new System.Windows.Forms.Binding("SmallLettersForSubsquares", global::AirScout.Properties.Settings.Default, "Locator_SmallLettersForSubsquares", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.tb_Options_DXLoc.ErrorBackColor = System.Drawing.Color.Red; - this.tb_Options_DXLoc.ErrorForeColor = System.Drawing.Color.White; - this.tb_Options_DXLoc.Font = new System.Drawing.Font("Courier New", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.tb_Options_DXLoc.ForeColor = System.Drawing.SystemColors.WindowText; - this.tb_Options_DXLoc.Location = new System.Drawing.Point(90, 36); - this.tb_Options_DXLoc.Name = "tb_Options_DXLoc"; - this.tb_Options_DXLoc.Size = new System.Drawing.Size(100, 21); - this.tb_Options_DXLoc.SmallLettersForSubsquares = global::AirScout.Properties.Settings.Default.Locator_SmallLettersForSubsquares; - this.tb_Options_DXLoc.TabIndex = 6; - this.tb_Options_DXLoc.TextChanged += new System.EventHandler(this.tb_Options_DXLoc_TextChanged); - // // tb_Options_DXCall // this.tb_Options_DXCall.BackColor = System.Drawing.SystemColors.Window; @@ -3706,31 +2781,6 @@ this.label21.TabIndex = 23; this.label21.Text = "m asl"; // - // btn_Options_DXHorizon - // - this.btn_Options_DXHorizon.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.btn_Options_DXHorizon.Location = new System.Drawing.Point(90, 157); - this.btn_Options_DXHorizon.Name = "btn_Options_DXHorizon"; - this.btn_Options_DXHorizon.Size = new System.Drawing.Size(100, 20); - this.btn_Options_DXHorizon.TabIndex = 24; - this.btn_Options_DXHorizon.Text = "Radio Horizon"; - this.tt_Options.SetToolTip(this.btn_Options_DXHorizon, "Calculates a radio horizon around the station\'s location"); - this.btn_Options_DXHorizon.UseVisualStyleBackColor = true; - this.btn_Options_DXHorizon.Click += new System.EventHandler(this.btn_Options_DXHorizon_Click); - // - // btn_DXCall_QRZ - // - this.btn_DXCall_QRZ.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.btn_DXCall_QRZ.Location = new System.Drawing.Point(90, 134); - this.btn_DXCall_QRZ.Name = "btn_DXCall_QRZ"; - this.btn_DXCall_QRZ.Size = new System.Drawing.Size(100, 20); - this.btn_DXCall_QRZ.TabIndex = 23; - this.btn_DXCall_QRZ.Text = "QRZ lookup"; - this.tt_Options.SetToolTip(this.btn_DXCall_QRZ, "Tries to get an exact location from www.qrz.com. The information will only be use" + - "d if the 6digit Maidenhead locator matches with the value in the Loc input box."); - this.btn_DXCall_QRZ.UseVisualStyleBackColor = true; - this.btn_DXCall_QRZ.Click += new System.EventHandler(this.btn_DXCall_QRZ_Click); - // // label14 // this.label14.AutoSize = true; @@ -3828,18 +2878,6 @@ this.btn_Options_MyMap.UseVisualStyleBackColor = true; this.btn_Options_MyMap.Click += new System.EventHandler(this.btn_Options_MyMap_Click); // - // btn_Options_MyHorizon - // - this.btn_Options_MyHorizon.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.btn_Options_MyHorizon.Location = new System.Drawing.Point(89, 157); - this.btn_Options_MyHorizon.Name = "btn_Options_MyHorizon"; - this.btn_Options_MyHorizon.Size = new System.Drawing.Size(100, 20); - this.btn_Options_MyHorizon.TabIndex = 17; - this.btn_Options_MyHorizon.Text = "Radio Horizon"; - this.tt_Options.SetToolTip(this.btn_Options_MyHorizon, "Calculates a radio horizon around the station\'s location"); - this.btn_Options_MyHorizon.UseVisualStyleBackColor = true; - this.btn_Options_MyHorizon.Click += new System.EventHandler(this.btn_Options_MyHorizon_Click); - // // tb_Options_MyLon // this.tb_Options_MyLon.Font = new System.Drawing.Font("Courier New", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); @@ -3868,21 +2906,6 @@ this.tb_Options_MyLat.Value = 50.937067D; this.tb_Options_MyLat.TextChanged += new System.EventHandler(this.tb_Options_MyLat_TextChanged); // - // tb_Options_MyLoc - // - this.tb_Options_MyLoc.BackColor = System.Drawing.SystemColors.Window; - this.tb_Options_MyLoc.DataBindings.Add(new System.Windows.Forms.Binding("SmallLettersForSubsquares", global::AirScout.Properties.Settings.Default, "Locator_SmallLettersForSubsquares", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.tb_Options_MyLoc.ErrorBackColor = System.Drawing.Color.Red; - this.tb_Options_MyLoc.ErrorForeColor = System.Drawing.Color.White; - this.tb_Options_MyLoc.Font = new System.Drawing.Font("Courier New", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.tb_Options_MyLoc.ForeColor = System.Drawing.SystemColors.WindowText; - this.tb_Options_MyLoc.Location = new System.Drawing.Point(89, 36); - this.tb_Options_MyLoc.Name = "tb_Options_MyLoc"; - this.tb_Options_MyLoc.Size = new System.Drawing.Size(100, 21); - this.tb_Options_MyLoc.SmallLettersForSubsquares = global::AirScout.Properties.Settings.Default.Locator_SmallLettersForSubsquares; - this.tb_Options_MyLoc.TabIndex = 2; - this.tb_Options_MyLoc.TextChanged += new System.EventHandler(this.tb_Options_MyLoc_TextChanged); - // // tb_Options_MyCall // this.tb_Options_MyCall.BackColor = System.Drawing.SystemColors.Window; @@ -3907,19 +2930,6 @@ this.label18.TabIndex = 22; this.label18.Text = "m asl"; // - // btn_MyCall_QRZ - // - this.btn_MyCall_QRZ.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.btn_MyCall_QRZ.Location = new System.Drawing.Point(89, 134); - this.btn_MyCall_QRZ.Name = "btn_MyCall_QRZ"; - this.btn_MyCall_QRZ.Size = new System.Drawing.Size(100, 20); - this.btn_MyCall_QRZ.TabIndex = 16; - this.btn_MyCall_QRZ.Text = "QRZ lookup"; - this.tt_Options.SetToolTip(this.btn_MyCall_QRZ, "Tries to get an exact location from www.qrz.com. The information will only be use" + - "d if the 6digit Maidenhead locator matches with the value in the Loc input box."); - this.btn_MyCall_QRZ.UseVisualStyleBackColor = true; - this.btn_MyCall_QRZ.Click += new System.EventHandler(this.btn_MyCall_QRZ_Click); - // // label40 // this.label40.AutoSize = true; @@ -4013,66 +3023,6 @@ this.groupBox25.TabStop = false; this.groupBox25.Text = "Covered Area"; // - // tb_Coverage_MaxLat - // - this.tb_Coverage_MaxLat.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::AirScout.Properties.Settings.Default, "MaxLat", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.tb_Coverage_MaxLat.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.tb_Coverage_MaxLat.FormatSpecifier = "F0"; - this.tb_Coverage_MaxLat.Location = new System.Drawing.Point(589, 416); - this.tb_Coverage_MaxLat.MaxValue = 90D; - this.tb_Coverage_MaxLat.MinValue = -90D; - this.tb_Coverage_MaxLat.Name = "tb_Coverage_MaxLat"; - this.tb_Coverage_MaxLat.Size = new System.Drawing.Size(50, 22); - this.tb_Coverage_MaxLat.TabIndex = 4; - this.tb_Coverage_MaxLat.Text = "60"; - this.tb_Coverage_MaxLat.Value = global::AirScout.Properties.Settings.Default.MaxLat; - this.tb_Coverage_MaxLat.TextChanged += new System.EventHandler(this.tab_Options_General_Update); - // - // tb_Coverage_MinLat - // - this.tb_Coverage_MinLat.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::AirScout.Properties.Settings.Default, "MinLat", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.tb_Coverage_MinLat.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.tb_Coverage_MinLat.FormatSpecifier = "F0"; - this.tb_Coverage_MinLat.Location = new System.Drawing.Point(589, 391); - this.tb_Coverage_MinLat.MaxValue = 90D; - this.tb_Coverage_MinLat.MinValue = -90D; - this.tb_Coverage_MinLat.Name = "tb_Coverage_MinLat"; - this.tb_Coverage_MinLat.Size = new System.Drawing.Size(50, 22); - this.tb_Coverage_MinLat.TabIndex = 3; - this.tb_Coverage_MinLat.Text = "35"; - this.tb_Coverage_MinLat.Value = global::AirScout.Properties.Settings.Default.MinLat; - this.tb_Coverage_MinLat.TextChanged += new System.EventHandler(this.tab_Options_General_Update); - // - // tb_Coverage_MaxLon - // - this.tb_Coverage_MaxLon.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::AirScout.Properties.Settings.Default, "MaxLon", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.tb_Coverage_MaxLon.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.tb_Coverage_MaxLon.FormatSpecifier = "F0"; - this.tb_Coverage_MaxLon.Location = new System.Drawing.Point(589, 364); - this.tb_Coverage_MaxLon.MaxValue = 180D; - this.tb_Coverage_MaxLon.MinValue = -180D; - this.tb_Coverage_MaxLon.Name = "tb_Coverage_MaxLon"; - this.tb_Coverage_MaxLon.Size = new System.Drawing.Size(50, 22); - this.tb_Coverage_MaxLon.TabIndex = 2; - this.tb_Coverage_MaxLon.Text = "30"; - this.tb_Coverage_MaxLon.Value = global::AirScout.Properties.Settings.Default.MaxLon; - this.tb_Coverage_MaxLon.TextChanged += new System.EventHandler(this.tab_Options_General_Update); - // - // tb_Coverage_MinLon - // - this.tb_Coverage_MinLon.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::AirScout.Properties.Settings.Default, "MinLon", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.tb_Coverage_MinLon.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.tb_Coverage_MinLon.FormatSpecifier = "F0"; - this.tb_Coverage_MinLon.Location = new System.Drawing.Point(589, 337); - this.tb_Coverage_MinLon.MaxValue = 180D; - this.tb_Coverage_MinLon.MinValue = -180D; - this.tb_Coverage_MinLon.Name = "tb_Coverage_MinLon"; - this.tb_Coverage_MinLon.Size = new System.Drawing.Size(50, 22); - this.tb_Coverage_MinLon.TabIndex = 1; - this.tb_Coverage_MinLon.Text = "-15"; - this.tb_Coverage_MinLon.Value = global::AirScout.Properties.Settings.Default.MinLon; - this.tb_Coverage_MinLon.TextChanged += new System.EventHandler(this.tab_Options_General_Update); - // // gm_Options_Coverage // this.gm_Options_Coverage.Bearing = 0F; @@ -4235,20 +3185,6 @@ this.gb_Options_Database_Settings.TabStop = false; this.gb_Options_Database_Settings.Text = "Background Update and Pre-Calculation Settings"; // - // cb_Options_Background_Calculations_Enable - // - this.cb_Options_Background_Calculations_Enable.AutoSize = true; - this.cb_Options_Background_Calculations_Enable.Checked = global::AirScout.Properties.Settings.Default.Background_Calculations_Enable; - this.cb_Options_Background_Calculations_Enable.CheckState = System.Windows.Forms.CheckState.Checked; - this.cb_Options_Background_Calculations_Enable.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "Background_Calculations_Enable", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.cb_Options_Background_Calculations_Enable.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.cb_Options_Background_Calculations_Enable.Location = new System.Drawing.Point(22, 126); - this.cb_Options_Background_Calculations_Enable.Name = "cb_Options_Background_Calculations_Enable"; - this.cb_Options_Background_Calculations_Enable.Size = new System.Drawing.Size(308, 17); - this.cb_Options_Background_Calculations_Enable.TabIndex = 6; - this.cb_Options_Background_Calculations_Enable.Text = "Enable Background Pre-Calculations for paths/horizons etc."; - this.cb_Options_Background_Calculations_Enable.UseVisualStyleBackColor = true; - // // label47 // this.label47.AutoSize = true; @@ -4259,26 +3195,6 @@ this.label47.TabIndex = 5; this.label47.Text = "Update interval [min]:"; // - // ud_Options_Database_Update_Period - // - this.ud_Options_Database_Update_Period.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::AirScout.Properties.Settings.Default, "Background_Update_Period", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.ud_Options_Database_Update_Period.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.ud_Options_Database_Update_Period.Location = new System.Drawing.Point(278, 84); - this.ud_Options_Database_Update_Period.Maximum = new decimal(new int[] { - 6000, - 0, - 0, - 0}); - this.ud_Options_Database_Update_Period.Minimum = new decimal(new int[] { - 1, - 0, - 0, - 0}); - this.ud_Options_Database_Update_Period.Name = "ud_Options_Database_Update_Period"; - this.ud_Options_Database_Update_Period.Size = new System.Drawing.Size(39, 20); - this.ud_Options_Database_Update_Period.TabIndex = 3; - this.ud_Options_Database_Update_Period.Value = global::AirScout.Properties.Settings.Default.Background_Update_Period; - // // rb_Options_Database_Update_Periodically // this.rb_Options_Database_Update_Periodically.AutoSize = true; @@ -5080,34 +3996,6 @@ this.groupBox53.TabStop = false; this.groupBox53.Text = "Use Elevation Model"; // - // cb_Options_Elevation_ASTER3_EnableCache - // - this.cb_Options_Elevation_ASTER3_EnableCache.AutoSize = true; - this.cb_Options_Elevation_ASTER3_EnableCache.Checked = global::AirScout.Properties.Settings.Default.Elevation_ASTER3_EnableCache; - this.cb_Options_Elevation_ASTER3_EnableCache.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "Elevation_ASTER3_EnableCache", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.cb_Options_Elevation_ASTER3_EnableCache.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.cb_Options_Elevation_ASTER3_EnableCache.Location = new System.Drawing.Point(6, 42); - this.cb_Options_Elevation_ASTER3_EnableCache.Name = "cb_Options_Elevation_ASTER3_EnableCache"; - this.cb_Options_Elevation_ASTER3_EnableCache.Size = new System.Drawing.Size(179, 17); - this.cb_Options_Elevation_ASTER3_EnableCache.TabIndex = 13; - this.cb_Options_Elevation_ASTER3_EnableCache.Tag = ""; - this.cb_Options_Elevation_ASTER3_EnableCache.Text = "Keep downloaded elevation tiles"; - this.cb_Options_Elevation_ASTER3_EnableCache.UseVisualStyleBackColor = true; - // - // cb_Options_Elevation_ASTER3 - // - this.cb_Options_Elevation_ASTER3.AutoSize = true; - this.cb_Options_Elevation_ASTER3.Checked = global::AirScout.Properties.Settings.Default.Elevation_ASTER3_Enabled; - this.cb_Options_Elevation_ASTER3.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "Elevation_ASTER3_Enabled", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.cb_Options_Elevation_ASTER3.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.cb_Options_Elevation_ASTER3.Location = new System.Drawing.Point(6, 19); - this.cb_Options_Elevation_ASTER3.Name = "cb_Options_Elevation_ASTER3"; - this.cb_Options_Elevation_ASTER3.Size = new System.Drawing.Size(160, 17); - this.cb_Options_Elevation_ASTER3.TabIndex = 12; - this.cb_Options_Elevation_ASTER3.Tag = ""; - this.cb_Options_Elevation_ASTER3.Text = "Use ASTER3 elevation data"; - this.cb_Options_Elevation_ASTER3.UseVisualStyleBackColor = true; - // // tba_Option_ASTER1 // this.tba_Option_ASTER1.BackColor = System.Drawing.SystemColors.Control; @@ -5205,34 +4093,6 @@ this.groupBox56.TabStop = false; this.groupBox56.Text = "Use Elevation Model"; // - // cb_Options_Elevation_ASTER1_EnableCache - // - this.cb_Options_Elevation_ASTER1_EnableCache.AutoSize = true; - this.cb_Options_Elevation_ASTER1_EnableCache.Checked = global::AirScout.Properties.Settings.Default.Elevation_ASTER1_EnableCache; - this.cb_Options_Elevation_ASTER1_EnableCache.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "Elevation_ASTER1_EnableCache", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.cb_Options_Elevation_ASTER1_EnableCache.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.cb_Options_Elevation_ASTER1_EnableCache.Location = new System.Drawing.Point(6, 42); - this.cb_Options_Elevation_ASTER1_EnableCache.Name = "cb_Options_Elevation_ASTER1_EnableCache"; - this.cb_Options_Elevation_ASTER1_EnableCache.Size = new System.Drawing.Size(179, 17); - this.cb_Options_Elevation_ASTER1_EnableCache.TabIndex = 13; - this.cb_Options_Elevation_ASTER1_EnableCache.Tag = ""; - this.cb_Options_Elevation_ASTER1_EnableCache.Text = "Keep downloaded elevation tiles"; - this.cb_Options_Elevation_ASTER1_EnableCache.UseVisualStyleBackColor = true; - // - // cb_Options_Elevation_ASTER1 - // - this.cb_Options_Elevation_ASTER1.AutoSize = true; - this.cb_Options_Elevation_ASTER1.Checked = global::AirScout.Properties.Settings.Default.Elevation_ASTER1_Enabled; - this.cb_Options_Elevation_ASTER1.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "Elevation_ASTER1_Enabled", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.cb_Options_Elevation_ASTER1.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.cb_Options_Elevation_ASTER1.Location = new System.Drawing.Point(6, 19); - this.cb_Options_Elevation_ASTER1.Name = "cb_Options_Elevation_ASTER1"; - this.cb_Options_Elevation_ASTER1.Size = new System.Drawing.Size(160, 17); - this.cb_Options_Elevation_ASTER1.TabIndex = 12; - this.cb_Options_Elevation_ASTER1.Tag = ""; - this.cb_Options_Elevation_ASTER1.Text = "Use ASTER1 elevation data"; - this.cb_Options_Elevation_ASTER1.UseVisualStyleBackColor = true; - // // tab_Options_Alarm // this.tab_Options_Alarm.BackColor = System.Drawing.SystemColors.Control; @@ -5257,20 +4117,6 @@ this.groupBox21.TabStop = false; this.groupBox21.Text = "Activate Alarm"; // - // cb_Options_Alarm_Activate - // - this.cb_Options_Alarm_Activate.AutoSize = true; - this.cb_Options_Alarm_Activate.Checked = global::AirScout.Properties.Settings.Default.Alarm_Activate; - this.cb_Options_Alarm_Activate.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "Alarm_Activate", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.cb_Options_Alarm_Activate.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.cb_Options_Alarm_Activate.Location = new System.Drawing.Point(13, 19); - this.cb_Options_Alarm_Activate.Name = "cb_Options_Alarm_Activate"; - this.cb_Options_Alarm_Activate.Size = new System.Drawing.Size(94, 17); - this.cb_Options_Alarm_Activate.TabIndex = 1; - this.cb_Options_Alarm_Activate.Tag = ""; - this.cb_Options_Alarm_Activate.Text = "Activate Alarm"; - this.cb_Options_Alarm_Activate.UseVisualStyleBackColor = true; - // // groupBox19 // this.groupBox19.Controls.Add(this.cb_Options_Alarm_PlaySound); @@ -5283,21 +4129,6 @@ this.groupBox19.TabStop = false; this.groupBox19.Text = "Alarm Settings"; // - // cb_Options_Alarm_PlaySound - // - this.cb_Options_Alarm_PlaySound.AutoSize = true; - this.cb_Options_Alarm_PlaySound.Checked = global::AirScout.Properties.Settings.Default.Alarm_PlaySound; - this.cb_Options_Alarm_PlaySound.CheckState = System.Windows.Forms.CheckState.Checked; - this.cb_Options_Alarm_PlaySound.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "Alarm_PlaySound", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.cb_Options_Alarm_PlaySound.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.cb_Options_Alarm_PlaySound.Location = new System.Drawing.Point(13, 53); - this.cb_Options_Alarm_PlaySound.Name = "cb_Options_Alarm_PlaySound"; - this.cb_Options_Alarm_PlaySound.Size = new System.Drawing.Size(78, 17); - this.cb_Options_Alarm_PlaySound.TabIndex = 1; - this.cb_Options_Alarm_PlaySound.Tag = ""; - this.cb_Options_Alarm_PlaySound.Text = "Play sound"; - this.cb_Options_Alarm_PlaySound.UseVisualStyleBackColor = true; - // // cb_Options_Alarm_BringWindowToFront // this.cb_Options_Alarm_BringWindowToFront.AutoSize = true; @@ -5325,20 +4156,6 @@ this.groupBox20.TabStop = false; this.groupBox20.Text = "Generate Alarm"; // - // tb_Options_Alarm_Distance - // - this.tb_Options_Alarm_Distance.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::AirScout.Properties.Settings.Default, "Alarm_Distance", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.tb_Options_Alarm_Distance.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.tb_Options_Alarm_Distance.FormatSpecifier = "F0"; - this.tb_Options_Alarm_Distance.Location = new System.Drawing.Point(143, 49); - this.tb_Options_Alarm_Distance.MaxValue = 1000D; - this.tb_Options_Alarm_Distance.MinValue = 0D; - this.tb_Options_Alarm_Distance.Name = "tb_Options_Alarm_Distance"; - this.tb_Options_Alarm_Distance.Size = new System.Drawing.Size(75, 22); - this.tb_Options_Alarm_Distance.TabIndex = 3; - this.tb_Options_Alarm_Distance.Text = "100"; - this.tb_Options_Alarm_Distance.Value = global::AirScout.Properties.Settings.Default.Alarm_Distance; - // // label36 // this.label36.AutoSize = true; @@ -5399,20 +4216,6 @@ this.groupBox32.TabStop = false; this.groupBox32.Text = "HTTP Server Settings"; // - // tb_Options_Webserver_Port - // - this.tb_Options_Webserver_Port.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::AirScout.Properties.Settings.Default, "Webserver_Port", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.tb_Options_Webserver_Port.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.tb_Options_Webserver_Port.FormatSpecifier = "F0"; - this.tb_Options_Webserver_Port.Location = new System.Drawing.Point(150, 28); - this.tb_Options_Webserver_Port.MaxValue = 65535; - this.tb_Options_Webserver_Port.MinValue = 0; - this.tb_Options_Webserver_Port.Name = "tb_Options_Webserver_Port"; - this.tb_Options_Webserver_Port.Size = new System.Drawing.Size(57, 22); - this.tb_Options_Webserver_Port.TabIndex = 8; - this.tb_Options_Webserver_Port.Text = "9880"; - this.tb_Options_Webserver_Port.Value = global::AirScout.Properties.Settings.Default.Webserver_Port; - // // label85 // this.label85.AutoSize = true; @@ -5435,20 +4238,6 @@ this.groupBox31.TabStop = false; this.groupBox31.Text = "Activate Server"; // - // cb_Options_Server_Activate - // - this.cb_Options_Server_Activate.AutoSize = true; - this.cb_Options_Server_Activate.Checked = global::AirScout.Properties.Settings.Default.Server_Activate; - this.cb_Options_Server_Activate.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "Server_Activate", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.cb_Options_Server_Activate.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.cb_Options_Server_Activate.Location = new System.Drawing.Point(13, 23); - this.cb_Options_Server_Activate.Name = "cb_Options_Server_Activate"; - this.cb_Options_Server_Activate.Size = new System.Drawing.Size(142, 17); - this.cb_Options_Server_Activate.TabIndex = 1; - this.cb_Options_Server_Activate.Tag = ""; - this.cb_Options_Server_Activate.Text = "Activate Network Server"; - this.cb_Options_Server_Activate.UseVisualStyleBackColor = true; - // // label3 // this.label3.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); @@ -5472,20 +4261,6 @@ this.groupBox24.TabStop = false; this.groupBox24.Text = "UDP Server Settings"; // - // tb_Options_Server_Port - // - this.tb_Options_Server_Port.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::AirScout.Properties.Settings.Default, "Server_Port", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.tb_Options_Server_Port.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.tb_Options_Server_Port.FormatSpecifier = "F0"; - this.tb_Options_Server_Port.Location = new System.Drawing.Point(153, 56); - this.tb_Options_Server_Port.MaxValue = 65535; - this.tb_Options_Server_Port.MinValue = 0; - this.tb_Options_Server_Port.Name = "tb_Options_Server_Port"; - this.tb_Options_Server_Port.Size = new System.Drawing.Size(57, 22); - this.tb_Options_Server_Port.TabIndex = 6; - this.tb_Options_Server_Port.Text = "9872"; - this.tb_Options_Server_Port.Value = global::AirScout.Properties.Settings.Default.Server_Port; - // // label6 // this.label6.AutoSize = true; @@ -5506,18 +4281,6 @@ this.label4.TabIndex = 4; this.label4.Text = "AirScout UDP Server Name:"; // - // tb_Options_Server_Name - // - this.tb_Options_Server_Name.BackColor = System.Drawing.Color.FloralWhite; - this.tb_Options_Server_Name.DataBindings.Add(new System.Windows.Forms.Binding("Text", global::AirScout.Properties.Settings.Default, "Server_Name", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.tb_Options_Server_Name.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.tb_Options_Server_Name.Location = new System.Drawing.Point(153, 30); - this.tb_Options_Server_Name.Name = "tb_Options_Server_Name"; - this.tb_Options_Server_Name.Size = new System.Drawing.Size(57, 20); - this.tb_Options_Server_Name.TabIndex = 2; - this.tb_Options_Server_Name.Tag = ""; - this.tb_Options_Server_Name.Text = global::AirScout.Properties.Settings.Default.Server_Name; - // // tab_Options_SpecLab // this.tab_Options_SpecLab.BackColor = System.Drawing.SystemColors.Control; @@ -5555,48 +4318,6 @@ this.groupBox3.TabStop = false; this.groupBox3.Text = "Spectrum Lab Settings"; // - // tb_Options_SpecLab_UpdateInterval - // - this.tb_Options_SpecLab_UpdateInterval.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::AirScout.Properties.Settings.Default, "SpecLab_Update", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.tb_Options_SpecLab_UpdateInterval.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.tb_Options_SpecLab_UpdateInterval.FormatSpecifier = "F1"; - this.tb_Options_SpecLab_UpdateInterval.Location = new System.Drawing.Point(106, 230); - this.tb_Options_SpecLab_UpdateInterval.MaxValue = 100D; - this.tb_Options_SpecLab_UpdateInterval.MinValue = 0D; - this.tb_Options_SpecLab_UpdateInterval.Name = "tb_Options_SpecLab_UpdateInterval"; - this.tb_Options_SpecLab_UpdateInterval.Size = new System.Drawing.Size(63, 22); - this.tb_Options_SpecLab_UpdateInterval.TabIndex = 18; - this.tb_Options_SpecLab_UpdateInterval.Text = "1.0"; - this.tb_Options_SpecLab_UpdateInterval.Value = global::AirScout.Properties.Settings.Default.SpecLab_Update; - // - // tb_Options_SpecLab_F2 - // - this.tb_Options_SpecLab_F2.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::AirScout.Properties.Settings.Default, "SpecLab_F2", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.tb_Options_SpecLab_F2.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.tb_Options_SpecLab_F2.FormatSpecifier = "F0"; - this.tb_Options_SpecLab_F2.Location = new System.Drawing.Point(109, 205); - this.tb_Options_SpecLab_F2.MaxValue = 10000; - this.tb_Options_SpecLab_F2.MinValue = 0; - this.tb_Options_SpecLab_F2.Name = "tb_Options_SpecLab_F2"; - this.tb_Options_SpecLab_F2.Size = new System.Drawing.Size(60, 22); - this.tb_Options_SpecLab_F2.TabIndex = 17; - this.tb_Options_SpecLab_F2.Text = "1600"; - this.tb_Options_SpecLab_F2.Value = global::AirScout.Properties.Settings.Default.SpecLab_F2; - // - // tb_Options_SpecLab_F1 - // - this.tb_Options_SpecLab_F1.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::AirScout.Properties.Settings.Default, "SpecLab_F1", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.tb_Options_SpecLab_F1.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.tb_Options_SpecLab_F1.FormatSpecifier = "F0"; - this.tb_Options_SpecLab_F1.Location = new System.Drawing.Point(109, 179); - this.tb_Options_SpecLab_F1.MaxValue = 10000; - this.tb_Options_SpecLab_F1.MinValue = 0; - this.tb_Options_SpecLab_F1.Name = "tb_Options_SpecLab_F1"; - this.tb_Options_SpecLab_F1.Size = new System.Drawing.Size(60, 22); - this.tb_Options_SpecLab_F1.TabIndex = 16; - this.tb_Options_SpecLab_F1.Text = "400"; - this.tb_Options_SpecLab_F1.Value = global::AirScout.Properties.Settings.Default.SpecLab_F1; - // // label70 // this.label70.AutoSize = true; @@ -5657,18 +4378,6 @@ this.label66.TabIndex = 8; this.label66.Text = "F1:"; // - // tb_SpecLab_FileName - // - this.tb_SpecLab_FileName.BackColor = System.Drawing.Color.FloralWhite; - this.tb_SpecLab_FileName.DataBindings.Add(new System.Windows.Forms.Binding("Text", global::AirScout.Properties.Settings.Default, "SpecLab_FileName", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.tb_SpecLab_FileName.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.tb_SpecLab_FileName.Location = new System.Drawing.Point(109, 153); - this.tb_SpecLab_FileName.Name = "tb_SpecLab_FileName"; - this.tb_SpecLab_FileName.Size = new System.Drawing.Size(347, 20); - this.tb_SpecLab_FileName.TabIndex = 6; - this.tb_SpecLab_FileName.Tag = ""; - this.tb_SpecLab_FileName.Text = global::AirScout.Properties.Settings.Default.SpecLab_FileName; - // // label63 // this.label63.AutoSize = true; @@ -5698,32 +4407,6 @@ this.label65.TabIndex = 3; this.label65.Text = resources.GetString("label65.Text"); // - // tb_SpecLab_URL - // - this.tb_SpecLab_URL.BackColor = System.Drawing.Color.FloralWhite; - this.tb_SpecLab_URL.DataBindings.Add(new System.Windows.Forms.Binding("Text", global::AirScout.Properties.Settings.Default, "SpecLab_URL", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.tb_SpecLab_URL.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.tb_SpecLab_URL.Location = new System.Drawing.Point(109, 126); - this.tb_SpecLab_URL.Name = "tb_SpecLab_URL"; - this.tb_SpecLab_URL.Size = new System.Drawing.Size(347, 20); - this.tb_SpecLab_URL.TabIndex = 2; - this.tb_SpecLab_URL.Tag = ""; - this.tb_SpecLab_URL.Text = global::AirScout.Properties.Settings.Default.SpecLab_URL; - // - // cb_SpecLab_Enabled - // - this.cb_SpecLab_Enabled.AutoSize = true; - this.cb_SpecLab_Enabled.Checked = global::AirScout.Properties.Settings.Default.SpecLab_Enabled; - this.cb_SpecLab_Enabled.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "SpecLab_Enabled", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.cb_SpecLab_Enabled.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.cb_SpecLab_Enabled.Location = new System.Drawing.Point(18, 90); - this.cb_SpecLab_Enabled.Name = "cb_SpecLab_Enabled"; - this.cb_SpecLab_Enabled.Size = new System.Drawing.Size(122, 17); - this.cb_SpecLab_Enabled.TabIndex = 1; - this.cb_SpecLab_Enabled.Tag = ""; - this.cb_SpecLab_Enabled.Text = "Activate Connection"; - this.cb_SpecLab_Enabled.UseVisualStyleBackColor = true; - // // tab_Options_Track // this.tab_Options_Track.BackColor = System.Drawing.SystemColors.Control; @@ -6296,34 +4979,6 @@ this.gb_Options_Track_UDP.TabStop = false; this.gb_Options_Track_UDP.Text = "Rotator Control Network Output"; // - // tb_Options_Track_UDP_AirScout_Port - // - this.tb_Options_Track_UDP_AirScout_Port.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::AirScout.Properties.Settings.Default, "Track_UDP_AirScout_Port", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.tb_Options_Track_UDP_AirScout_Port.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.tb_Options_Track_UDP_AirScout_Port.FormatSpecifier = "F0"; - this.tb_Options_Track_UDP_AirScout_Port.Location = new System.Drawing.Point(254, 60); - this.tb_Options_Track_UDP_AirScout_Port.MaxValue = 0; - this.tb_Options_Track_UDP_AirScout_Port.MinValue = 0; - this.tb_Options_Track_UDP_AirScout_Port.Name = "tb_Options_Track_UDP_AirScout_Port"; - this.tb_Options_Track_UDP_AirScout_Port.Size = new System.Drawing.Size(43, 22); - this.tb_Options_Track_UDP_AirScout_Port.TabIndex = 17; - this.tb_Options_Track_UDP_AirScout_Port.Text = "9872"; - this.tb_Options_Track_UDP_AirScout_Port.Value = global::AirScout.Properties.Settings.Default.Track_UDP_AirScout_Port; - // - // tb_Options_Track_UDP_WinTest_Port - // - this.tb_Options_Track_UDP_WinTest_Port.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::AirScout.Properties.Settings.Default, "Track_UDP_WinTest_Port", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.tb_Options_Track_UDP_WinTest_Port.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.tb_Options_Track_UDP_WinTest_Port.FormatSpecifier = "F0"; - this.tb_Options_Track_UDP_WinTest_Port.Location = new System.Drawing.Point(254, 37); - this.tb_Options_Track_UDP_WinTest_Port.MaxValue = 0; - this.tb_Options_Track_UDP_WinTest_Port.MinValue = 0; - this.tb_Options_Track_UDP_WinTest_Port.Name = "tb_Options_Track_UDP_WinTest_Port"; - this.tb_Options_Track_UDP_WinTest_Port.Size = new System.Drawing.Size(43, 22); - this.tb_Options_Track_UDP_WinTest_Port.TabIndex = 16; - this.tb_Options_Track_UDP_WinTest_Port.Text = "9871"; - this.tb_Options_Track_UDP_WinTest_Port.Value = global::AirScout.Properties.Settings.Default.Track_UDP_WinTest_Port; - // // label90 // this.label90.AutoSize = true; @@ -7057,39 +5712,6 @@ this.groupBox17.TabStop = false; this.groupBox17.Text = "General"; // - // cb_Options_Watchlist_SyncWithKST - // - this.cb_Options_Watchlist_SyncWithKST.AutoSize = true; - this.cb_Options_Watchlist_SyncWithKST.CheckAlign = System.Drawing.ContentAlignment.MiddleRight; - this.cb_Options_Watchlist_SyncWithKST.Checked = global::AirScout.Properties.Settings.Default.Watchlist_SyncWithKST; - this.cb_Options_Watchlist_SyncWithKST.CheckState = System.Windows.Forms.CheckState.Checked; - this.cb_Options_Watchlist_SyncWithKST.DataBindings.Add(new System.Windows.Forms.Binding("Enabled", global::AirScout.Properties.Settings.Default, "Server_Activate", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.cb_Options_Watchlist_SyncWithKST.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "Watchlist_SyncWithKST", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.cb_Options_Watchlist_SyncWithKST.Enabled = global::AirScout.Properties.Settings.Default.Server_Activate; - this.cb_Options_Watchlist_SyncWithKST.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.cb_Options_Watchlist_SyncWithKST.Location = new System.Drawing.Point(6, 47); - this.cb_Options_Watchlist_SyncWithKST.Name = "cb_Options_Watchlist_SyncWithKST"; - this.cb_Options_Watchlist_SyncWithKST.Size = new System.Drawing.Size(436, 17); - this.cb_Options_Watchlist_SyncWithKST.TabIndex = 6; - this.cb_Options_Watchlist_SyncWithKST.Text = "Keep in sync with KST user list (needs wtKST > V3.1 and network functions activat" + - "ed):"; - this.cb_Options_Watchlist_SyncWithKST.UseVisualStyleBackColor = true; - this.cb_Options_Watchlist_SyncWithKST.CheckedChanged += new System.EventHandler(this.cb_Options_Watchlist_SyncWithKST_CheckedChanged); - // - // tb_Options_Watchlist_MaxCount - // - this.tb_Options_Watchlist_MaxCount.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::AirScout.Properties.Settings.Default, "Watchlist_MaxCount", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.tb_Options_Watchlist_MaxCount.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.tb_Options_Watchlist_MaxCount.FormatSpecifier = "F0"; - this.tb_Options_Watchlist_MaxCount.Location = new System.Drawing.Point(395, 20); - this.tb_Options_Watchlist_MaxCount.MaxValue = 1000; - this.tb_Options_Watchlist_MaxCount.MinValue = 1; - this.tb_Options_Watchlist_MaxCount.Name = "tb_Options_Watchlist_MaxCount"; - this.tb_Options_Watchlist_MaxCount.Size = new System.Drawing.Size(47, 22); - this.tb_Options_Watchlist_MaxCount.TabIndex = 5; - this.tb_Options_Watchlist_MaxCount.Text = "1000"; - this.tb_Options_Watchlist_MaxCount.Value = global::AirScout.Properties.Settings.Default.Watchlist_MaxCount; - // // label31 // this.label31.AutoSize = true; @@ -7115,6 +5737,7 @@ // tab_Options_Misc // this.tab_Options_Misc.BackColor = System.Drawing.SystemColors.Control; + this.tab_Options_Misc.Controls.Add(this.groupBox35); this.tab_Options_Misc.Controls.Add(this.pb_Donate); this.tab_Options_Misc.Controls.Add(this.pictureBox4); this.tab_Options_Misc.Controls.Add(this.label143); @@ -7125,6 +5748,17 @@ this.tab_Options_Misc.TabIndex = 17; this.tab_Options_Misc.Text = "Misc."; // + // groupBox35 + // + this.groupBox35.Controls.Add(this.cb_Options_NewsFeed); + this.groupBox35.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.groupBox35.Location = new System.Drawing.Point(18, 397); + this.groupBox35.Name = "groupBox35"; + this.groupBox35.Size = new System.Drawing.Size(306, 45); + this.groupBox35.TabIndex = 40; + this.groupBox35.TabStop = false; + this.groupBox35.Text = "News Feed"; + // // pictureBox4 // this.pictureBox4.BackColor = System.Drawing.Color.White; @@ -7450,6 +6084,1431 @@ this.bw_ASTER1_MapUpdater.ProgressChanged += new System.ComponentModel.ProgressChangedEventHandler(this.bw_ASTER1_MapUpdater_ProgressChanged); this.bw_ASTER1_MapUpdater.RunWorkerCompleted += new System.ComponentModel.RunWorkerCompletedEventHandler(this.bw_ASTER1_MapUpdater_RunWorkerCompleted); // + // groupBox36 + // + this.groupBox36.Controls.Add(this.cb_Options_TracePositions); + this.groupBox36.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.groupBox36.Location = new System.Drawing.Point(12, 394); + this.groupBox36.Name = "groupBox36"; + this.groupBox36.Size = new System.Drawing.Size(645, 48); + this.groupBox36.TabIndex = 40; + this.groupBox36.TabStop = false; + this.groupBox36.Text = "Debug"; + // + // tb_Coverage_MaxLat + // + this.tb_Coverage_MaxLat.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::AirScout.Properties.Settings.Default, "MaxLat", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.tb_Coverage_MaxLat.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tb_Coverage_MaxLat.FormatSpecifier = "F0"; + this.tb_Coverage_MaxLat.Location = new System.Drawing.Point(589, 416); + this.tb_Coverage_MaxLat.MaxValue = 90D; + this.tb_Coverage_MaxLat.MinValue = -90D; + this.tb_Coverage_MaxLat.Name = "tb_Coverage_MaxLat"; + this.tb_Coverage_MaxLat.Size = new System.Drawing.Size(50, 22); + this.tb_Coverage_MaxLat.TabIndex = 4; + this.tb_Coverage_MaxLat.Text = "60"; + this.tb_Coverage_MaxLat.Value = global::AirScout.Properties.Settings.Default.MaxLat; + this.tb_Coverage_MaxLat.TextChanged += new System.EventHandler(this.tab_Options_General_Update); + // + // tb_Coverage_MinLat + // + this.tb_Coverage_MinLat.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::AirScout.Properties.Settings.Default, "MinLat", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.tb_Coverage_MinLat.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tb_Coverage_MinLat.FormatSpecifier = "F0"; + this.tb_Coverage_MinLat.Location = new System.Drawing.Point(589, 391); + this.tb_Coverage_MinLat.MaxValue = 90D; + this.tb_Coverage_MinLat.MinValue = -90D; + this.tb_Coverage_MinLat.Name = "tb_Coverage_MinLat"; + this.tb_Coverage_MinLat.Size = new System.Drawing.Size(50, 22); + this.tb_Coverage_MinLat.TabIndex = 3; + this.tb_Coverage_MinLat.Text = "35"; + this.tb_Coverage_MinLat.Value = global::AirScout.Properties.Settings.Default.MinLat; + this.tb_Coverage_MinLat.TextChanged += new System.EventHandler(this.tab_Options_General_Update); + // + // tb_Coverage_MaxLon + // + this.tb_Coverage_MaxLon.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::AirScout.Properties.Settings.Default, "MaxLon", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.tb_Coverage_MaxLon.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tb_Coverage_MaxLon.FormatSpecifier = "F0"; + this.tb_Coverage_MaxLon.Location = new System.Drawing.Point(589, 364); + this.tb_Coverage_MaxLon.MaxValue = 180D; + this.tb_Coverage_MaxLon.MinValue = -180D; + this.tb_Coverage_MaxLon.Name = "tb_Coverage_MaxLon"; + this.tb_Coverage_MaxLon.Size = new System.Drawing.Size(50, 22); + this.tb_Coverage_MaxLon.TabIndex = 2; + this.tb_Coverage_MaxLon.Text = "30"; + this.tb_Coverage_MaxLon.Value = global::AirScout.Properties.Settings.Default.MaxLon; + this.tb_Coverage_MaxLon.TextChanged += new System.EventHandler(this.tab_Options_General_Update); + // + // tb_Coverage_MinLon + // + this.tb_Coverage_MinLon.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::AirScout.Properties.Settings.Default, "MinLon", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.tb_Coverage_MinLon.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tb_Coverage_MinLon.FormatSpecifier = "F0"; + this.tb_Coverage_MinLon.Location = new System.Drawing.Point(589, 337); + this.tb_Coverage_MinLon.MaxValue = 180D; + this.tb_Coverage_MinLon.MinValue = -180D; + this.tb_Coverage_MinLon.Name = "tb_Coverage_MinLon"; + this.tb_Coverage_MinLon.Size = new System.Drawing.Size(50, 22); + this.tb_Coverage_MinLon.TabIndex = 1; + this.tb_Coverage_MinLon.Text = "-15"; + this.tb_Coverage_MinLon.Value = global::AirScout.Properties.Settings.Default.MinLon; + this.tb_Coverage_MinLon.TextChanged += new System.EventHandler(this.tab_Options_General_Update); + // + // cb_Options_Background_Calculations_Enable + // + this.cb_Options_Background_Calculations_Enable.AutoSize = true; + this.cb_Options_Background_Calculations_Enable.Checked = global::AirScout.Properties.Settings.Default.Background_Calculations_Enable; + this.cb_Options_Background_Calculations_Enable.CheckState = System.Windows.Forms.CheckState.Checked; + this.cb_Options_Background_Calculations_Enable.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "Background_Calculations_Enable", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.cb_Options_Background_Calculations_Enable.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cb_Options_Background_Calculations_Enable.Location = new System.Drawing.Point(22, 126); + this.cb_Options_Background_Calculations_Enable.Name = "cb_Options_Background_Calculations_Enable"; + this.cb_Options_Background_Calculations_Enable.Size = new System.Drawing.Size(308, 17); + this.cb_Options_Background_Calculations_Enable.TabIndex = 6; + this.cb_Options_Background_Calculations_Enable.Text = "Enable Background Pre-Calculations for paths/horizons etc."; + this.cb_Options_Background_Calculations_Enable.UseVisualStyleBackColor = true; + // + // ud_Options_Database_Update_Period + // + this.ud_Options_Database_Update_Period.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::AirScout.Properties.Settings.Default, "Background_Update_Period", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.ud_Options_Database_Update_Period.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.ud_Options_Database_Update_Period.Location = new System.Drawing.Point(278, 84); + this.ud_Options_Database_Update_Period.Maximum = new decimal(new int[] { + 6000, + 0, + 0, + 0}); + this.ud_Options_Database_Update_Period.Minimum = new decimal(new int[] { + 1, + 0, + 0, + 0}); + this.ud_Options_Database_Update_Period.Name = "ud_Options_Database_Update_Period"; + this.ud_Options_Database_Update_Period.Size = new System.Drawing.Size(39, 20); + this.ud_Options_Database_Update_Period.TabIndex = 3; + this.ud_Options_Database_Update_Period.Value = global::AirScout.Properties.Settings.Default.Background_Update_Period; + // + // cb_Options_Locations_RestrictToAreaOfInterest + // + this.cb_Options_Locations_RestrictToAreaOfInterest.AutoSize = true; + this.cb_Options_Locations_RestrictToAreaOfInterest.Checked = global::AirScout.Properties.Settings.Default.Location_RestrictToAreaOfInterest; + this.cb_Options_Locations_RestrictToAreaOfInterest.CheckState = System.Windows.Forms.CheckState.Checked; + this.cb_Options_Locations_RestrictToAreaOfInterest.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "Location_RestrictToAreaOfInterest", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.cb_Options_Locations_RestrictToAreaOfInterest.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cb_Options_Locations_RestrictToAreaOfInterest.Location = new System.Drawing.Point(12, 58); + this.cb_Options_Locations_RestrictToAreaOfInterest.Name = "cb_Options_Locations_RestrictToAreaOfInterest"; + this.cb_Options_Locations_RestrictToAreaOfInterest.Size = new System.Drawing.Size(230, 17); + this.cb_Options_Locations_RestrictToAreaOfInterest.TabIndex = 12; + this.cb_Options_Locations_RestrictToAreaOfInterest.Text = "Restrict locations to current Area of Interest"; + this.tt_Options.SetToolTip(this.cb_Options_Locations_RestrictToAreaOfInterest, "Restrict stations kept in the database to Area of Interest \r\n(all other stations" + + " will be removed during the update process)"); + this.cb_Options_Locations_RestrictToAreaOfInterest.UseVisualStyleBackColor = true; + // + // cb_Options_SmallLettersForSubSquares + // + this.cb_Options_SmallLettersForSubSquares.AutoSize = true; + this.cb_Options_SmallLettersForSubSquares.Checked = global::AirScout.Properties.Settings.Default.Locator_SmallLettersForSubsquares; + this.cb_Options_SmallLettersForSubSquares.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "Locator_SmallLettersForSubsquares", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.cb_Options_SmallLettersForSubSquares.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cb_Options_SmallLettersForSubSquares.Location = new System.Drawing.Point(239, 16); + this.cb_Options_SmallLettersForSubSquares.Name = "cb_Options_SmallLettersForSubSquares"; + this.cb_Options_SmallLettersForSubSquares.Size = new System.Drawing.Size(157, 17); + this.cb_Options_SmallLettersForSubSquares.TabIndex = 11; + this.cb_Options_SmallLettersForSubSquares.Text = "Small letters for subsquares:"; + this.cb_Options_SmallLettersForSubSquares.UseVisualStyleBackColor = true; + this.cb_Options_SmallLettersForSubSquares.CheckedChanged += new System.EventHandler(this.cb_Options_SmallLettersForSubSquares_CheckedChanged); + // + // cb_Options_Locator_AutoLength + // + this.cb_Options_Locator_AutoLength.AutoSize = true; + this.cb_Options_Locator_AutoLength.Checked = global::AirScout.Properties.Settings.Default.Locator_AutoLength; + this.cb_Options_Locator_AutoLength.CheckState = System.Windows.Forms.CheckState.Checked; + this.cb_Options_Locator_AutoLength.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "Locator_AutoLength", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.cb_Options_Locator_AutoLength.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cb_Options_Locator_AutoLength.Location = new System.Drawing.Point(12, 38); + this.cb_Options_Locator_AutoLength.Name = "cb_Options_Locator_AutoLength"; + this.cb_Options_Locator_AutoLength.Size = new System.Drawing.Size(319, 17); + this.cb_Options_Locator_AutoLength.TabIndex = 10; + this.cb_Options_Locator_AutoLength.Text = "Cut locator to significant digits automatically (Minimum 6 digits):"; + this.cb_Options_Locator_AutoLength.UseVisualStyleBackColor = true; + // + // ud_Options_Locator_MaxLength + // + this.ud_Options_Locator_MaxLength.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::AirScout.Properties.Settings.Default, "Locator_MaxLength", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.ud_Options_Locator_MaxLength.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.ud_Options_Locator_MaxLength.Increment = new decimal(new int[] { + 2, + 0, + 0, + 0}); + this.ud_Options_Locator_MaxLength.Location = new System.Drawing.Point(180, 15); + this.ud_Options_Locator_MaxLength.Maximum = new decimal(new int[] { + 14, + 0, + 0, + 0}); + this.ud_Options_Locator_MaxLength.Minimum = new decimal(new int[] { + 6, + 0, + 0, + 0}); + this.ud_Options_Locator_MaxLength.Name = "ud_Options_Locator_MaxLength"; + this.ud_Options_Locator_MaxLength.Size = new System.Drawing.Size(50, 20); + this.ud_Options_Locator_MaxLength.TabIndex = 9; + this.ud_Options_Locator_MaxLength.Value = global::AirScout.Properties.Settings.Default.Locator_MaxLength; + // + // tb_Options_DXLoc + // + this.tb_Options_DXLoc.BackColor = System.Drawing.SystemColors.Window; + this.tb_Options_DXLoc.DataBindings.Add(new System.Windows.Forms.Binding("SmallLettersForSubsquares", global::AirScout.Properties.Settings.Default, "Locator_SmallLettersForSubsquares", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.tb_Options_DXLoc.ErrorBackColor = System.Drawing.Color.Red; + this.tb_Options_DXLoc.ErrorForeColor = System.Drawing.Color.White; + this.tb_Options_DXLoc.Font = new System.Drawing.Font("Courier New", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tb_Options_DXLoc.ForeColor = System.Drawing.SystemColors.WindowText; + this.tb_Options_DXLoc.Location = new System.Drawing.Point(90, 36); + this.tb_Options_DXLoc.Name = "tb_Options_DXLoc"; + this.tb_Options_DXLoc.Size = new System.Drawing.Size(100, 21); + this.tb_Options_DXLoc.SmallLettersForSubsquares = global::AirScout.Properties.Settings.Default.Locator_SmallLettersForSubsquares; + this.tb_Options_DXLoc.TabIndex = 6; + this.tb_Options_DXLoc.TextChanged += new System.EventHandler(this.tb_Options_DXLoc_TextChanged); + // + // tb_Options_MyLoc + // + this.tb_Options_MyLoc.BackColor = System.Drawing.SystemColors.Window; + this.tb_Options_MyLoc.DataBindings.Add(new System.Windows.Forms.Binding("SmallLettersForSubsquares", global::AirScout.Properties.Settings.Default, "Locator_SmallLettersForSubsquares", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.tb_Options_MyLoc.ErrorBackColor = System.Drawing.Color.Red; + this.tb_Options_MyLoc.ErrorForeColor = System.Drawing.Color.White; + this.tb_Options_MyLoc.Font = new System.Drawing.Font("Courier New", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tb_Options_MyLoc.ForeColor = System.Drawing.SystemColors.WindowText; + this.tb_Options_MyLoc.Location = new System.Drawing.Point(89, 36); + this.tb_Options_MyLoc.Name = "tb_Options_MyLoc"; + this.tb_Options_MyLoc.Size = new System.Drawing.Size(100, 21); + this.tb_Options_MyLoc.SmallLettersForSubsquares = global::AirScout.Properties.Settings.Default.Locator_SmallLettersForSubsquares; + this.tb_Options_MyLoc.TabIndex = 2; + this.tb_Options_MyLoc.TextChanged += new System.EventHandler(this.tb_Options_MyLoc_TextChanged); + // + // cb_Options_Gauges_Show + // + this.cb_Options_Gauges_Show.AutoSize = true; + this.cb_Options_Gauges_Show.Checked = global::AirScout.Properties.Settings.Default.Map_TrackingGaugesShow; + this.cb_Options_Gauges_Show.CheckState = System.Windows.Forms.CheckState.Checked; + this.cb_Options_Gauges_Show.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "Map_TrackingGaugesShow", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.cb_Options_Gauges_Show.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cb_Options_Gauges_Show.Location = new System.Drawing.Point(16, 19); + this.cb_Options_Gauges_Show.Name = "cb_Options_Gauges_Show"; + this.cb_Options_Gauges_Show.Size = new System.Drawing.Size(199, 17); + this.cb_Options_Gauges_Show.TabIndex = 7; + this.cb_Options_Gauges_Show.Text = "Show large Tracking Display on map"; + this.cb_Options_Gauges_Show.UseVisualStyleBackColor = true; + // + // ud_Options_Gauges_Width + // + this.ud_Options_Gauges_Width.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::AirScout.Properties.Settings.Default, "Map_TrackingGaugeWidth", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.ud_Options_Gauges_Width.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.ud_Options_Gauges_Width.Location = new System.Drawing.Point(174, 41); + this.ud_Options_Gauges_Width.Maximum = new decimal(new int[] { + 1000, + 0, + 0, + 0}); + this.ud_Options_Gauges_Width.Minimum = new decimal(new int[] { + 175, + 0, + 0, + 0}); + this.ud_Options_Gauges_Width.Name = "ud_Options_Gauges_Width"; + this.ud_Options_Gauges_Width.Size = new System.Drawing.Size(63, 22); + this.ud_Options_Gauges_Width.TabIndex = 3; + this.ud_Options_Gauges_Width.Value = global::AirScout.Properties.Settings.Default.Map_TrackingGaugeWidth; + // + // cb_Options_Map_SmallMarkers + // + this.cb_Options_Map_SmallMarkers.AutoSize = true; + this.cb_Options_Map_SmallMarkers.Checked = global::AirScout.Properties.Settings.Default.Map_SmallMarkers; + this.cb_Options_Map_SmallMarkers.CheckState = System.Windows.Forms.CheckState.Checked; + this.cb_Options_Map_SmallMarkers.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "Map_SmallMarkers", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.cb_Options_Map_SmallMarkers.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cb_Options_Map_SmallMarkers.Location = new System.Drawing.Point(18, 16); + this.cb_Options_Map_SmallMarkers.Name = "cb_Options_Map_SmallMarkers"; + this.cb_Options_Map_SmallMarkers.Size = new System.Drawing.Size(199, 17); + this.cb_Options_Map_SmallMarkers.TabIndex = 2; + this.cb_Options_Map_SmallMarkers.Text = "Use Small Markers for all Path Marks"; + this.cb_Options_Map_SmallMarkers.UseVisualStyleBackColor = true; + // + // cb_Options_Map_LabelCalls + // + this.cb_Options_Map_LabelCalls.AutoSize = true; + this.cb_Options_Map_LabelCalls.Checked = global::AirScout.Properties.Settings.Default.Map_LabelCalls; + this.cb_Options_Map_LabelCalls.CheckState = System.Windows.Forms.CheckState.Checked; + this.cb_Options_Map_LabelCalls.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "Map_LabelCalls", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.cb_Options_Map_LabelCalls.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cb_Options_Map_LabelCalls.Location = new System.Drawing.Point(18, 35); + this.cb_Options_Map_LabelCalls.Name = "cb_Options_Map_LabelCalls"; + this.cb_Options_Map_LabelCalls.Size = new System.Drawing.Size(209, 17); + this.cb_Options_Map_LabelCalls.TabIndex = 3; + this.cb_Options_Map_LabelCalls.Text = "Show Labels with Callsign at Locations"; + this.cb_Options_Map_LabelCalls.UseVisualStyleBackColor = true; + // + // 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(192, 19); + 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; + // + // cb_Options_Distances_Activated + // + this.cb_Options_Distances_Activated.AutoSize = true; + this.cb_Options_Distances_Activated.Checked = global::AirScout.Properties.Settings.Default.Map_ShowDistances; + this.cb_Options_Distances_Activated.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "Map_ShowDistances", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.cb_Options_Distances_Activated.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cb_Options_Distances_Activated.Location = new System.Drawing.Point(16, 54); + this.cb_Options_Distances_Activated.Name = "cb_Options_Distances_Activated"; + this.cb_Options_Distances_Activated.Size = new System.Drawing.Size(132, 17); + this.cb_Options_Distances_Activated.TabIndex = 12; + this.cb_Options_Distances_Activated.Text = "Show Distance Circles"; + this.cb_Options_Distances_Activated.UseVisualStyleBackColor = true; + // + // cb_Options_Locators_Activate + // + this.cb_Options_Locators_Activate.AutoSize = true; + this.cb_Options_Locators_Activate.Checked = global::AirScout.Properties.Settings.Default.Map_ShowLocators; + this.cb_Options_Locators_Activate.CheckState = System.Windows.Forms.CheckState.Checked; + this.cb_Options_Locators_Activate.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "Map_ShowLocators", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.cb_Options_Locators_Activate.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cb_Options_Locators_Activate.Location = new System.Drawing.Point(16, 37); + this.cb_Options_Locators_Activate.Name = "cb_Options_Locators_Activate"; + this.cb_Options_Locators_Activate.Size = new System.Drawing.Size(114, 17); + this.cb_Options_Locators_Activate.TabIndex = 11; + this.cb_Options_Locators_Activate.Text = "Show Locator Grid"; + this.cb_Options_Locators_Activate.UseVisualStyleBackColor = true; + // + // cb_Options_Watchlist_Activate + // + this.cb_Options_Watchlist_Activate.AutoSize = true; + this.cb_Options_Watchlist_Activate.Checked = global::AirScout.Properties.Settings.Default.Watchlist_Activated; + this.cb_Options_Watchlist_Activate.CheckState = System.Windows.Forms.CheckState.Checked; + this.cb_Options_Watchlist_Activate.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "Watchlist_Activated", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.cb_Options_Watchlist_Activate.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cb_Options_Watchlist_Activate.Location = new System.Drawing.Point(16, 71); + this.cb_Options_Watchlist_Activate.Name = "cb_Options_Watchlist_Activate"; + this.cb_Options_Watchlist_Activate.Size = new System.Drawing.Size(144, 17); + this.cb_Options_Watchlist_Activate.TabIndex = 1; + this.cb_Options_Watchlist_Activate.Text = "Show Watchlist Callsigns"; + this.cb_Options_Watchlist_Activate.UseVisualStyleBackColor = true; + // + // cb_Options_Airports_Activate + // + this.cb_Options_Airports_Activate.AutoSize = true; + this.cb_Options_Airports_Activate.Checked = global::AirScout.Properties.Settings.Default.Airports_Activate; + this.cb_Options_Airports_Activate.CheckState = System.Windows.Forms.CheckState.Checked; + this.cb_Options_Airports_Activate.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "Airports_Activate", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.cb_Options_Airports_Activate.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cb_Options_Airports_Activate.Location = new System.Drawing.Point(16, 19); + this.cb_Options_Airports_Activate.Name = "cb_Options_Airports_Activate"; + this.cb_Options_Airports_Activate.Size = new System.Drawing.Size(91, 17); + this.cb_Options_Airports_Activate.TabIndex = 0; + this.cb_Options_Airports_Activate.Text = "Show Airports"; + this.cb_Options_Airports_Activate.UseVisualStyleBackColor = true; + // + // tb_Options_Map_Update_Interval + // + this.tb_Options_Map_Update_Interval.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::AirScout.Properties.Settings.Default, "Map_Update", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.tb_Options_Map_Update_Interval.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tb_Options_Map_Update_Interval.FormatSpecifier = "F0"; + this.tb_Options_Map_Update_Interval.Location = new System.Drawing.Point(119, 17); + this.tb_Options_Map_Update_Interval.MaxValue = 3600; + this.tb_Options_Map_Update_Interval.MinValue = 0; + this.tb_Options_Map_Update_Interval.Name = "tb_Options_Map_Update_Interval"; + this.tb_Options_Map_Update_Interval.Size = new System.Drawing.Size(37, 22); + this.tb_Options_Map_Update_Interval.TabIndex = 23; + this.tb_Options_Map_Update_Interval.Text = "1"; + this.tb_Options_Map_Update_Interval.Value = global::AirScout.Properties.Settings.Default.Map_Update; + // + // tb_Options_Planes_IconSize_S + // + this.tb_Options_Planes_IconSize_S.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::AirScout.Properties.Settings.Default, "Planes_IconSize_S", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.tb_Options_Planes_IconSize_S.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tb_Options_Planes_IconSize_S.FormatSpecifier = "F0"; + this.tb_Options_Planes_IconSize_S.Location = new System.Drawing.Point(183, 43); + this.tb_Options_Planes_IconSize_S.MaxValue = 128; + this.tb_Options_Planes_IconSize_S.MinValue = 0; + this.tb_Options_Planes_IconSize_S.Name = "tb_Options_Planes_IconSize_S"; + this.tb_Options_Planes_IconSize_S.Size = new System.Drawing.Size(37, 22); + this.tb_Options_Planes_IconSize_S.TabIndex = 16; + this.tb_Options_Planes_IconSize_S.Text = "48"; + this.tb_Options_Planes_IconSize_S.Value = global::AirScout.Properties.Settings.Default.Planes_IconSize_S; + // + // tb_Options_Planes_IconSize_H + // + this.tb_Options_Planes_IconSize_H.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::AirScout.Properties.Settings.Default, "Planes_IconSize_H", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.tb_Options_Planes_IconSize_H.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tb_Options_Planes_IconSize_H.FormatSpecifier = "F0"; + this.tb_Options_Planes_IconSize_H.Location = new System.Drawing.Point(183, 15); + this.tb_Options_Planes_IconSize_H.MaxValue = 128; + this.tb_Options_Planes_IconSize_H.MinValue = 0; + this.tb_Options_Planes_IconSize_H.Name = "tb_Options_Planes_IconSize_H"; + this.tb_Options_Planes_IconSize_H.Size = new System.Drawing.Size(37, 22); + this.tb_Options_Planes_IconSize_H.TabIndex = 15; + this.tb_Options_Planes_IconSize_H.Text = "36"; + this.tb_Options_Planes_IconSize_H.Value = global::AirScout.Properties.Settings.Default.Planes_IconSize_H; + // + // tb_Options_Planes_IconSize_M + // + this.tb_Options_Planes_IconSize_M.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::AirScout.Properties.Settings.Default, "Planes_IconSize_M", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.tb_Options_Planes_IconSize_M.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tb_Options_Planes_IconSize_M.FormatSpecifier = "F0"; + this.tb_Options_Planes_IconSize_M.Location = new System.Drawing.Point(63, 43); + this.tb_Options_Planes_IconSize_M.MaxValue = 128; + this.tb_Options_Planes_IconSize_M.MinValue = 0; + this.tb_Options_Planes_IconSize_M.Name = "tb_Options_Planes_IconSize_M"; + this.tb_Options_Planes_IconSize_M.Size = new System.Drawing.Size(37, 22); + this.tb_Options_Planes_IconSize_M.TabIndex = 14; + this.tb_Options_Planes_IconSize_M.Text = "24"; + this.tb_Options_Planes_IconSize_M.Value = global::AirScout.Properties.Settings.Default.Planes_IconSize_M; + // + // tb_Options_Planes_IconSize_L + // + this.tb_Options_Planes_IconSize_L.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::AirScout.Properties.Settings.Default, "Planes_IconSize_L", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.tb_Options_Planes_IconSize_L.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tb_Options_Planes_IconSize_L.FormatSpecifier = "F0"; + this.tb_Options_Planes_IconSize_L.Location = new System.Drawing.Point(63, 17); + this.tb_Options_Planes_IconSize_L.MaxValue = 128; + this.tb_Options_Planes_IconSize_L.MinValue = 0; + this.tb_Options_Planes_IconSize_L.Name = "tb_Options_Planes_IconSize_L"; + this.tb_Options_Planes_IconSize_L.Size = new System.Drawing.Size(37, 22); + this.tb_Options_Planes_IconSize_L.TabIndex = 13; + this.tb_Options_Planes_IconSize_L.Text = "16"; + this.tb_Options_Planes_IconSize_L.Value = global::AirScout.Properties.Settings.Default.Planes_IconSize_L; + // + // cb_Options_InfoWin_MyElevation + // + this.cb_Options_InfoWin_MyElevation.AutoSize = true; + this.cb_Options_InfoWin_MyElevation.Checked = global::AirScout.Properties.Settings.Default.InfoWin_MyElevation; + this.cb_Options_InfoWin_MyElevation.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "InfoWin_MyElevation", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.cb_Options_InfoWin_MyElevation.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cb_Options_InfoWin_MyElevation.Location = new System.Drawing.Point(18, 38); + this.cb_Options_InfoWin_MyElevation.Name = "cb_Options_InfoWin_MyElevation"; + this.cb_Options_InfoWin_MyElevation.Size = new System.Drawing.Size(87, 17); + this.cb_Options_InfoWin_MyElevation.TabIndex = 27; + this.cb_Options_InfoWin_MyElevation.Tag = ""; + this.cb_Options_InfoWin_MyElevation.Text = "My Elevation"; + this.cb_Options_InfoWin_MyElevation.UseVisualStyleBackColor = true; + // + // cb_Options_InfoWin_MyAzimuth + // + this.cb_Options_InfoWin_MyAzimuth.AutoSize = true; + this.cb_Options_InfoWin_MyAzimuth.Checked = global::AirScout.Properties.Settings.Default.InfoWin_MyAzimuth; + this.cb_Options_InfoWin_MyAzimuth.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "InfoWin_MyAzimuth", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.cb_Options_InfoWin_MyAzimuth.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cb_Options_InfoWin_MyAzimuth.Location = new System.Drawing.Point(18, 18); + this.cb_Options_InfoWin_MyAzimuth.Name = "cb_Options_InfoWin_MyAzimuth"; + this.cb_Options_InfoWin_MyAzimuth.Size = new System.Drawing.Size(80, 17); + this.cb_Options_InfoWin_MyAzimuth.TabIndex = 26; + this.cb_Options_InfoWin_MyAzimuth.Tag = ""; + this.cb_Options_InfoWin_MyAzimuth.Text = "My Azimuth"; + this.cb_Options_InfoWin_MyAzimuth.UseVisualStyleBackColor = true; + // + // cb_Options_InfoWin_MyDoppler + // + this.cb_Options_InfoWin_MyDoppler.AutoSize = true; + this.cb_Options_InfoWin_MyDoppler.Checked = global::AirScout.Properties.Settings.Default.InfoWin_MyDoppler; + this.cb_Options_InfoWin_MyDoppler.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "InfoWin_MyDoppler", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.cb_Options_InfoWin_MyDoppler.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cb_Options_InfoWin_MyDoppler.Location = new System.Drawing.Point(18, 57); + this.cb_Options_InfoWin_MyDoppler.Name = "cb_Options_InfoWin_MyDoppler"; + this.cb_Options_InfoWin_MyDoppler.Size = new System.Drawing.Size(80, 17); + this.cb_Options_InfoWin_MyDoppler.TabIndex = 28; + this.cb_Options_InfoWin_MyDoppler.Tag = ""; + this.cb_Options_InfoWin_MyDoppler.Text = "My Doppler"; + this.cb_Options_InfoWin_MyDoppler.UseVisualStyleBackColor = true; + // + // cb_Options_InfoWin_DXDoppler + // + this.cb_Options_InfoWin_DXDoppler.AutoSize = true; + this.cb_Options_InfoWin_DXDoppler.Checked = global::AirScout.Properties.Settings.Default.InfoWin_DXDoppler; + this.cb_Options_InfoWin_DXDoppler.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "InfoWin_DXDoppler", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.cb_Options_InfoWin_DXDoppler.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cb_Options_InfoWin_DXDoppler.Location = new System.Drawing.Point(18, 115); + this.cb_Options_InfoWin_DXDoppler.Name = "cb_Options_InfoWin_DXDoppler"; + this.cb_Options_InfoWin_DXDoppler.Size = new System.Drawing.Size(81, 17); + this.cb_Options_InfoWin_DXDoppler.TabIndex = 31; + this.cb_Options_InfoWin_DXDoppler.Tag = ""; + this.cb_Options_InfoWin_DXDoppler.Text = "DX Doppler"; + this.cb_Options_InfoWin_DXDoppler.UseVisualStyleBackColor = true; + // + // cb_Options_InfoWin_DXAzimuth + // + this.cb_Options_InfoWin_DXAzimuth.AutoSize = true; + this.cb_Options_InfoWin_DXAzimuth.Checked = global::AirScout.Properties.Settings.Default.InfoWin_DXAzimuth; + this.cb_Options_InfoWin_DXAzimuth.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "InfoWin_DXAzimuth", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.cb_Options_InfoWin_DXAzimuth.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cb_Options_InfoWin_DXAzimuth.Location = new System.Drawing.Point(18, 77); + this.cb_Options_InfoWin_DXAzimuth.Name = "cb_Options_InfoWin_DXAzimuth"; + this.cb_Options_InfoWin_DXAzimuth.Size = new System.Drawing.Size(81, 17); + this.cb_Options_InfoWin_DXAzimuth.TabIndex = 29; + this.cb_Options_InfoWin_DXAzimuth.Tag = ""; + this.cb_Options_InfoWin_DXAzimuth.Text = "DX Azimuth"; + this.cb_Options_InfoWin_DXAzimuth.UseVisualStyleBackColor = true; + // + // cb_Options_InfoWin_DXElevation + // + this.cb_Options_InfoWin_DXElevation.AutoSize = true; + this.cb_Options_InfoWin_DXElevation.Checked = global::AirScout.Properties.Settings.Default.InfoWin_DXElevation; + this.cb_Options_InfoWin_DXElevation.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "InfoWin_DXElevation", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.cb_Options_InfoWin_DXElevation.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cb_Options_InfoWin_DXElevation.Location = new System.Drawing.Point(18, 96); + this.cb_Options_InfoWin_DXElevation.Name = "cb_Options_InfoWin_DXElevation"; + this.cb_Options_InfoWin_DXElevation.Size = new System.Drawing.Size(88, 17); + this.cb_Options_InfoWin_DXElevation.TabIndex = 30; + this.cb_Options_InfoWin_DXElevation.Tag = ""; + this.cb_Options_InfoWin_DXElevation.Text = "DX Elevation"; + this.cb_Options_InfoWin_DXElevation.UseVisualStyleBackColor = true; + // + // cb_Options_InfoWin_Dist + // + this.cb_Options_InfoWin_Dist.AutoSize = true; + this.cb_Options_InfoWin_Dist.Checked = global::AirScout.Properties.Settings.Default.InfoWin_Dist; + this.cb_Options_InfoWin_Dist.CheckState = System.Windows.Forms.CheckState.Checked; + this.cb_Options_InfoWin_Dist.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "InfoWin_Dist", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.cb_Options_InfoWin_Dist.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cb_Options_InfoWin_Dist.Location = new System.Drawing.Point(11, 18); + this.cb_Options_InfoWin_Dist.Name = "cb_Options_InfoWin_Dist"; + this.cb_Options_InfoWin_Dist.Size = new System.Drawing.Size(111, 17); + this.cb_Options_InfoWin_Dist.TabIndex = 11; + this.cb_Options_InfoWin_Dist.Tag = ""; + this.cb_Options_InfoWin_Dist.Text = "Crossing Distance"; + this.cb_Options_InfoWin_Dist.UseVisualStyleBackColor = true; + // + // cb_Options_InfoWin_Time + // + this.cb_Options_InfoWin_Time.AutoSize = true; + this.cb_Options_InfoWin_Time.Checked = global::AirScout.Properties.Settings.Default.InfoWin_Time; + this.cb_Options_InfoWin_Time.CheckState = System.Windows.Forms.CheckState.Checked; + this.cb_Options_InfoWin_Time.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "InfoWin_Time", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.cb_Options_InfoWin_Time.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cb_Options_InfoWin_Time.Location = new System.Drawing.Point(11, 38); + this.cb_Options_InfoWin_Time.Name = "cb_Options_InfoWin_Time"; + this.cb_Options_InfoWin_Time.Size = new System.Drawing.Size(92, 17); + this.cb_Options_InfoWin_Time.TabIndex = 10; + this.cb_Options_InfoWin_Time.Tag = ""; + this.cb_Options_InfoWin_Time.Text = "Crossing Time"; + this.cb_Options_InfoWin_Time.UseVisualStyleBackColor = true; + // + // cb_Options_InfoWin_Epsilon + // + this.cb_Options_InfoWin_Epsilon.AutoSize = true; + this.cb_Options_InfoWin_Epsilon.Checked = global::AirScout.Properties.Settings.Default.InfoWin_Epsilon; + this.cb_Options_InfoWin_Epsilon.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "InfoWin_Epsilon", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.cb_Options_InfoWin_Epsilon.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cb_Options_InfoWin_Epsilon.Location = new System.Drawing.Point(11, 76); + this.cb_Options_InfoWin_Epsilon.Name = "cb_Options_InfoWin_Epsilon"; + this.cb_Options_InfoWin_Epsilon.Size = new System.Drawing.Size(105, 17); + this.cb_Options_InfoWin_Epsilon.TabIndex = 12; + this.cb_Options_InfoWin_Epsilon.Tag = ""; + this.cb_Options_InfoWin_Epsilon.Text = "Elevation Angles"; + this.cb_Options_InfoWin_Epsilon.UseVisualStyleBackColor = true; + // + // cb_Options_InfoWin_Squint + // + this.cb_Options_InfoWin_Squint.AutoSize = true; + this.cb_Options_InfoWin_Squint.Checked = global::AirScout.Properties.Settings.Default.InfoWin_Squint; + this.cb_Options_InfoWin_Squint.CheckState = System.Windows.Forms.CheckState.Checked; + this.cb_Options_InfoWin_Squint.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "InfoWin_Squint", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.cb_Options_InfoWin_Squint.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cb_Options_InfoWin_Squint.Location = new System.Drawing.Point(11, 96); + this.cb_Options_InfoWin_Squint.Name = "cb_Options_InfoWin_Squint"; + this.cb_Options_InfoWin_Squint.Size = new System.Drawing.Size(86, 17); + this.cb_Options_InfoWin_Squint.TabIndex = 13; + this.cb_Options_InfoWin_Squint.Tag = ""; + this.cb_Options_InfoWin_Squint.Text = "Squint Angle"; + this.cb_Options_InfoWin_Squint.UseVisualStyleBackColor = true; + // + // cb_Options_InfoWin_Angle + // + this.cb_Options_InfoWin_Angle.AutoSize = true; + this.cb_Options_InfoWin_Angle.Checked = global::AirScout.Properties.Settings.Default.InfoWin_Angle; + this.cb_Options_InfoWin_Angle.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "InfoWin_Angle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.cb_Options_InfoWin_Angle.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cb_Options_InfoWin_Angle.Location = new System.Drawing.Point(11, 57); + this.cb_Options_InfoWin_Angle.Name = "cb_Options_InfoWin_Angle"; + this.cb_Options_InfoWin_Angle.Size = new System.Drawing.Size(96, 17); + this.cb_Options_InfoWin_Angle.TabIndex = 15; + this.cb_Options_InfoWin_Angle.Tag = ""; + this.cb_Options_InfoWin_Angle.Text = "Crossing Angle"; + this.cb_Options_InfoWin_Angle.UseVisualStyleBackColor = true; + // + // rb_Options_InfoWin_Imperial + // + this.rb_Options_InfoWin_Imperial.AutoSize = true; + this.rb_Options_InfoWin_Imperial.Checked = global::AirScout.Properties.Settings.Default.InfoWin_Imperial; + this.rb_Options_InfoWin_Imperial.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "InfoWin_Imperial", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.rb_Options_InfoWin_Imperial.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.rb_Options_InfoWin_Imperial.Location = new System.Drawing.Point(139, 19); + this.rb_Options_InfoWin_Imperial.Name = "rb_Options_InfoWin_Imperial"; + this.rb_Options_InfoWin_Imperial.Size = new System.Drawing.Size(61, 17); + this.rb_Options_InfoWin_Imperial.TabIndex = 25; + this.rb_Options_InfoWin_Imperial.Tag = ""; + this.rb_Options_InfoWin_Imperial.Text = "Imperial"; + this.rb_Options_InfoWin_Imperial.UseVisualStyleBackColor = true; + // + // rb_Options_InfoWin_Metric + // + this.rb_Options_InfoWin_Metric.AutoSize = true; + this.rb_Options_InfoWin_Metric.Checked = global::AirScout.Properties.Settings.Default.InfoWin_Metric; + this.rb_Options_InfoWin_Metric.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "InfoWin_Metric", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.rb_Options_InfoWin_Metric.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.rb_Options_InfoWin_Metric.Location = new System.Drawing.Point(66, 19); + this.rb_Options_InfoWin_Metric.Name = "rb_Options_InfoWin_Metric"; + this.rb_Options_InfoWin_Metric.Size = new System.Drawing.Size(54, 17); + this.rb_Options_InfoWin_Metric.TabIndex = 24; + this.rb_Options_InfoWin_Metric.TabStop = true; + this.rb_Options_InfoWin_Metric.Tag = ""; + this.rb_Options_InfoWin_Metric.Text = "Metric"; + this.rb_Options_InfoWin_Metric.UseVisualStyleBackColor = true; + // + // tb_Options_Map_ToolTipFont + // + this.tb_Options_Map_ToolTipFont.DataBindings.Add(new System.Windows.Forms.Binding("Text", global::AirScout.Properties.Settings.Default, "Map_ToolTipFont", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.tb_Options_Map_ToolTipFont.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tb_Options_Map_ToolTipFont.Location = new System.Drawing.Point(55, 40); + 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(179, 20); + this.tb_Options_Map_ToolTipFont.TabIndex = 20; + this.tb_Options_Map_ToolTipFont.Text = global::AirScout.Properties.Settings.Default.Map_ToolTipFont; + // + // cb_Options_InfoWin_AlwaysDetailed + // + this.cb_Options_InfoWin_AlwaysDetailed.AutoSize = true; + this.cb_Options_InfoWin_AlwaysDetailed.Checked = global::AirScout.Properties.Settings.Default.InfoWin_AlwaysDetailed; + this.cb_Options_InfoWin_AlwaysDetailed.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "InfoWin_AlwaysDetailed", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.cb_Options_InfoWin_AlwaysDetailed.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cb_Options_InfoWin_AlwaysDetailed.Location = new System.Drawing.Point(7, 92); + this.cb_Options_InfoWin_AlwaysDetailed.Name = "cb_Options_InfoWin_AlwaysDetailed"; + this.cb_Options_InfoWin_AlwaysDetailed.Size = new System.Drawing.Size(117, 43); + this.cb_Options_InfoWin_AlwaysDetailed.TabIndex = 35; + this.cb_Options_InfoWin_AlwaysDetailed.Tag = ""; + this.cb_Options_InfoWin_AlwaysDetailed.Text = "Always show \r\ndetailed window\r\nwhen selected"; + this.tt_Options.SetToolTip(this.cb_Options_InfoWin_AlwaysDetailed, "Always show detailed window when selected even when the aircraft is not heading t" + + "owards path."); + this.cb_Options_InfoWin_AlwaysDetailed.UseVisualStyleBackColor = true; + // + // cb_Options_InfoWin_Position + // + this.cb_Options_InfoWin_Position.AutoSize = true; + this.cb_Options_InfoWin_Position.Checked = global::AirScout.Properties.Settings.Default.InfoWin_Position; + this.cb_Options_InfoWin_Position.CheckState = System.Windows.Forms.CheckState.Checked; + this.cb_Options_InfoWin_Position.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "InfoWin_Position", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.cb_Options_InfoWin_Position.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cb_Options_InfoWin_Position.Location = new System.Drawing.Point(6, 18); + this.cb_Options_InfoWin_Position.Name = "cb_Options_InfoWin_Position"; + this.cb_Options_InfoWin_Position.Size = new System.Drawing.Size(107, 17); + this.cb_Options_InfoWin_Position.TabIndex = 6; + this.cb_Options_InfoWin_Position.Tag = ""; + this.cb_Options_InfoWin_Position.Text = "Plane Position"; + this.cb_Options_InfoWin_Position.UseVisualStyleBackColor = true; + // + // cb_Options_InfoWin_Alt + // + this.cb_Options_InfoWin_Alt.AutoSize = true; + this.cb_Options_InfoWin_Alt.Checked = global::AirScout.Properties.Settings.Default.InfoWin_Alt; + this.cb_Options_InfoWin_Alt.CheckState = System.Windows.Forms.CheckState.Checked; + this.cb_Options_InfoWin_Alt.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "InfoWin_Alt", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.cb_Options_InfoWin_Alt.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cb_Options_InfoWin_Alt.Location = new System.Drawing.Point(6, 37); + this.cb_Options_InfoWin_Alt.Name = "cb_Options_InfoWin_Alt"; + this.cb_Options_InfoWin_Alt.Size = new System.Drawing.Size(105, 17); + this.cb_Options_InfoWin_Alt.TabIndex = 7; + this.cb_Options_InfoWin_Alt.Tag = ""; + this.cb_Options_InfoWin_Alt.Text = "Plane Altitude"; + this.cb_Options_InfoWin_Alt.UseVisualStyleBackColor = true; + // + // cb_Options_InfoWin_Track + // + this.cb_Options_InfoWin_Track.AutoSize = true; + this.cb_Options_InfoWin_Track.Checked = global::AirScout.Properties.Settings.Default.InfoWin_Track; + this.cb_Options_InfoWin_Track.CheckState = System.Windows.Forms.CheckState.Checked; + this.cb_Options_InfoWin_Track.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "InfoWin_Track", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.cb_Options_InfoWin_Track.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cb_Options_InfoWin_Track.Location = new System.Drawing.Point(6, 56); + this.cb_Options_InfoWin_Track.Name = "cb_Options_InfoWin_Track"; + this.cb_Options_InfoWin_Track.Size = new System.Drawing.Size(95, 17); + this.cb_Options_InfoWin_Track.TabIndex = 8; + this.cb_Options_InfoWin_Track.Tag = ""; + this.cb_Options_InfoWin_Track.Text = "Plane Track"; + this.cb_Options_InfoWin_Track.UseVisualStyleBackColor = true; + // + // cb_Options_InfoWin_Type + // + this.cb_Options_InfoWin_Type.AutoSize = true; + this.cb_Options_InfoWin_Type.Checked = global::AirScout.Properties.Settings.Default.InfoWin_Type; + this.cb_Options_InfoWin_Type.CheckState = System.Windows.Forms.CheckState.Checked; + this.cb_Options_InfoWin_Type.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "InfoWin_Type", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.cb_Options_InfoWin_Type.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cb_Options_InfoWin_Type.Location = new System.Drawing.Point(6, 75); + this.cb_Options_InfoWin_Type.Name = "cb_Options_InfoWin_Type"; + this.cb_Options_InfoWin_Type.Size = new System.Drawing.Size(90, 17); + this.cb_Options_InfoWin_Type.TabIndex = 9; + this.cb_Options_InfoWin_Type.Tag = ""; + this.cb_Options_InfoWin_Type.Text = "Plane Type"; + this.cb_Options_InfoWin_Type.UseVisualStyleBackColor = true; + // + // cb_Options_InfoWin_Speed + // + this.cb_Options_InfoWin_Speed.AutoSize = true; + this.cb_Options_InfoWin_Speed.Checked = global::AirScout.Properties.Settings.Default.InfoWin_Speed; + this.cb_Options_InfoWin_Speed.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "InfoWin_Speed", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.cb_Options_InfoWin_Speed.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cb_Options_InfoWin_Speed.Location = new System.Drawing.Point(275, 310); + this.cb_Options_InfoWin_Speed.Name = "cb_Options_InfoWin_Speed"; + this.cb_Options_InfoWin_Speed.Size = new System.Drawing.Size(87, 17); + this.cb_Options_InfoWin_Speed.TabIndex = 14; + this.cb_Options_InfoWin_Speed.Tag = ""; + this.cb_Options_InfoWin_Speed.Text = "Plane Speed"; + this.cb_Options_InfoWin_Speed.UseVisualStyleBackColor = true; + // + // cb_Options_Map_Preloader_Enabled + // + this.cb_Options_Map_Preloader_Enabled.AutoSize = true; + this.cb_Options_Map_Preloader_Enabled.CheckAlign = System.Drawing.ContentAlignment.MiddleRight; + this.cb_Options_Map_Preloader_Enabled.Checked = global::AirScout.Properties.Settings.Default.Map_Preloader_Enabled; + this.cb_Options_Map_Preloader_Enabled.CheckState = System.Windows.Forms.CheckState.Checked; + this.cb_Options_Map_Preloader_Enabled.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "Map_Preloader_Enabled", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.cb_Options_Map_Preloader_Enabled.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cb_Options_Map_Preloader_Enabled.Location = new System.Drawing.Point(230, 111); + this.cb_Options_Map_Preloader_Enabled.Name = "cb_Options_Map_Preloader_Enabled"; + this.cb_Options_Map_Preloader_Enabled.Size = new System.Drawing.Size(136, 17); + this.cb_Options_Map_Preloader_Enabled.TabIndex = 4; + this.cb_Options_Map_Preloader_Enabled.Text = "Enable Map Preloading"; + this.cb_Options_Map_Preloader_Enabled.UseVisualStyleBackColor = true; + // + // ud_Options_Map_Opacity + // + this.ud_Options_Map_Opacity.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::AirScout.Properties.Settings.Default, "Map_Opacity", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.ud_Options_Map_Opacity.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.ud_Options_Map_Opacity.Increment = new decimal(new int[] { + 1, + 0, + 0, + 65536}); + this.ud_Options_Map_Opacity.Location = new System.Drawing.Point(88, 109); + this.ud_Options_Map_Opacity.Maximum = new decimal(new int[] { + 1, + 0, + 0, + 0}); + this.ud_Options_Map_Opacity.Name = "ud_Options_Map_Opacity"; + this.ud_Options_Map_Opacity.Size = new System.Drawing.Size(54, 20); + this.ud_Options_Map_Opacity.TabIndex = 10; + this.ud_Options_Map_Opacity.Value = global::AirScout.Properties.Settings.Default.Map_Opacity; + // + // ud_Options_Map_Preloader_MaxZoom + // + this.ud_Options_Map_Preloader_MaxZoom.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::AirScout.Properties.Settings.Default, "Map_Preloader_MaxZoom", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.ud_Options_Map_Preloader_MaxZoom.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.ud_Options_Map_Preloader_MaxZoom.Location = new System.Drawing.Point(315, 134); + this.ud_Options_Map_Preloader_MaxZoom.Maximum = new decimal(new int[] { + 11, + 0, + 0, + 0}); + this.ud_Options_Map_Preloader_MaxZoom.Name = "ud_Options_Map_Preloader_MaxZoom"; + this.ud_Options_Map_Preloader_MaxZoom.Size = new System.Drawing.Size(54, 22); + this.ud_Options_Map_Preloader_MaxZoom.TabIndex = 6; + this.ud_Options_Map_Preloader_MaxZoom.Value = global::AirScout.Properties.Settings.Default.Map_Preloader_MaxZoom; + // + // cb_Options_Elevation_GLOBE_EnableCache + // + this.cb_Options_Elevation_GLOBE_EnableCache.AutoSize = true; + this.cb_Options_Elevation_GLOBE_EnableCache.Checked = global::AirScout.Properties.Settings.Default.Elevation_GLOBE_EnableCache; + this.cb_Options_Elevation_GLOBE_EnableCache.CheckState = System.Windows.Forms.CheckState.Checked; + this.cb_Options_Elevation_GLOBE_EnableCache.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "Elevation_GLOBE_EnableCache", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.cb_Options_Elevation_GLOBE_EnableCache.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cb_Options_Elevation_GLOBE_EnableCache.Location = new System.Drawing.Point(12, 42); + this.cb_Options_Elevation_GLOBE_EnableCache.Name = "cb_Options_Elevation_GLOBE_EnableCache"; + this.cb_Options_Elevation_GLOBE_EnableCache.Size = new System.Drawing.Size(179, 17); + this.cb_Options_Elevation_GLOBE_EnableCache.TabIndex = 8; + this.cb_Options_Elevation_GLOBE_EnableCache.Tag = ""; + this.cb_Options_Elevation_GLOBE_EnableCache.Text = "Keep downloaded elevation tiles"; + this.cb_Options_Elevation_GLOBE_EnableCache.UseVisualStyleBackColor = true; + // + // cb_Options_Elevation_GLOBE + // + this.cb_Options_Elevation_GLOBE.AutoSize = true; + this.cb_Options_Elevation_GLOBE.Checked = global::AirScout.Properties.Settings.Default.Elevation_GLOBE_Enabled; + this.cb_Options_Elevation_GLOBE.CheckState = System.Windows.Forms.CheckState.Checked; + this.cb_Options_Elevation_GLOBE.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "Elevation_GLOBE_Enabled", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.cb_Options_Elevation_GLOBE.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cb_Options_Elevation_GLOBE.Location = new System.Drawing.Point(12, 19); + this.cb_Options_Elevation_GLOBE.Name = "cb_Options_Elevation_GLOBE"; + this.cb_Options_Elevation_GLOBE.Size = new System.Drawing.Size(154, 17); + this.cb_Options_Elevation_GLOBE.TabIndex = 7; + this.cb_Options_Elevation_GLOBE.Tag = ""; + this.cb_Options_Elevation_GLOBE.Text = "Use GLOBE elevation data"; + this.cb_Options_Elevation_GLOBE.UseVisualStyleBackColor = true; + // + // cb_Options_Elevation_SRTM3_EnableCache + // + this.cb_Options_Elevation_SRTM3_EnableCache.AutoSize = true; + this.cb_Options_Elevation_SRTM3_EnableCache.Checked = global::AirScout.Properties.Settings.Default.Elevation_SRTM3_EnableCache; + this.cb_Options_Elevation_SRTM3_EnableCache.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "Elevation_SRTM3_EnableCache", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.cb_Options_Elevation_SRTM3_EnableCache.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cb_Options_Elevation_SRTM3_EnableCache.Location = new System.Drawing.Point(6, 42); + this.cb_Options_Elevation_SRTM3_EnableCache.Name = "cb_Options_Elevation_SRTM3_EnableCache"; + this.cb_Options_Elevation_SRTM3_EnableCache.Size = new System.Drawing.Size(179, 17); + this.cb_Options_Elevation_SRTM3_EnableCache.TabIndex = 13; + this.cb_Options_Elevation_SRTM3_EnableCache.Tag = ""; + this.cb_Options_Elevation_SRTM3_EnableCache.Text = "Keep downloaded elevation tiles"; + this.cb_Options_Elevation_SRTM3_EnableCache.UseVisualStyleBackColor = true; + // + // cb_Options_Elevation_SRTM3 + // + this.cb_Options_Elevation_SRTM3.AutoSize = true; + this.cb_Options_Elevation_SRTM3.Checked = global::AirScout.Properties.Settings.Default.Elevation_SRTM3_Enabled; + this.cb_Options_Elevation_SRTM3.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "Elevation_SRTM3_Enabled", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.cb_Options_Elevation_SRTM3.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cb_Options_Elevation_SRTM3.Location = new System.Drawing.Point(6, 19); + this.cb_Options_Elevation_SRTM3.Name = "cb_Options_Elevation_SRTM3"; + this.cb_Options_Elevation_SRTM3.Size = new System.Drawing.Size(155, 17); + this.cb_Options_Elevation_SRTM3.TabIndex = 12; + this.cb_Options_Elevation_SRTM3.Tag = ""; + this.cb_Options_Elevation_SRTM3.Text = "Use SRTM3 elevation data"; + this.cb_Options_Elevation_SRTM3.UseVisualStyleBackColor = true; + // + // cb_Options_Elevation_SRTM1_EnableCache + // + this.cb_Options_Elevation_SRTM1_EnableCache.AutoSize = true; + this.cb_Options_Elevation_SRTM1_EnableCache.Checked = global::AirScout.Properties.Settings.Default.Elevation_SRTM1_EnableCache; + this.cb_Options_Elevation_SRTM1_EnableCache.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "Elevation_SRTM1_EnableCache", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.cb_Options_Elevation_SRTM1_EnableCache.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cb_Options_Elevation_SRTM1_EnableCache.Location = new System.Drawing.Point(6, 42); + this.cb_Options_Elevation_SRTM1_EnableCache.Name = "cb_Options_Elevation_SRTM1_EnableCache"; + this.cb_Options_Elevation_SRTM1_EnableCache.Size = new System.Drawing.Size(179, 17); + this.cb_Options_Elevation_SRTM1_EnableCache.TabIndex = 17; + this.cb_Options_Elevation_SRTM1_EnableCache.Tag = ""; + this.cb_Options_Elevation_SRTM1_EnableCache.Text = "Keep downloaded elevation tiles"; + this.cb_Options_Elevation_SRTM1_EnableCache.UseVisualStyleBackColor = true; + // + // cb_Options_Elevation_SRTM1 + // + this.cb_Options_Elevation_SRTM1.AutoSize = true; + this.cb_Options_Elevation_SRTM1.Checked = global::AirScout.Properties.Settings.Default.Elevation_SRTM1_Enabled; + this.cb_Options_Elevation_SRTM1.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "Elevation_SRTM1_Enabled", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.cb_Options_Elevation_SRTM1.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cb_Options_Elevation_SRTM1.Location = new System.Drawing.Point(6, 19); + this.cb_Options_Elevation_SRTM1.Name = "cb_Options_Elevation_SRTM1"; + this.cb_Options_Elevation_SRTM1.Size = new System.Drawing.Size(155, 17); + this.cb_Options_Elevation_SRTM1.TabIndex = 16; + this.cb_Options_Elevation_SRTM1.Tag = ""; + this.cb_Options_Elevation_SRTM1.Text = "Use SRTM1 elevation data"; + this.cb_Options_Elevation_SRTM1.UseVisualStyleBackColor = true; + // + // cb_Options_Elevation_ASTER3_EnableCache + // + this.cb_Options_Elevation_ASTER3_EnableCache.AutoSize = true; + this.cb_Options_Elevation_ASTER3_EnableCache.Checked = global::AirScout.Properties.Settings.Default.Elevation_ASTER3_EnableCache; + this.cb_Options_Elevation_ASTER3_EnableCache.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "Elevation_ASTER3_EnableCache", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.cb_Options_Elevation_ASTER3_EnableCache.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cb_Options_Elevation_ASTER3_EnableCache.Location = new System.Drawing.Point(6, 42); + this.cb_Options_Elevation_ASTER3_EnableCache.Name = "cb_Options_Elevation_ASTER3_EnableCache"; + this.cb_Options_Elevation_ASTER3_EnableCache.Size = new System.Drawing.Size(179, 17); + this.cb_Options_Elevation_ASTER3_EnableCache.TabIndex = 13; + this.cb_Options_Elevation_ASTER3_EnableCache.Tag = ""; + this.cb_Options_Elevation_ASTER3_EnableCache.Text = "Keep downloaded elevation tiles"; + this.cb_Options_Elevation_ASTER3_EnableCache.UseVisualStyleBackColor = true; + // + // cb_Options_Elevation_ASTER3 + // + this.cb_Options_Elevation_ASTER3.AutoSize = true; + this.cb_Options_Elevation_ASTER3.Checked = global::AirScout.Properties.Settings.Default.Elevation_ASTER3_Enabled; + this.cb_Options_Elevation_ASTER3.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "Elevation_ASTER3_Enabled", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.cb_Options_Elevation_ASTER3.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cb_Options_Elevation_ASTER3.Location = new System.Drawing.Point(6, 19); + this.cb_Options_Elevation_ASTER3.Name = "cb_Options_Elevation_ASTER3"; + this.cb_Options_Elevation_ASTER3.Size = new System.Drawing.Size(160, 17); + this.cb_Options_Elevation_ASTER3.TabIndex = 12; + this.cb_Options_Elevation_ASTER3.Tag = ""; + this.cb_Options_Elevation_ASTER3.Text = "Use ASTER3 elevation data"; + this.cb_Options_Elevation_ASTER3.UseVisualStyleBackColor = true; + // + // cb_Options_Elevation_ASTER1_EnableCache + // + this.cb_Options_Elevation_ASTER1_EnableCache.AutoSize = true; + this.cb_Options_Elevation_ASTER1_EnableCache.Checked = global::AirScout.Properties.Settings.Default.Elevation_ASTER1_EnableCache; + this.cb_Options_Elevation_ASTER1_EnableCache.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "Elevation_ASTER1_EnableCache", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.cb_Options_Elevation_ASTER1_EnableCache.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cb_Options_Elevation_ASTER1_EnableCache.Location = new System.Drawing.Point(6, 42); + this.cb_Options_Elevation_ASTER1_EnableCache.Name = "cb_Options_Elevation_ASTER1_EnableCache"; + this.cb_Options_Elevation_ASTER1_EnableCache.Size = new System.Drawing.Size(179, 17); + this.cb_Options_Elevation_ASTER1_EnableCache.TabIndex = 13; + this.cb_Options_Elevation_ASTER1_EnableCache.Tag = ""; + this.cb_Options_Elevation_ASTER1_EnableCache.Text = "Keep downloaded elevation tiles"; + this.cb_Options_Elevation_ASTER1_EnableCache.UseVisualStyleBackColor = true; + // + // cb_Options_Elevation_ASTER1 + // + this.cb_Options_Elevation_ASTER1.AutoSize = true; + this.cb_Options_Elevation_ASTER1.Checked = global::AirScout.Properties.Settings.Default.Elevation_ASTER1_Enabled; + this.cb_Options_Elevation_ASTER1.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "Elevation_ASTER1_Enabled", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.cb_Options_Elevation_ASTER1.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cb_Options_Elevation_ASTER1.Location = new System.Drawing.Point(6, 19); + this.cb_Options_Elevation_ASTER1.Name = "cb_Options_Elevation_ASTER1"; + this.cb_Options_Elevation_ASTER1.Size = new System.Drawing.Size(160, 17); + this.cb_Options_Elevation_ASTER1.TabIndex = 12; + this.cb_Options_Elevation_ASTER1.Tag = ""; + this.cb_Options_Elevation_ASTER1.Text = "Use ASTER1 elevation data"; + this.cb_Options_Elevation_ASTER1.UseVisualStyleBackColor = true; + // + // tb_Options_Path_MaxLength + // + this.tb_Options_Path_MaxLength.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::AirScout.Properties.Settings.Default, "Path_MaxLength", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.tb_Options_Path_MaxLength.Font = new System.Drawing.Font("Courier New", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tb_Options_Path_MaxLength.FormatSpecifier = "F0"; + this.tb_Options_Path_MaxLength.Location = new System.Drawing.Point(318, 385); + this.tb_Options_Path_MaxLength.MaxValue = double.NaN; + this.tb_Options_Path_MaxLength.MinValue = double.NaN; + this.tb_Options_Path_MaxLength.Name = "tb_Options_Path_MaxLength"; + this.tb_Options_Path_MaxLength.Size = new System.Drawing.Size(57, 20); + this.tb_Options_Path_MaxLength.TabIndex = 39; + this.tb_Options_Path_MaxLength.Text = "1000"; + this.tb_Options_Path_MaxLength.Value = global::AirScout.Properties.Settings.Default.Path_MaxLength; + // + // cb_Options_Path_BestCaseElevation + // + this.cb_Options_Path_BestCaseElevation.AutoSize = true; + this.cb_Options_Path_BestCaseElevation.Checked = global::AirScout.Properties.Settings.Default.Path_BestCaseElevation; + this.cb_Options_Path_BestCaseElevation.CheckState = System.Windows.Forms.CheckState.Checked; + this.cb_Options_Path_BestCaseElevation.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "Path_BestCaseElevation", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.cb_Options_Path_BestCaseElevation.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cb_Options_Path_BestCaseElevation.Location = new System.Drawing.Point(6, 411); + this.cb_Options_Path_BestCaseElevation.Name = "cb_Options_Path_BestCaseElevation"; + this.cb_Options_Path_BestCaseElevation.Size = new System.Drawing.Size(438, 17); + this.cb_Options_Path_BestCaseElevation.TabIndex = 28; + this.cb_Options_Path_BestCaseElevation.Tag = ""; + this.cb_Options_Path_BestCaseElevation.Text = "Use best case elevation from grid square for both stations if precise location is" + + " unknown"; + this.tt_Options.SetToolTip(this.cb_Options_Path_BestCaseElevation, "If an exact position of a station is not available, use highest available elevati" + + "on within the given grid square. \r\nThis position is ONLY used for path calculati" + + "on and is not kept in database."); + this.cb_Options_Path_BestCaseElevation.UseVisualStyleBackColor = true; + // + // cb_Options_TracePositions + // + this.cb_Options_TracePositions.AutoSize = true; + this.cb_Options_TracePositions.Checked = global::AirScout.Properties.Settings.Default.Planes_TracePositions; + this.cb_Options_TracePositions.CheckState = System.Windows.Forms.CheckState.Checked; + this.cb_Options_TracePositions.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "Planes_TracePositions", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.cb_Options_TracePositions.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cb_Options_TracePositions.Location = new System.Drawing.Point(12, 19); + this.cb_Options_TracePositions.Name = "cb_Options_TracePositions"; + this.cb_Options_TracePositions.Size = new System.Drawing.Size(561, 17); + this.cb_Options_TracePositions.TabIndex = 1; + this.cb_Options_TracePositions.Text = "Trace aircraft positions to files (Caution: this will cause a lot of files in /PlanePositions!)"; + this.cb_Options_TracePositions.UseVisualStyleBackColor = true; + // + // int32TextBox1 + // + this.int32TextBox1.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::AirScout.Properties.Settings.Default, "Planes_ExtendedPlausibilityCheck_MaxErrorDist", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.int32TextBox1.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.int32TextBox1.FormatSpecifier = "F0"; + this.int32TextBox1.Location = new System.Drawing.Point(199, 84); + this.int32TextBox1.MaxValue = 600; + this.int32TextBox1.MinValue = 10; + this.int32TextBox1.Name = "int32TextBox1"; + this.int32TextBox1.Size = new System.Drawing.Size(52, 22); + this.int32TextBox1.TabIndex = 46; + this.int32TextBox1.Text = "10"; + this.int32TextBox1.Value = global::AirScout.Properties.Settings.Default.Planes_ExtendedPlausibilityCheck_MaxErrorDist; + // + // cb_Options_Planes_ExtendedPlausibilityCheck_Enabled + // + this.cb_Options_Planes_ExtendedPlausibilityCheck_Enabled.AutoSize = true; + this.cb_Options_Planes_ExtendedPlausibilityCheck_Enabled.Checked = global::AirScout.Properties.Settings.Default.Planes_ExtendedPlausibilityCheck_Enabled; + this.cb_Options_Planes_ExtendedPlausibilityCheck_Enabled.CheckState = System.Windows.Forms.CheckState.Checked; + this.cb_Options_Planes_ExtendedPlausibilityCheck_Enabled.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "Planes_ExtendedPlausibilityCheck_Enabled", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.cb_Options_Planes_ExtendedPlausibilityCheck_Enabled.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cb_Options_Planes_ExtendedPlausibilityCheck_Enabled.Location = new System.Drawing.Point(13, 53); + this.cb_Options_Planes_ExtendedPlausibilityCheck_Enabled.Name = "cb_Options_Planes_ExtendedPlausibilityCheck_Enabled"; + this.cb_Options_Planes_ExtendedPlausibilityCheck_Enabled.Size = new System.Drawing.Size(256, 17); + this.cb_Options_Planes_ExtendedPlausibilityCheck_Enabled.TabIndex = 44; + this.cb_Options_Planes_ExtendedPlausibilityCheck_Enabled.Text = "Enable extended plausibility check of aircraft info"; + this.cb_Options_Planes_ExtendedPlausibilityCheck_Enabled.UseVisualStyleBackColor = true; + // + // tb_Options_Planes_Interval + // + this.tb_Options_Planes_Interval.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::AirScout.Properties.Settings.Default, "Planes_Interval", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.tb_Options_Planes_Interval.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tb_Options_Planes_Interval.FormatSpecifier = "F0"; + this.tb_Options_Planes_Interval.Location = new System.Drawing.Point(199, 22); + this.tb_Options_Planes_Interval.MaxValue = 600; + this.tb_Options_Planes_Interval.MinValue = 10; + this.tb_Options_Planes_Interval.Name = "tb_Options_Planes_Interval"; + this.tb_Options_Planes_Interval.Size = new System.Drawing.Size(52, 22); + this.tb_Options_Planes_Interval.TabIndex = 43; + this.tb_Options_Planes_Interval.Text = "60"; + this.tb_Options_Planes_Interval.Value = global::AirScout.Properties.Settings.Default.Planes_Interval; + // + // cb_Options_Planes_LogErrors + // + this.cb_Options_Planes_LogErrors.AutoSize = true; + this.cb_Options_Planes_LogErrors.Checked = global::AirScout.Properties.Settings.Default.Planes_LogErrors; + this.cb_Options_Planes_LogErrors.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "Planes_LogErrors", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.cb_Options_Planes_LogErrors.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cb_Options_Planes_LogErrors.Location = new System.Drawing.Point(12, 118); + this.cb_Options_Planes_LogErrors.Name = "cb_Options_Planes_LogErrors"; + this.cb_Options_Planes_LogErrors.Size = new System.Drawing.Size(249, 17); + this.cb_Options_Planes_LogErrors.TabIndex = 0; + this.cb_Options_Planes_LogErrors.Text = "Log errors as warnings to AirScout\'s main logfile"; + this.cb_Options_Planes_LogErrors.UseVisualStyleBackColor = true; + // + // cb_Options_Planes_KeepHistory + // + this.cb_Options_Planes_KeepHistory.AutoSize = true; + this.cb_Options_Planes_KeepHistory.Checked = global::AirScout.Properties.Settings.Default.Planes_KeepHistory; + this.cb_Options_Planes_KeepHistory.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "Planes_KeepHistory", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.cb_Options_Planes_KeepHistory.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cb_Options_Planes_KeepHistory.Location = new System.Drawing.Point(18, 81); + this.cb_Options_Planes_KeepHistory.Name = "cb_Options_Planes_KeepHistory"; + this.cb_Options_Planes_KeepHistory.Size = new System.Drawing.Size(156, 17); + this.cb_Options_Planes_KeepHistory.TabIndex = 4; + this.cb_Options_Planes_KeepHistory.Text = "Keep Plane Position History"; + this.tt_Options.SetToolTip(this.cb_Options_Planes_KeepHistory, "Check this option to keep plane positions in database for history analysis.\r\nCAUT" + + "ION! This will need lot of CPU performance and space on disk!"); + this.cb_Options_Planes_KeepHistory.UseVisualStyleBackColor = true; + // + // ud_Options_Planes_Position_DatabaseLifetime + // + this.ud_Options_Planes_Position_DatabaseLifetime.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::AirScout.Properties.Settings.Default, "AircraftDatabase_MaxDaysLifetime", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.ud_Options_Planes_Position_DatabaseLifetime.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.ud_Options_Planes_Position_DatabaseLifetime.Location = new System.Drawing.Point(199, 14); + this.ud_Options_Planes_Position_DatabaseLifetime.Maximum = new decimal(new int[] { + 365, + 0, + 0, + 0}); + this.ud_Options_Planes_Position_DatabaseLifetime.Minimum = new decimal(new int[] { + 1, + 0, + 0, + 0}); + this.ud_Options_Planes_Position_DatabaseLifetime.Name = "ud_Options_Planes_Position_DatabaseLifetime"; + this.ud_Options_Planes_Position_DatabaseLifetime.Size = new System.Drawing.Size(49, 22); + this.ud_Options_Planes_Position_DatabaseLifetime.TabIndex = 2; + this.ud_Options_Planes_Position_DatabaseLifetime.Value = global::AirScout.Properties.Settings.Default.AircraftDatabase_MaxDaysLifetime; + // + // tb_Options_Planes_Positions_TTL + // + this.tb_Options_Planes_Positions_TTL.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::AirScout.Properties.Settings.Default, "Planes_Position_TTL", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.tb_Options_Planes_Positions_TTL.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tb_Options_Planes_Positions_TTL.FormatSpecifier = "F0"; + this.tb_Options_Planes_Positions_TTL.Location = new System.Drawing.Point(192, 65); + this.tb_Options_Planes_Positions_TTL.MaxValue = 30; + this.tb_Options_Planes_Positions_TTL.MinValue = 0; + this.tb_Options_Planes_Positions_TTL.Name = "tb_Options_Planes_Positions_TTL"; + this.tb_Options_Planes_Positions_TTL.Size = new System.Drawing.Size(52, 22); + this.tb_Options_Planes_Positions_TTL.TabIndex = 43; + this.tb_Options_Planes_Positions_TTL.Text = "5"; + this.tb_Options_Planes_Positions_TTL.Value = global::AirScout.Properties.Settings.Default.Planes_Position_TTL; + // + // tb_Options_Planes_MaxAlt + // + this.tb_Options_Planes_MaxAlt.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::AirScout.Properties.Settings.Default, "Planes_MaxAlt", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.tb_Options_Planes_MaxAlt.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tb_Options_Planes_MaxAlt.FormatSpecifier = "F0"; + this.tb_Options_Planes_MaxAlt.Location = new System.Drawing.Point(192, 39); + this.tb_Options_Planes_MaxAlt.MaxValue = 20000; + this.tb_Options_Planes_MaxAlt.MinValue = 0; + this.tb_Options_Planes_MaxAlt.Name = "tb_Options_Planes_MaxAlt"; + this.tb_Options_Planes_MaxAlt.Size = new System.Drawing.Size(52, 22); + this.tb_Options_Planes_MaxAlt.TabIndex = 42; + this.tb_Options_Planes_MaxAlt.Text = "12200"; + this.tb_Options_Planes_MaxAlt.Value = global::AirScout.Properties.Settings.Default.Planes_MaxAlt; + // + // tb_Options_Planes_MinAlt + // + this.tb_Options_Planes_MinAlt.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::AirScout.Properties.Settings.Default, "Planes_MinAlt", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.tb_Options_Planes_MinAlt.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tb_Options_Planes_MinAlt.FormatSpecifier = "F0"; + this.tb_Options_Planes_MinAlt.Location = new System.Drawing.Point(192, 14); + this.tb_Options_Planes_MinAlt.MaxValue = 20000; + this.tb_Options_Planes_MinAlt.MinValue = 0; + this.tb_Options_Planes_MinAlt.Name = "tb_Options_Planes_MinAlt"; + this.tb_Options_Planes_MinAlt.Size = new System.Drawing.Size(52, 22); + this.tb_Options_Planes_MinAlt.TabIndex = 41; + this.tb_Options_Planes_MinAlt.Text = "5000"; + this.tb_Options_Planes_MinAlt.Value = global::AirScout.Properties.Settings.Default.Planes_MinAlt; + // + // tb_Options_Planes_Filter_MinAlt + // + this.tb_Options_Planes_Filter_MinAlt.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::AirScout.Properties.Settings.Default, "Planes_Filter_Min_Alt", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.tb_Options_Planes_Filter_MinAlt.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tb_Options_Planes_Filter_MinAlt.FormatSpecifier = "F0"; + this.tb_Options_Planes_Filter_MinAlt.Location = new System.Drawing.Point(192, 86); + this.tb_Options_Planes_Filter_MinAlt.MaxValue = 12000; + this.tb_Options_Planes_Filter_MinAlt.MinValue = 0; + this.tb_Options_Planes_Filter_MinAlt.Name = "tb_Options_Planes_Filter_MinAlt"; + this.tb_Options_Planes_Filter_MinAlt.Size = new System.Drawing.Size(52, 22); + this.tb_Options_Planes_Filter_MinAlt.TabIndex = 43; + this.tb_Options_Planes_Filter_MinAlt.Text = "0"; + this.tb_Options_Planes_Filter_MinAlt.Value = global::AirScout.Properties.Settings.Default.Planes_Filter_Min_Alt; + // + // tb_Options_Planes_Filter_Max_Circumcircle + // + this.tb_Options_Planes_Filter_Max_Circumcircle.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::AirScout.Properties.Settings.Default, "Planes_Filter_Max_Circumcircle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.tb_Options_Planes_Filter_Max_Circumcircle.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tb_Options_Planes_Filter_Max_Circumcircle.FormatSpecifier = "F0"; + this.tb_Options_Planes_Filter_Max_Circumcircle.Location = new System.Drawing.Point(192, 59); + this.tb_Options_Planes_Filter_Max_Circumcircle.MaxValue = 1000; + this.tb_Options_Planes_Filter_Max_Circumcircle.MinValue = -1; + this.tb_Options_Planes_Filter_Max_Circumcircle.Name = "tb_Options_Planes_Filter_Max_Circumcircle"; + this.tb_Options_Planes_Filter_Max_Circumcircle.Size = new System.Drawing.Size(52, 22); + this.tb_Options_Planes_Filter_Max_Circumcircle.TabIndex = 42; + this.tb_Options_Planes_Filter_Max_Circumcircle.Text = "0"; + this.tb_Options_Planes_Filter_Max_Circumcircle.Value = global::AirScout.Properties.Settings.Default.Planes_Filter_Max_Circumcircle; + // + // cb_Options_Alarm_Activate + // + this.cb_Options_Alarm_Activate.AutoSize = true; + this.cb_Options_Alarm_Activate.Checked = global::AirScout.Properties.Settings.Default.Alarm_Activate; + this.cb_Options_Alarm_Activate.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "Alarm_Activate", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.cb_Options_Alarm_Activate.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cb_Options_Alarm_Activate.Location = new System.Drawing.Point(13, 19); + this.cb_Options_Alarm_Activate.Name = "cb_Options_Alarm_Activate"; + this.cb_Options_Alarm_Activate.Size = new System.Drawing.Size(94, 17); + this.cb_Options_Alarm_Activate.TabIndex = 1; + this.cb_Options_Alarm_Activate.Tag = ""; + this.cb_Options_Alarm_Activate.Text = "Activate Alarm"; + this.cb_Options_Alarm_Activate.UseVisualStyleBackColor = true; + // + // cb_Options_Alarm_PlaySound + // + this.cb_Options_Alarm_PlaySound.AutoSize = true; + this.cb_Options_Alarm_PlaySound.Checked = global::AirScout.Properties.Settings.Default.Alarm_PlaySound; + this.cb_Options_Alarm_PlaySound.CheckState = System.Windows.Forms.CheckState.Checked; + this.cb_Options_Alarm_PlaySound.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "Alarm_PlaySound", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.cb_Options_Alarm_PlaySound.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cb_Options_Alarm_PlaySound.Location = new System.Drawing.Point(13, 53); + this.cb_Options_Alarm_PlaySound.Name = "cb_Options_Alarm_PlaySound"; + this.cb_Options_Alarm_PlaySound.Size = new System.Drawing.Size(78, 17); + this.cb_Options_Alarm_PlaySound.TabIndex = 1; + this.cb_Options_Alarm_PlaySound.Tag = ""; + this.cb_Options_Alarm_PlaySound.Text = "Play sound"; + this.cb_Options_Alarm_PlaySound.UseVisualStyleBackColor = true; + // + // tb_Options_Alarm_Distance + // + this.tb_Options_Alarm_Distance.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::AirScout.Properties.Settings.Default, "Alarm_Distance", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.tb_Options_Alarm_Distance.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tb_Options_Alarm_Distance.FormatSpecifier = "F0"; + this.tb_Options_Alarm_Distance.Location = new System.Drawing.Point(143, 49); + this.tb_Options_Alarm_Distance.MaxValue = 1000D; + this.tb_Options_Alarm_Distance.MinValue = 0D; + this.tb_Options_Alarm_Distance.Name = "tb_Options_Alarm_Distance"; + this.tb_Options_Alarm_Distance.Size = new System.Drawing.Size(75, 22); + this.tb_Options_Alarm_Distance.TabIndex = 3; + this.tb_Options_Alarm_Distance.Text = "100"; + this.tb_Options_Alarm_Distance.Value = global::AirScout.Properties.Settings.Default.Alarm_Distance; + // + // tb_Options_Webserver_Port + // + this.tb_Options_Webserver_Port.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::AirScout.Properties.Settings.Default, "Webserver_Port", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.tb_Options_Webserver_Port.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tb_Options_Webserver_Port.FormatSpecifier = "F0"; + this.tb_Options_Webserver_Port.Location = new System.Drawing.Point(150, 28); + this.tb_Options_Webserver_Port.MaxValue = 65535; + this.tb_Options_Webserver_Port.MinValue = 0; + this.tb_Options_Webserver_Port.Name = "tb_Options_Webserver_Port"; + this.tb_Options_Webserver_Port.Size = new System.Drawing.Size(57, 22); + this.tb_Options_Webserver_Port.TabIndex = 8; + this.tb_Options_Webserver_Port.Text = "9880"; + this.tb_Options_Webserver_Port.Value = global::AirScout.Properties.Settings.Default.Webserver_Port; + // + // cb_Options_Server_Activate + // + this.cb_Options_Server_Activate.AutoSize = true; + this.cb_Options_Server_Activate.Checked = global::AirScout.Properties.Settings.Default.Server_Activate; + this.cb_Options_Server_Activate.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "Server_Activate", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.cb_Options_Server_Activate.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cb_Options_Server_Activate.Location = new System.Drawing.Point(13, 23); + this.cb_Options_Server_Activate.Name = "cb_Options_Server_Activate"; + this.cb_Options_Server_Activate.Size = new System.Drawing.Size(142, 17); + this.cb_Options_Server_Activate.TabIndex = 1; + this.cb_Options_Server_Activate.Tag = ""; + this.cb_Options_Server_Activate.Text = "Activate Network Server"; + this.cb_Options_Server_Activate.UseVisualStyleBackColor = true; + // + // tb_Options_Server_Port + // + this.tb_Options_Server_Port.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::AirScout.Properties.Settings.Default, "Server_Port", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.tb_Options_Server_Port.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tb_Options_Server_Port.FormatSpecifier = "F0"; + this.tb_Options_Server_Port.Location = new System.Drawing.Point(153, 56); + this.tb_Options_Server_Port.MaxValue = 65535; + this.tb_Options_Server_Port.MinValue = 0; + this.tb_Options_Server_Port.Name = "tb_Options_Server_Port"; + this.tb_Options_Server_Port.Size = new System.Drawing.Size(57, 22); + this.tb_Options_Server_Port.TabIndex = 6; + this.tb_Options_Server_Port.Text = "9872"; + this.tb_Options_Server_Port.Value = global::AirScout.Properties.Settings.Default.Server_Port; + // + // tb_Options_Server_Name + // + this.tb_Options_Server_Name.BackColor = System.Drawing.Color.FloralWhite; + this.tb_Options_Server_Name.DataBindings.Add(new System.Windows.Forms.Binding("Text", global::AirScout.Properties.Settings.Default, "Server_Name", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.tb_Options_Server_Name.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tb_Options_Server_Name.Location = new System.Drawing.Point(153, 30); + this.tb_Options_Server_Name.Name = "tb_Options_Server_Name"; + this.tb_Options_Server_Name.Size = new System.Drawing.Size(57, 20); + this.tb_Options_Server_Name.TabIndex = 2; + this.tb_Options_Server_Name.Tag = ""; + this.tb_Options_Server_Name.Text = global::AirScout.Properties.Settings.Default.Server_Name; + // + // tb_Options_SpecLab_UpdateInterval + // + this.tb_Options_SpecLab_UpdateInterval.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::AirScout.Properties.Settings.Default, "SpecLab_Update", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.tb_Options_SpecLab_UpdateInterval.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tb_Options_SpecLab_UpdateInterval.FormatSpecifier = "F1"; + this.tb_Options_SpecLab_UpdateInterval.Location = new System.Drawing.Point(106, 230); + this.tb_Options_SpecLab_UpdateInterval.MaxValue = 100D; + this.tb_Options_SpecLab_UpdateInterval.MinValue = 0D; + this.tb_Options_SpecLab_UpdateInterval.Name = "tb_Options_SpecLab_UpdateInterval"; + this.tb_Options_SpecLab_UpdateInterval.Size = new System.Drawing.Size(63, 22); + this.tb_Options_SpecLab_UpdateInterval.TabIndex = 18; + this.tb_Options_SpecLab_UpdateInterval.Text = "1.0"; + this.tb_Options_SpecLab_UpdateInterval.Value = global::AirScout.Properties.Settings.Default.SpecLab_Update; + // + // tb_Options_SpecLab_F2 + // + this.tb_Options_SpecLab_F2.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::AirScout.Properties.Settings.Default, "SpecLab_F2", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.tb_Options_SpecLab_F2.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tb_Options_SpecLab_F2.FormatSpecifier = "F0"; + this.tb_Options_SpecLab_F2.Location = new System.Drawing.Point(109, 205); + this.tb_Options_SpecLab_F2.MaxValue = 10000; + this.tb_Options_SpecLab_F2.MinValue = 0; + this.tb_Options_SpecLab_F2.Name = "tb_Options_SpecLab_F2"; + this.tb_Options_SpecLab_F2.Size = new System.Drawing.Size(60, 22); + this.tb_Options_SpecLab_F2.TabIndex = 17; + this.tb_Options_SpecLab_F2.Text = "1600"; + this.tb_Options_SpecLab_F2.Value = global::AirScout.Properties.Settings.Default.SpecLab_F2; + // + // tb_Options_SpecLab_F1 + // + this.tb_Options_SpecLab_F1.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::AirScout.Properties.Settings.Default, "SpecLab_F1", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.tb_Options_SpecLab_F1.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tb_Options_SpecLab_F1.FormatSpecifier = "F0"; + this.tb_Options_SpecLab_F1.Location = new System.Drawing.Point(109, 179); + this.tb_Options_SpecLab_F1.MaxValue = 10000; + this.tb_Options_SpecLab_F1.MinValue = 0; + this.tb_Options_SpecLab_F1.Name = "tb_Options_SpecLab_F1"; + this.tb_Options_SpecLab_F1.Size = new System.Drawing.Size(60, 22); + this.tb_Options_SpecLab_F1.TabIndex = 16; + this.tb_Options_SpecLab_F1.Text = "400"; + this.tb_Options_SpecLab_F1.Value = global::AirScout.Properties.Settings.Default.SpecLab_F1; + // + // tb_SpecLab_FileName + // + this.tb_SpecLab_FileName.BackColor = System.Drawing.Color.FloralWhite; + this.tb_SpecLab_FileName.DataBindings.Add(new System.Windows.Forms.Binding("Text", global::AirScout.Properties.Settings.Default, "SpecLab_FileName", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.tb_SpecLab_FileName.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tb_SpecLab_FileName.Location = new System.Drawing.Point(109, 153); + this.tb_SpecLab_FileName.Name = "tb_SpecLab_FileName"; + this.tb_SpecLab_FileName.Size = new System.Drawing.Size(347, 20); + this.tb_SpecLab_FileName.TabIndex = 6; + this.tb_SpecLab_FileName.Tag = ""; + this.tb_SpecLab_FileName.Text = global::AirScout.Properties.Settings.Default.SpecLab_FileName; + // + // tb_SpecLab_URL + // + this.tb_SpecLab_URL.BackColor = System.Drawing.Color.FloralWhite; + this.tb_SpecLab_URL.DataBindings.Add(new System.Windows.Forms.Binding("Text", global::AirScout.Properties.Settings.Default, "SpecLab_URL", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.tb_SpecLab_URL.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tb_SpecLab_URL.Location = new System.Drawing.Point(109, 126); + this.tb_SpecLab_URL.Name = "tb_SpecLab_URL"; + this.tb_SpecLab_URL.Size = new System.Drawing.Size(347, 20); + this.tb_SpecLab_URL.TabIndex = 2; + this.tb_SpecLab_URL.Tag = ""; + this.tb_SpecLab_URL.Text = global::AirScout.Properties.Settings.Default.SpecLab_URL; + // + // cb_SpecLab_Enabled + // + this.cb_SpecLab_Enabled.AutoSize = true; + this.cb_SpecLab_Enabled.Checked = global::AirScout.Properties.Settings.Default.SpecLab_Enabled; + this.cb_SpecLab_Enabled.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "SpecLab_Enabled", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.cb_SpecLab_Enabled.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cb_SpecLab_Enabled.Location = new System.Drawing.Point(18, 90); + this.cb_SpecLab_Enabled.Name = "cb_SpecLab_Enabled"; + this.cb_SpecLab_Enabled.Size = new System.Drawing.Size(122, 17); + this.cb_SpecLab_Enabled.TabIndex = 1; + this.cb_SpecLab_Enabled.Tag = ""; + this.cb_SpecLab_Enabled.Text = "Activate Connection"; + this.cb_SpecLab_Enabled.UseVisualStyleBackColor = true; + // + // tb_Options_Track_UDP_AirScout_Port + // + this.tb_Options_Track_UDP_AirScout_Port.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::AirScout.Properties.Settings.Default, "Track_UDP_AirScout_Port", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.tb_Options_Track_UDP_AirScout_Port.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tb_Options_Track_UDP_AirScout_Port.FormatSpecifier = "F0"; + this.tb_Options_Track_UDP_AirScout_Port.Location = new System.Drawing.Point(254, 60); + this.tb_Options_Track_UDP_AirScout_Port.MaxValue = 0; + this.tb_Options_Track_UDP_AirScout_Port.MinValue = 0; + this.tb_Options_Track_UDP_AirScout_Port.Name = "tb_Options_Track_UDP_AirScout_Port"; + this.tb_Options_Track_UDP_AirScout_Port.Size = new System.Drawing.Size(43, 22); + this.tb_Options_Track_UDP_AirScout_Port.TabIndex = 17; + this.tb_Options_Track_UDP_AirScout_Port.Text = "9872"; + this.tb_Options_Track_UDP_AirScout_Port.Value = global::AirScout.Properties.Settings.Default.Track_UDP_AirScout_Port; + // + // tb_Options_Track_UDP_WinTest_Port + // + this.tb_Options_Track_UDP_WinTest_Port.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::AirScout.Properties.Settings.Default, "Track_UDP_WinTest_Port", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.tb_Options_Track_UDP_WinTest_Port.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tb_Options_Track_UDP_WinTest_Port.FormatSpecifier = "F0"; + this.tb_Options_Track_UDP_WinTest_Port.Location = new System.Drawing.Point(254, 37); + this.tb_Options_Track_UDP_WinTest_Port.MaxValue = 0; + this.tb_Options_Track_UDP_WinTest_Port.MinValue = 0; + this.tb_Options_Track_UDP_WinTest_Port.Name = "tb_Options_Track_UDP_WinTest_Port"; + this.tb_Options_Track_UDP_WinTest_Port.Size = new System.Drawing.Size(43, 22); + this.tb_Options_Track_UDP_WinTest_Port.TabIndex = 16; + this.tb_Options_Track_UDP_WinTest_Port.Text = "9871"; + this.tb_Options_Track_UDP_WinTest_Port.Value = global::AirScout.Properties.Settings.Default.Track_UDP_WinTest_Port; + // + // tb_Options_Track_Serial_Baudrate + // + this.tb_Options_Track_Serial_Baudrate.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::AirScout.Properties.Settings.Default, "Track_Serial_Baudrate", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.tb_Options_Track_Serial_Baudrate.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tb_Options_Track_Serial_Baudrate.FormatSpecifier = "F0"; + this.tb_Options_Track_Serial_Baudrate.Location = new System.Drawing.Point(190, 40); + this.tb_Options_Track_Serial_Baudrate.MaxValue = 115200; + this.tb_Options_Track_Serial_Baudrate.MinValue = 0; + this.tb_Options_Track_Serial_Baudrate.Name = "tb_Options_Track_Serial_Baudrate"; + this.tb_Options_Track_Serial_Baudrate.Size = new System.Drawing.Size(72, 22); + this.tb_Options_Track_Serial_Baudrate.TabIndex = 11; + this.tb_Options_Track_Serial_Baudrate.Text = "4800"; + this.tt_Options.SetToolTip(this.tb_Options_Track_Serial_Baudrate, "Set the serial port baudrate for rotator control here.\\nBe sure that the baudrate" + + " is supported."); + this.tb_Options_Track_Serial_Baudrate.Value = global::AirScout.Properties.Settings.Default.Track_Serial_Baudrate; + // + // tb_Options_Track_Serial_Port + // + this.tb_Options_Track_Serial_Port.CharacterCasing = System.Windows.Forms.CharacterCasing.Upper; + this.tb_Options_Track_Serial_Port.DataBindings.Add(new System.Windows.Forms.Binding("Text", global::AirScout.Properties.Settings.Default, "Track_Serial_Port", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.tb_Options_Track_Serial_Port.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tb_Options_Track_Serial_Port.Location = new System.Drawing.Point(190, 17); + this.tb_Options_Track_Serial_Port.Name = "tb_Options_Track_Serial_Port"; + this.tb_Options_Track_Serial_Port.Size = new System.Drawing.Size(54, 22); + this.tb_Options_Track_Serial_Port.TabIndex = 6; + this.tb_Options_Track_Serial_Port.Tag = ""; + this.tb_Options_Track_Serial_Port.Text = global::AirScout.Properties.Settings.Default.Track_Serial_Port; + this.tt_Options.SetToolTip(this.tb_Options_Track_Serial_Port, "Set the serial port for rotator control here.\\nBe sure that the port exists on yo" + + "ur computer."); + // + // tb_Options_Track_Offset + // + this.tb_Options_Track_Offset.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::AirScout.Properties.Settings.Default, "Track_Offset", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.tb_Options_Track_Offset.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tb_Options_Track_Offset.FormatSpecifier = "F0"; + this.tb_Options_Track_Offset.Location = new System.Drawing.Point(569, 17); + this.tb_Options_Track_Offset.MaxValue = 30; + this.tb_Options_Track_Offset.MinValue = -30; + this.tb_Options_Track_Offset.Name = "tb_Options_Track_Offset"; + this.tb_Options_Track_Offset.Size = new System.Drawing.Size(43, 22); + this.tb_Options_Track_Offset.TabIndex = 57; + this.tb_Options_Track_Offset.Text = "0"; + this.tt_Options.SetToolTip(this.tb_Options_Track_Offset, "Allows you to set an offset in time when calculating aircraft position.\\n Use thi" + + "s to compensate delay in your rotator control."); + this.tb_Options_Track_Offset.Value = global::AirScout.Properties.Settings.Default.Track_Offset; + // + // int32TextBox2 + // + this.int32TextBox2.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::AirScout.Properties.Settings.Default, "Track_Update", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.int32TextBox2.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.int32TextBox2.FormatSpecifier = "F0"; + this.int32TextBox2.Location = new System.Drawing.Point(332, 17); + this.int32TextBox2.MaxValue = 10000; + this.int32TextBox2.MinValue = 100; + this.int32TextBox2.Name = "int32TextBox2"; + this.int32TextBox2.Size = new System.Drawing.Size(48, 22); + this.int32TextBox2.TabIndex = 1; + this.int32TextBox2.Text = "1000"; + this.tt_Options.SetToolTip(this.int32TextBox2, "Set the tracling update refresh rate.\\nBe sure that your rotator control and your" + + " rig can handle this rate."); + this.int32TextBox2.Value = global::AirScout.Properties.Settings.Default.Track_Update; + // + // cb_Options_Track_Activate + // + this.cb_Options_Track_Activate.Checked = global::AirScout.Properties.Settings.Default.Track_Activate; + this.cb_Options_Track_Activate.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "Track_Activate", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.cb_Options_Track_Activate.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cb_Options_Track_Activate.Location = new System.Drawing.Point(13, 15); + this.cb_Options_Track_Activate.Name = "cb_Options_Track_Activate"; + this.cb_Options_Track_Activate.Size = new System.Drawing.Size(129, 24); + this.cb_Options_Track_Activate.TabIndex = 0; + this.cb_Options_Track_Activate.Text = "Activate Tracking"; + this.tt_Options.SetToolTip(this.cb_Options_Track_Activate, "Click here to activate/deactivate tracking"); + this.cb_Options_Track_Activate.CheckedChanged += new System.EventHandler(this.cb_Options_Track_Activate_CheckedChanged); + // + // cb_Options_Watchlist_SyncWithKST + // + this.cb_Options_Watchlist_SyncWithKST.AutoSize = true; + this.cb_Options_Watchlist_SyncWithKST.CheckAlign = System.Drawing.ContentAlignment.MiddleRight; + this.cb_Options_Watchlist_SyncWithKST.Checked = global::AirScout.Properties.Settings.Default.Watchlist_SyncWithKST; + this.cb_Options_Watchlist_SyncWithKST.CheckState = System.Windows.Forms.CheckState.Checked; + this.cb_Options_Watchlist_SyncWithKST.DataBindings.Add(new System.Windows.Forms.Binding("Enabled", global::AirScout.Properties.Settings.Default, "Server_Activate", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.cb_Options_Watchlist_SyncWithKST.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "Watchlist_SyncWithKST", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.cb_Options_Watchlist_SyncWithKST.Enabled = global::AirScout.Properties.Settings.Default.Server_Activate; + this.cb_Options_Watchlist_SyncWithKST.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cb_Options_Watchlist_SyncWithKST.Location = new System.Drawing.Point(6, 47); + this.cb_Options_Watchlist_SyncWithKST.Name = "cb_Options_Watchlist_SyncWithKST"; + this.cb_Options_Watchlist_SyncWithKST.Size = new System.Drawing.Size(436, 17); + this.cb_Options_Watchlist_SyncWithKST.TabIndex = 6; + this.cb_Options_Watchlist_SyncWithKST.Text = "Keep in sync with KST user list (needs wtKST > V3.1 and network functions activat" + + "ed):"; + this.cb_Options_Watchlist_SyncWithKST.UseVisualStyleBackColor = true; + this.cb_Options_Watchlist_SyncWithKST.CheckedChanged += new System.EventHandler(this.cb_Options_Watchlist_SyncWithKST_CheckedChanged); + // + // tb_Options_Watchlist_MaxCount + // + this.tb_Options_Watchlist_MaxCount.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::AirScout.Properties.Settings.Default, "Watchlist_MaxCount", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.tb_Options_Watchlist_MaxCount.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tb_Options_Watchlist_MaxCount.FormatSpecifier = "F0"; + this.tb_Options_Watchlist_MaxCount.Location = new System.Drawing.Point(395, 20); + this.tb_Options_Watchlist_MaxCount.MaxValue = 1000; + this.tb_Options_Watchlist_MaxCount.MinValue = 1; + this.tb_Options_Watchlist_MaxCount.Name = "tb_Options_Watchlist_MaxCount"; + this.tb_Options_Watchlist_MaxCount.Size = new System.Drawing.Size(47, 22); + this.tb_Options_Watchlist_MaxCount.TabIndex = 5; + this.tb_Options_Watchlist_MaxCount.Text = "1000"; + this.tb_Options_Watchlist_MaxCount.Value = global::AirScout.Properties.Settings.Default.Watchlist_MaxCount; + // + // cb_Options_NewsFeed + // + this.cb_Options_NewsFeed.AutoSize = true; + this.cb_Options_NewsFeed.Checked = global::AirScout.Properties.Settings.Default.NewsFeed_Enabled; + this.cb_Options_NewsFeed.CheckState = System.Windows.Forms.CheckState.Checked; + this.cb_Options_NewsFeed.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "NewsFeed_Enabled", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.cb_Options_NewsFeed.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cb_Options_NewsFeed.Location = new System.Drawing.Point(6, 19); + this.cb_Options_NewsFeed.Name = "cb_Options_NewsFeed"; + this.cb_Options_NewsFeed.Size = new System.Drawing.Size(257, 17); + this.cb_Options_NewsFeed.TabIndex = 39; + this.cb_Options_NewsFeed.Text = "Notify me on news published by www.airscout.eu"; + this.cb_Options_NewsFeed.UseVisualStyleBackColor = true; + // // OptionsDlg // this.AcceptButton = this.btn_Options_OK; @@ -7473,7 +7532,6 @@ this.groupBox48.PerformLayout(); this.groupBox40.ResumeLayout(false); this.groupBox40.PerformLayout(); - ((System.ComponentModel.ISupportInitialize)(this.ud_Options_Planes_Position_DatabaseLifetime)).EndInit(); this.groupBox38.ResumeLayout(false); this.groupBox38.PerformLayout(); this.groupBox26.ResumeLayout(false); @@ -7505,12 +7563,10 @@ this.tab_Options_Map.ResumeLayout(false); this.groupBox22.ResumeLayout(false); this.groupBox22.PerformLayout(); - ((System.ComponentModel.ISupportInitialize)(this.ud_Options_Gauges_Width)).EndInit(); this.groupBox49.ResumeLayout(false); this.groupBox49.PerformLayout(); this.groupBox37.ResumeLayout(false); this.groupBox37.PerformLayout(); - ((System.ComponentModel.ISupportInitialize)(this.ud_Options_Charts_FontSize)).EndInit(); this.groupBox23.ResumeLayout(false); this.groupBox23.PerformLayout(); this.groupBox39.ResumeLayout(false); @@ -7527,8 +7583,6 @@ this.groupBox29.PerformLayout(); this.groupBox2.ResumeLayout(false); this.groupBox2.PerformLayout(); - ((System.ComponentModel.ISupportInitialize)(this.ud_Options_Map_Opacity)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.ud_Options_Map_Preloader_MaxZoom)).EndInit(); this.tab_Options_Stations.ResumeLayout(false); this.groupBox18.ResumeLayout(false); this.groupBox18.PerformLayout(); @@ -7540,7 +7594,6 @@ this.groupBox44.PerformLayout(); this.groupBox14.ResumeLayout(false); this.groupBox14.PerformLayout(); - ((System.ComponentModel.ISupportInitialize)(this.ud_Options_Locator_MaxLength)).EndInit(); this.groupBox16.ResumeLayout(false); this.groupBox5.ResumeLayout(false); this.groupBox5.PerformLayout(); @@ -7556,7 +7609,6 @@ this.groupBox27.PerformLayout(); this.gb_Options_Database_Settings.ResumeLayout(false); this.gb_Options_Database_Settings.PerformLayout(); - ((System.ComponentModel.ISupportInitialize)(this.ud_Options_Database_Update_Period)).EndInit(); this.gb_Options_Database_Info.ResumeLayout(false); this.gb_Options_Database_Info.PerformLayout(); this.tab_Options_ASTER3.ResumeLayout(false); @@ -7620,12 +7672,23 @@ this.groupBox17.ResumeLayout(false); this.groupBox17.PerformLayout(); this.tab_Options_Misc.ResumeLayout(false); + this.groupBox35.ResumeLayout(false); + this.groupBox35.PerformLayout(); ((System.ComponentModel.ISupportInitialize)(this.pictureBox4)).EndInit(); this.groupBox15.ResumeLayout(false); this.tab_Options_Info.ResumeLayout(false); this.tab_Options_Info.PerformLayout(); this.ss_Options.ResumeLayout(false); this.ss_Options.PerformLayout(); + this.groupBox36.ResumeLayout(false); + this.groupBox36.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.ud_Options_Database_Update_Period)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.ud_Options_Locator_MaxLength)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.ud_Options_Gauges_Width)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.ud_Options_Charts_FontSize)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.ud_Options_Map_Opacity)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.ud_Options_Map_Preloader_MaxZoom)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.ud_Options_Planes_Position_DatabaseLifetime)).EndInit(); this.ResumeLayout(false); this.PerformLayout(); @@ -8173,5 +8236,9 @@ private System.Windows.Forms.Label label74; private System.Windows.Forms.CheckBox cb_Options_InfoWin_AlwaysDetailed; private System.Windows.Forms.CheckBox cb_Options_Gauges_Show; + private System.Windows.Forms.GroupBox groupBox35; + private System.Windows.Forms.CheckBox cb_Options_NewsFeed; + private System.Windows.Forms.GroupBox groupBox36; + private System.Windows.Forms.CheckBox cb_Options_TracePositions; } } \ No newline at end of file diff --git a/AirScout/OptionsDlg.cs b/AirScout/OptionsDlg.cs index 379e892..dab45d6 100644 --- a/AirScout/OptionsDlg.cs +++ b/AirScout/OptionsDlg.cs @@ -2732,6 +2732,11 @@ namespace AirScout // get a list of supported rigs and add them to combo box List rigs = CATWorker.SupportedRigs(); cb_Options_CAT_Rig.Items.Clear(); + // add a [None] rig + SupportedRig none = new SupportedRig(); + none.Model = "[None]"; + none.Type = "[None]"; + cb_Options_CAT_Rig.Items.Add(none); foreach (SupportedRig rig in rigs) { cb_Options_CAT_Rig.Items.Add(rig); diff --git a/AirScout/OptionsDlg.resx b/AirScout/OptionsDlg.resx index 5e4ddfa..c38605c 100644 --- a/AirScout/OptionsDlg.resx +++ b/AirScout/OptionsDlg.resx @@ -238,15 +238,15 @@ xNtuqAliuQlg60EE2Lzsy4Ps4y+UBobZ5brY5TC7spHD7MpGDrMrGznMrmzkMLuykcPsykYOsysbOcyu bOQwu7KRw+zKRg6zKxs5zK5s5DC7spHD7MpGDrMrGznMrkwUwn8BkAmqaXV391cAAAAASUVORK5CYII= + + + Manages local obstructions near own location which are not covered by the choosen Digital Elevation Model, e.g. higher buildings or hill sites. +You can set a minimal possibile elevation for each single direction manually here. You can select different map provider from the list below. Please note that the selection of maps is taken from Great Maps regardless of their legal status. Some of them might be copyrighted or otherwise restricted in use. You were asked to agree with the terms of use first. Open Street Map is recommended as a default. - - - Manages local obstructions near own location which are not covered by the choosen Digital Elevation Model, e.g. higher buildings or hill sites. -You can set a minimal possibile elevation for each single direction manually here. Information from callsign database and other sources are used to prefill fields. You can overwrite and complete entries here. Your local database is updated. If you want to share the information with the AirScout community please use the "Send Update!" buttons. diff --git a/AirScout/Properties/AssemblyInfo.cs b/AirScout/Properties/AssemblyInfo.cs index 66cf7c2..f7661c7 100644 --- a/AirScout/Properties/AssemblyInfo.cs +++ b/AirScout/Properties/AssemblyInfo.cs @@ -10,7 +10,7 @@ using System.Runtime.InteropServices; [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("DL2ALF")] [assembly: AssemblyProduct("AirScout")] -[assembly: AssemblyCopyright("Copyright © 2013-2020")] +[assembly: AssemblyCopyright("Copyright © 2013-2022")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] @@ -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.4.1.0")] -[assembly: AssemblyFileVersion("1.4.1.0")] +[assembly: AssemblyVersion("1.4.2.0")] +[assembly: AssemblyFileVersion("1.4.2.0")] diff --git a/AirScout/Properties/Settings.Designer.cs b/AirScout/Properties/Settings.Designer.cs index c97af9b..d0b132c 100644 --- a/AirScout/Properties/Settings.Designer.cs +++ b/AirScout/Properties/Settings.Designer.cs @@ -2067,7 +2067,7 @@ Digital data base on the World Wide Web (URL: http://www.ngdc.noaa.gov/mgg/topo/ [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("10")] + [global::System.Configuration.DefaultSettingValueAttribute("30")] public int Planes_ExtendedPlausibilityCheck_MaxErrorDist { get { return ((int)(this["Planes_ExtendedPlausibilityCheck_MaxErrorDist"])); @@ -2815,5 +2815,53 @@ Digital data base on the World Wide Web (URL: http://www.ngdc.noaa.gov/mgg/topo/ this["Map_TrackingGaugesShow"] = value; } } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("True")] + public bool NewsFeed_Enabled { + get { + return ((bool)(this["NewsFeed_Enabled"])); + } + set { + this["NewsFeed_Enabled"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("UNDEFINED")] + public global::System.Data.SQLite.DATABASESTATUS RigDatabase_Status { + get { + return ((global::System.Data.SQLite.DATABASESTATUS)(this["RigDatabase_Status"])); + } + set { + this["RigDatabase_Status"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("False")] + public bool Planes_TracePositions { + get { + return ((bool)(this["Planes_TracePositions"])); + } + set { + this["Planes_TracePositions"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("PlanePositions")] + public string Planes_PositionsDirectory { + get { + return ((string)(this["Planes_PositionsDirectory"])); + } + set { + this["Planes_PositionsDirectory"] = value; + } + } } } diff --git a/AirScout/Properties/Settings.settings b/AirScout/Properties/Settings.settings index 121ddfb..946f2cb 100644 --- a/AirScout/Properties/Settings.settings +++ b/AirScout/Properties/Settings.settings @@ -545,7 +545,7 @@ MEaSUREs data and products are available at no charge from the LP DAAC.See https True - 10 + 30 False @@ -754,5 +754,17 @@ NASA/METI/AIST/Japan Spacesystems, and U.S./Japan ASTER Science Team (2019). AST True + + True + + + UNDEFINED + + + False + + + PlanePositions + \ No newline at end of file diff --git a/AirScout/VersionHistory.txt b/AirScout/VersionHistory.txt index 25aed4c..1eb6050 100644 --- a/AirScout/VersionHistory.txt +++ b/AirScout/VersionHistory.txt @@ -1,4 +1,22 @@ -2022-01-03: V1.4.1.0 +2023-xx-xx: V1.4.3.0 +==================== + + +2023-01-29: V1.4.2.0 +==================== + +- Bugfix: DXElevation was not calculated correctly when in track mode --> fixed (tnx OE5VRL) +- Bugfix: CAT option is not properly checked on program start --> fixed, furthermore CAT rig is set to [None] by default (tnx OE5VRL) +- Bugfix: Program settigs are now saved as JSON on Linux/Mono to avoid problems with load/save Windows-style settings +- Feature: new high precision tracking broadcast telegram is now sent simultaneous to legacy broadcast +- Bugfix: Split mode was not reset on program exit when in tracking mode --> fixed (tnx OE5VRL) +- Bugfix: dabatabase updates sometimes show errors and status LEDs were not displayed properly --> fixed +- Bugfix: Wrong calculation of Epsilon resulted in faulty display & tracking especially at small distances --> fixed (tnx OE5VRL) +- Bugfix: AirScout crashes when OmniRig CAT is activated and OmniRig instance disappears during AirScout run --> fixed +- Bugfix: Planes with numeric values reported as "not a number" for lat/lon/alt/speed/track were considered as good --> fixed +- Bugfix: Extended plane feed plausibility check gives a lot of errors on VRS Web Server feed --> fixed (tnx OV3T) + +2022-01-03: V1.4.1.0 ==================== - Bugfix: RIT on rig is reset when tracking started --> fixed diff --git a/AirScout/Webserver.cs b/AirScout/Webserver.cs index b808955..8399ebb 100644 --- a/AirScout/Webserver.cs +++ b/AirScout/Webserver.cs @@ -68,6 +68,7 @@ using OxyPlot.WindowsForms; using OxyPlot.Series; using OxyPlot.Axes; using System.Data.SQLite; +using MimeTypes; namespace AirScout { @@ -85,7 +86,15 @@ namespace AirScout // get temp directory from arguments if (e != null) { - tmpdir = (string)e.Argument; + tmpdir = ((WebserverStartArgs)e.Argument).TmpDirectory; + } + + + string webserverdir = Path.Combine(Application.StartupPath, "wwwroot"); + // get webserver directory from arguments + if (e != null) + { + webserverdir = ((WebserverStartArgs)e.Argument).WebserverDirectory; } Log.WriteMessage("started."); @@ -128,6 +137,7 @@ namespace AirScout WebServerDelivererArgs args = new WebServerDelivererArgs(); args.ID = id; args.TmpDirectory = tmpdir; + args.WebserverDirectory = webserverdir; args.Context = context; args.AllPlanes = allplanes; WebserverDeliver bw = new WebserverDeliver(); @@ -364,6 +374,13 @@ namespace AirScout json = JsonConvert.SerializeObject(Properties.Settings.Default, settings); return json; } + private string DeliverBands(string paramstr) + { + string json = ""; + string[] bands = Bands.GetStringValuesExceptNoneAndAll(); + json = JsonConvert.SerializeObject(bands); + return json; + } private string DeliverLocation(string paramstr) { @@ -806,47 +823,104 @@ namespace AirScout WebServerDelivererArgs args = (WebServerDelivererArgs)e.Argument; if (String.IsNullOrEmpty(Thread.CurrentThread.Name)) Thread.CurrentThread.Name = this.GetType().Name + "_" + args.ID; + + byte[] buffer = new byte[0]; + string mime = "text/html"; + HttpStatusCode status = HttpStatusCode.OK; + HttpListenerRequest request = args.Context.Request; + // Obtain a response object. HttpListenerResponse response = args.Context.Response; - // Construct a default response. - string responsestring = " Welcome to AirScout!"; - // check for content delivery request - if (request.RawUrl.ToLower() == "/planes.json") + + // get unescaped raw url from request + string rawurl = Uri.UnescapeDataString(request.RawUrl); + + // redirect parameterless calls to index.html + if (!rawurl.Contains("/") || (rawurl == "/")) { - responsestring = DeliverPlanes(args.TmpDirectory); + rawurl = "/index.html"; + } + + // try to create local file name + string filename = ""; + if (SupportFunctions.IsMono) + { + filename = rawurl.Substring(1); + } + else + { + filename = rawurl.Substring(1).Replace("/", "\\"); + } + + // cut parameters + if (filename.Contains("?")) + filename = filename.Substring(0, filename.IndexOf("?")); + + // try to find local file and deliver it + filename = Path.Combine(args.WebserverDirectory, filename); + if (File.Exists(filename)) + { + buffer = File.ReadAllBytes(filename); + mime = MimeTypeMap.GetMimeType(Path.GetExtension(filename)); + } + // check for content delivery request + else if (request.RawUrl.ToLower() == "/planes.json") + { + buffer = System.Text.Encoding.UTF8.GetBytes(DeliverPlanes(args.TmpDirectory)); + mime = "text/json"; } else if (request.RawUrl.ToLower().StartsWith("/version.json")) { - responsestring = DeliverVersion(request.RawUrl); + buffer = System.Text.Encoding.UTF8.GetBytes(DeliverVersion(request.RawUrl)); + mime = "text/json"; } else if (request.RawUrl.ToLower().StartsWith("/settings.json")) { - responsestring = DeliverSettings(request.RawUrl); + buffer = System.Text.Encoding.UTF8.GetBytes(DeliverSettings(request.RawUrl)); + mime = "text/json"; + } + else if (request.RawUrl.ToLower().StartsWith("/bands.json")) + { + buffer = System.Text.Encoding.UTF8.GetBytes(DeliverBands(request.RawUrl)); + mime = "text/json"; } else if (request.RawUrl.ToLower().StartsWith("/location.json")) { - responsestring = DeliverLocation(request.RawUrl); + buffer = System.Text.Encoding.UTF8.GetBytes(DeliverLocation(request.RawUrl)); + mime = "text/json"; } else if (request.RawUrl.ToLower().StartsWith("/qrv.json")) { - responsestring = DeliverQRV(request.RawUrl); + buffer = System.Text.Encoding.UTF8.GetBytes(DeliverQRV(request.RawUrl)); + mime = "text/json"; } else if (request.RawUrl.ToLower().StartsWith("/elevationpath.json")) { - responsestring = DeliverElevationPath(request.RawUrl); + buffer = System.Text.Encoding.UTF8.GetBytes(DeliverElevationPath(request.RawUrl)); + mime = "text/json"; } else if (request.RawUrl.ToLower().StartsWith("/propagationpath.json")) { - responsestring = DeliverPropagationPath(request.RawUrl); + buffer = System.Text.Encoding.UTF8.GetBytes(DeliverPropagationPath(request.RawUrl)); + mime = "text/json"; } else if (request.RawUrl.ToLower().StartsWith("/nearestplanes.json")) { - responsestring = DeliverNearestPlanes(request.RawUrl, args.AllPlanes); + buffer = System.Text.Encoding.UTF8.GetBytes(DeliverNearestPlanes(request.RawUrl, args.AllPlanes)); + mime = "text/json"; } - // copy bytes to buffer - byte[] buffer = System.Text.Encoding.UTF8.GetBytes(responsestring); + else + { + // mit Error 404 antworten + buffer = System.Text.Encoding.UTF8.GetBytes("Not found!"); + status = HttpStatusCode.NotFound; + } + // Get a response stream and write the response to it. + response.Headers.Add(HttpResponseHeader.CacheControl, "no-cache"); + response.ContentType = mime; + response.StatusCode = (int)status; response.ContentLength64 = buffer.Length; System.IO.Stream output = response.OutputStream; output.Write(buffer, 0, buffer.Length); @@ -860,6 +934,7 @@ namespace AirScout { public int ID; public string TmpDirectory = ""; + public string WebserverDirectory = ""; public HttpListenerContext Context; public List AllPlanes; } diff --git a/AirScout/WebserverStartArgs.cs b/AirScout/WebserverStartArgs.cs new file mode 100644 index 0000000..8c3473c --- /dev/null +++ b/AirScout/WebserverStartArgs.cs @@ -0,0 +1,13 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace AirScout +{ + public class WebserverStartArgs + { + public string TmpDirectory = ""; + public string WebserverDirectory = ""; + } +} diff --git a/AirScout/app.config b/AirScout/app.config index 2a79765..8e10bcb 100644 --- a/AirScout/app.config +++ b/AirScout/app.config @@ -544,7 +544,7 @@ MEaSUREs data and products are available at no charge from the LP DAAC.See https - 10 + 30 False @@ -753,6 +753,18 @@ NASA/METI/AIST/Japan Spacesystems, and U.S./Japan ASTER Science Team (2019). AST True + + True + + + UNDEFINED + + + False + + + PlanePositions + diff --git a/AirScout/packages.config b/AirScout/packages.config index e506f74..06189af 100644 --- a/AirScout/packages.config +++ b/AirScout/packages.config @@ -1,5 +1,6 @@  + diff --git a/AirScout/wwwroot/dashboard/assets/extra-libs/DataTables/DataTables-1.10.16/css/dataTables.bootstrap.css b/AirScout/wwwroot/dashboard/assets/extra-libs/DataTables/DataTables-1.10.16/css/dataTables.bootstrap.css new file mode 100644 index 0000000..6a9e753 --- /dev/null +++ b/AirScout/wwwroot/dashboard/assets/extra-libs/DataTables/DataTables-1.10.16/css/dataTables.bootstrap.css @@ -0,0 +1,187 @@ +table.dataTable { + clear: both; + margin-top: 6px !important; + margin-bottom: 6px !important; + max-width: none !important; + border-collapse: separate !important; +} +table.dataTable td, +table.dataTable th { + -webkit-box-sizing: content-box; + box-sizing: content-box; +} +table.dataTable td.dataTables_empty, +table.dataTable th.dataTables_empty { + text-align: center; +} +table.dataTable.nowrap th, +table.dataTable.nowrap td { + white-space: nowrap; +} + +div.dataTables_wrapper div.dataTables_length label { + font-weight: normal; + text-align: left; + white-space: nowrap; +} +div.dataTables_wrapper div.dataTables_length select { + width: 75px; + display: inline-block; +} +div.dataTables_wrapper div.dataTables_filter { + text-align: right; +} +div.dataTables_wrapper div.dataTables_filter label { + font-weight: normal; + white-space: nowrap; + text-align: left; +} +div.dataTables_wrapper div.dataTables_filter input { + margin-left: 0.5em; + display: inline-block; + width: auto; +} +div.dataTables_wrapper div.dataTables_info { + padding-top: 8px; + white-space: nowrap; +} +div.dataTables_wrapper div.dataTables_paginate { + margin: 0; + white-space: nowrap; + text-align: right; +} +div.dataTables_wrapper div.dataTables_paginate ul.pagination { + margin: 2px 0; + white-space: nowrap; +} +div.dataTables_wrapper div.dataTables_processing { + position: absolute; + top: 50%; + left: 50%; + width: 200px; + margin-left: -100px; + margin-top: -26px; + text-align: center; + padding: 1em 0; +} + +table.dataTable thead > tr > th.sorting_asc, table.dataTable thead > tr > th.sorting_desc, table.dataTable thead > tr > th.sorting, +table.dataTable thead > tr > td.sorting_asc, +table.dataTable thead > tr > td.sorting_desc, +table.dataTable thead > tr > td.sorting { + padding-right: 30px; +} +table.dataTable thead > tr > th:active, +table.dataTable thead > tr > td:active { + outline: none; +} +table.dataTable thead .sorting, +table.dataTable thead .sorting_asc, +table.dataTable thead .sorting_desc, +table.dataTable thead .sorting_asc_disabled, +table.dataTable thead .sorting_desc_disabled { + cursor: pointer; + position: relative; +} +table.dataTable thead .sorting:after, +table.dataTable thead .sorting_asc:after, +table.dataTable thead .sorting_desc:after, +table.dataTable thead .sorting_asc_disabled:after, +table.dataTable thead .sorting_desc_disabled:after { + position: absolute; + bottom: 8px; + right: 8px; + display: block; + font-family: 'Glyphicons Halflings'; + opacity: 0.5; +} +table.dataTable thead .sorting:after { + opacity: 0.2; + content: "\e150"; + /* sort */ +} +table.dataTable thead .sorting_asc:after { + content: "\e155"; + /* sort-by-attributes */ +} +table.dataTable thead .sorting_desc:after { + content: "\e156"; + /* sort-by-attributes-alt */ +} +table.dataTable thead .sorting_asc_disabled:after, +table.dataTable thead .sorting_desc_disabled:after { + color: #eee; +} + +div.dataTables_scrollHead table.dataTable { + margin-bottom: 0 !important; +} + +div.dataTables_scrollBody > table { + border-top: none; + margin-top: 0 !important; + margin-bottom: 0 !important; +} +div.dataTables_scrollBody > table > thead .sorting:after, +div.dataTables_scrollBody > table > thead .sorting_asc:after, +div.dataTables_scrollBody > table > thead .sorting_desc:after { + display: none; +} +div.dataTables_scrollBody > table > tbody > tr:first-child > th, +div.dataTables_scrollBody > table > tbody > tr:first-child > td { + border-top: none; +} + +div.dataTables_scrollFoot > .dataTables_scrollFootInner { + box-sizing: content-box; +} +div.dataTables_scrollFoot > .dataTables_scrollFootInner > table { + margin-top: 0 !important; + border-top: none; +} + +@media screen and (max-width: 767px) { + div.dataTables_wrapper div.dataTables_length, + div.dataTables_wrapper div.dataTables_filter, + div.dataTables_wrapper div.dataTables_info, + div.dataTables_wrapper div.dataTables_paginate { + text-align: center; + } +} +table.dataTable.table-condensed > thead > tr > th { + padding-right: 20px; +} +table.dataTable.table-condensed .sorting:after, +table.dataTable.table-condensed .sorting_asc:after, +table.dataTable.table-condensed .sorting_desc:after { + top: 6px; + right: 6px; +} + +table.table-bordered.dataTable th, +table.table-bordered.dataTable td { + border-left-width: 0; +} +table.table-bordered.dataTable th:last-child, table.table-bordered.dataTable th:last-child, +table.table-bordered.dataTable td:last-child, +table.table-bordered.dataTable td:last-child { + border-right-width: 0; +} +table.table-bordered.dataTable tbody th, +table.table-bordered.dataTable tbody td { + border-bottom-width: 0; +} + +div.dataTables_scrollHead table.table-bordered { + border-bottom-width: 0; +} + +div.table-responsive > div.dataTables_wrapper > div.row { + margin: 0; +} +div.table-responsive > div.dataTables_wrapper > div.row > div[class^="col-"]:first-child { + padding-left: 0; +} +div.table-responsive > div.dataTables_wrapper > div.row > div[class^="col-"]:last-child { + padding-right: 0; +} diff --git a/AirScout/wwwroot/dashboard/assets/extra-libs/DataTables/DataTables-1.10.16/css/dataTables.bootstrap.min.css b/AirScout/wwwroot/dashboard/assets/extra-libs/DataTables/DataTables-1.10.16/css/dataTables.bootstrap.min.css new file mode 100644 index 0000000..af6ecfe --- /dev/null +++ b/AirScout/wwwroot/dashboard/assets/extra-libs/DataTables/DataTables-1.10.16/css/dataTables.bootstrap.min.css @@ -0,0 +1 @@ +table.dataTable{clear:both;margin-top:6px !important;margin-bottom:6px !important;max-width:none !important;border-collapse:separate !important}table.dataTable td,table.dataTable th{-webkit-box-sizing:content-box;box-sizing:content-box}table.dataTable td.dataTables_empty,table.dataTable th.dataTables_empty{text-align:center}table.dataTable.nowrap th,table.dataTable.nowrap td{white-space:nowrap}div.dataTables_wrapper div.dataTables_length label{font-weight:normal;text-align:left;white-space:nowrap}div.dataTables_wrapper div.dataTables_length select{width:75px;display:inline-block}div.dataTables_wrapper div.dataTables_filter{text-align:right}div.dataTables_wrapper div.dataTables_filter label{font-weight:normal;white-space:nowrap;text-align:left}div.dataTables_wrapper div.dataTables_filter input{margin-left:0.5em;display:inline-block;width:auto}div.dataTables_wrapper div.dataTables_info{padding-top:8px;white-space:nowrap}div.dataTables_wrapper div.dataTables_paginate{margin:0;white-space:nowrap;text-align:right}div.dataTables_wrapper div.dataTables_paginate ul.pagination{margin:2px 0;white-space:nowrap}div.dataTables_wrapper div.dataTables_processing{position:absolute;top:50%;left:50%;width:200px;margin-left:-100px;margin-top:-26px;text-align:center;padding:1em 0}table.dataTable thead>tr>th.sorting_asc,table.dataTable thead>tr>th.sorting_desc,table.dataTable thead>tr>th.sorting,table.dataTable thead>tr>td.sorting_asc,table.dataTable thead>tr>td.sorting_desc,table.dataTable thead>tr>td.sorting{padding-right:30px}table.dataTable thead>tr>th:active,table.dataTable thead>tr>td:active{outline:none}table.dataTable thead .sorting,table.dataTable thead .sorting_asc,table.dataTable thead .sorting_desc,table.dataTable thead .sorting_asc_disabled,table.dataTable thead .sorting_desc_disabled{cursor:pointer;position:relative}table.dataTable thead .sorting:after,table.dataTable thead .sorting_asc:after,table.dataTable thead .sorting_desc:after,table.dataTable thead .sorting_asc_disabled:after,table.dataTable thead .sorting_desc_disabled:after{position:absolute;bottom:8px;right:8px;display:block;font-family:'Glyphicons Halflings';opacity:0.5}table.dataTable thead .sorting:after{opacity:0.2;content:"\e150"}table.dataTable thead .sorting_asc:after{content:"\e155"}table.dataTable thead .sorting_desc:after{content:"\e156"}table.dataTable thead .sorting_asc_disabled:after,table.dataTable thead .sorting_desc_disabled:after{color:#eee}div.dataTables_scrollHead table.dataTable{margin-bottom:0 !important}div.dataTables_scrollBody>table{border-top:none;margin-top:0 !important;margin-bottom:0 !important}div.dataTables_scrollBody>table>thead .sorting:after,div.dataTables_scrollBody>table>thead .sorting_asc:after,div.dataTables_scrollBody>table>thead .sorting_desc:after{display:none}div.dataTables_scrollBody>table>tbody>tr:first-child>th,div.dataTables_scrollBody>table>tbody>tr:first-child>td{border-top:none}div.dataTables_scrollFoot>.dataTables_scrollFootInner{box-sizing:content-box}div.dataTables_scrollFoot>.dataTables_scrollFootInner>table{margin-top:0 !important;border-top:none}@media screen and (max-width: 767px){div.dataTables_wrapper div.dataTables_length,div.dataTables_wrapper div.dataTables_filter,div.dataTables_wrapper div.dataTables_info,div.dataTables_wrapper div.dataTables_paginate{text-align:center}}table.dataTable.table-condensed>thead>tr>th{padding-right:20px}table.dataTable.table-condensed .sorting:after,table.dataTable.table-condensed .sorting_asc:after,table.dataTable.table-condensed .sorting_desc:after{top:6px;right:6px}table.table-bordered.dataTable th,table.table-bordered.dataTable td{border-left-width:0}table.table-bordered.dataTable th:last-child,table.table-bordered.dataTable th:last-child,table.table-bordered.dataTable td:last-child,table.table-bordered.dataTable td:last-child{border-right-width:0}table.table-bordered.dataTable tbody th,table.table-bordered.dataTable tbody td{border-bottom-width:0}div.dataTables_scrollHead table.table-bordered{border-bottom-width:0}div.table-responsive>div.dataTables_wrapper>div.row{margin:0}div.table-responsive>div.dataTables_wrapper>div.row>div[class^="col-"]:first-child{padding-left:0}div.table-responsive>div.dataTables_wrapper>div.row>div[class^="col-"]:last-child{padding-right:0} diff --git a/AirScout/wwwroot/dashboard/assets/extra-libs/DataTables/DataTables-1.10.16/css/dataTables.bootstrap4.css b/AirScout/wwwroot/dashboard/assets/extra-libs/DataTables/DataTables-1.10.16/css/dataTables.bootstrap4.css new file mode 100644 index 0000000..56ea4f4 --- /dev/null +++ b/AirScout/wwwroot/dashboard/assets/extra-libs/DataTables/DataTables-1.10.16/css/dataTables.bootstrap4.css @@ -0,0 +1,202 @@ +table.dataTable { + clear: both; + margin-top: 6px !important; + margin-bottom: 6px !important; + max-width: none !important; + border-collapse: separate !important; +} +table.dataTable td, +table.dataTable th { + -webkit-box-sizing: content-box; + box-sizing: content-box; +} +table.dataTable td.dataTables_empty, +table.dataTable th.dataTables_empty { + text-align: center; +} +table.dataTable.nowrap th, +table.dataTable.nowrap td { + white-space: nowrap; +} + +div.dataTables_wrapper div.dataTables_length label { + font-weight: normal; + text-align: left; + white-space: nowrap; +} +div.dataTables_wrapper div.dataTables_length select { + width: 75px; + display: inline-block; +} +div.dataTables_wrapper div.dataTables_filter { + text-align: right; +} +div.dataTables_wrapper div.dataTables_filter label { + font-weight: normal; + white-space: nowrap; + text-align: left; +} +div.dataTables_wrapper div.dataTables_filter input { + margin-left: 0.5em; + display: inline-block; + width: auto; +} +div.dataTables_wrapper div.dataTables_info { + padding-top: 0.85em; + white-space: nowrap; +} +div.dataTables_wrapper div.dataTables_paginate { + margin: 0; + white-space: nowrap; + text-align: right; +} +div.dataTables_wrapper div.dataTables_paginate ul.pagination { + margin: 2px 0; + white-space: nowrap; + justify-content: flex-end; +} +div.dataTables_wrapper div.dataTables_processing { + position: absolute; + top: 50%; + left: 50%; + width: 200px; + margin-left: -100px; + margin-top: -26px; + text-align: center; + padding: 1em 0; +} + +table.dataTable thead > tr > th.sorting_asc, table.dataTable thead > tr > th.sorting_desc, table.dataTable thead > tr > th.sorting, +table.dataTable thead > tr > td.sorting_asc, +table.dataTable thead > tr > td.sorting_desc, +table.dataTable thead > tr > td.sorting { + padding-right: 30px; +} +table.dataTable thead > tr > th:active, +table.dataTable thead > tr > td:active { + outline: none; +} +table.dataTable thead .sorting, +table.dataTable thead .sorting_asc, +table.dataTable thead .sorting_desc, +table.dataTable thead .sorting_asc_disabled, +table.dataTable thead .sorting_desc_disabled { + cursor: pointer; + position: relative; +} +table.dataTable thead .sorting:before, table.dataTable thead .sorting:after, +table.dataTable thead .sorting_asc:before, +table.dataTable thead .sorting_asc:after, +table.dataTable thead .sorting_desc:before, +table.dataTable thead .sorting_desc:after, +table.dataTable thead .sorting_asc_disabled:before, +table.dataTable thead .sorting_asc_disabled:after, +table.dataTable thead .sorting_desc_disabled:before, +table.dataTable thead .sorting_desc_disabled:after { + position: absolute; + bottom: 0.9em; + display: block; + opacity: 0.3; +} +table.dataTable thead .sorting:before, +table.dataTable thead .sorting_asc:before, +table.dataTable thead .sorting_desc:before, +table.dataTable thead .sorting_asc_disabled:before, +table.dataTable thead .sorting_desc_disabled:before { + right: 1em; + content: "\2191"; +} +table.dataTable thead .sorting:after, +table.dataTable thead .sorting_asc:after, +table.dataTable thead .sorting_desc:after, +table.dataTable thead .sorting_asc_disabled:after, +table.dataTable thead .sorting_desc_disabled:after { + right: 0.5em; + content: "\2193"; +} +table.dataTable thead .sorting_asc:before, +table.dataTable thead .sorting_desc:after { + opacity: 1; +} +table.dataTable thead .sorting_asc_disabled:before, +table.dataTable thead .sorting_desc_disabled:after { + opacity: 0; +} + +div.dataTables_scrollHead table.dataTable { + margin-bottom: 0 !important; +} + +div.dataTables_scrollBody table { + border-top: none; + margin-top: 0 !important; + margin-bottom: 0 !important; +} +div.dataTables_scrollBody table thead .sorting:after, +div.dataTables_scrollBody table thead .sorting_asc:after, +div.dataTables_scrollBody table thead .sorting_desc:after { + display: none; +} +div.dataTables_scrollBody table tbody tr:first-child th, +div.dataTables_scrollBody table tbody tr:first-child td { + border-top: none; +} + +div.dataTables_scrollFoot > .dataTables_scrollFootInner { + box-sizing: content-box; +} +div.dataTables_scrollFoot > .dataTables_scrollFootInner > table { + margin-top: 0 !important; + border-top: none; +} + +@media screen and (max-width: 767px) { + div.dataTables_wrapper div.dataTables_length, + div.dataTables_wrapper div.dataTables_filter, + div.dataTables_wrapper div.dataTables_info, + div.dataTables_wrapper div.dataTables_paginate { + text-align: center; + } +} +table.dataTable.table-sm > thead > tr > th { + padding-right: 20px; +} +table.dataTable.table-sm .sorting:before, +table.dataTable.table-sm .sorting_asc:before, +table.dataTable.table-sm .sorting_desc:before { + top: 5px; + right: 0.85em; +} +table.dataTable.table-sm .sorting:after, +table.dataTable.table-sm .sorting_asc:after, +table.dataTable.table-sm .sorting_desc:after { + top: 5px; +} + +table.table-bordered.dataTable th, +table.table-bordered.dataTable td { + border-left-width: 0; +} +table.table-bordered.dataTable th:last-child, table.table-bordered.dataTable th:last-child, +table.table-bordered.dataTable td:last-child, +table.table-bordered.dataTable td:last-child { + border-right-width: 0; +} +table.table-bordered.dataTable tbody th, +table.table-bordered.dataTable tbody td { + border-bottom-width: 0; +} + +div.dataTables_scrollHead table.table-bordered { + border-bottom-width: 0; +} + +div.table-responsive > div.dataTables_wrapper > div.row { + margin: 0; +} +div.table-responsive > div.dataTables_wrapper > div.row > div[class^="col-"]:first-child { + padding-left: 0; +} +div.table-responsive > div.dataTables_wrapper > div.row > div[class^="col-"]:last-child { + padding-right: 0; +} diff --git a/AirScout/wwwroot/dashboard/assets/extra-libs/DataTables/DataTables-1.10.16/css/dataTables.bootstrap4.min.css b/AirScout/wwwroot/dashboard/assets/extra-libs/DataTables/DataTables-1.10.16/css/dataTables.bootstrap4.min.css new file mode 100644 index 0000000..48b76ed --- /dev/null +++ b/AirScout/wwwroot/dashboard/assets/extra-libs/DataTables/DataTables-1.10.16/css/dataTables.bootstrap4.min.css @@ -0,0 +1 @@ +table.dataTable{clear:both;margin-top:6px !important;margin-bottom:6px !important;max-width:none !important;border-collapse:separate !important}table.dataTable td,table.dataTable th{-webkit-box-sizing:content-box;box-sizing:content-box}table.dataTable td.dataTables_empty,table.dataTable th.dataTables_empty{text-align:center}table.dataTable.nowrap th,table.dataTable.nowrap td{white-space:nowrap}div.dataTables_wrapper div.dataTables_length label{font-weight:normal;text-align:left;white-space:nowrap}div.dataTables_wrapper div.dataTables_length select{width:75px;display:inline-block}div.dataTables_wrapper div.dataTables_filter{text-align:right}div.dataTables_wrapper div.dataTables_filter label{font-weight:normal;white-space:nowrap;text-align:left}div.dataTables_wrapper div.dataTables_filter input{margin-left:0.5em;display:inline-block;width:auto}div.dataTables_wrapper div.dataTables_info{padding-top:0.85em;white-space:nowrap}div.dataTables_wrapper div.dataTables_paginate{margin:0;white-space:nowrap;text-align:right}div.dataTables_wrapper div.dataTables_paginate ul.pagination{margin:2px 0;white-space:nowrap;justify-content:flex-end}div.dataTables_wrapper div.dataTables_processing{position:absolute;top:50%;left:50%;width:200px;margin-left:-100px;margin-top:-26px;text-align:center;padding:1em 0}table.dataTable thead>tr>th.sorting_asc,table.dataTable thead>tr>th.sorting_desc,table.dataTable thead>tr>th.sorting,table.dataTable thead>tr>td.sorting_asc,table.dataTable thead>tr>td.sorting_desc,table.dataTable thead>tr>td.sorting{padding-right:30px}table.dataTable thead>tr>th:active,table.dataTable thead>tr>td:active{outline:none}table.dataTable thead .sorting,table.dataTable thead .sorting_asc,table.dataTable thead .sorting_desc,table.dataTable thead .sorting_asc_disabled,table.dataTable thead .sorting_desc_disabled{cursor:pointer;position:relative}table.dataTable thead .sorting:before,table.dataTable thead .sorting:after,table.dataTable thead .sorting_asc:before,table.dataTable thead .sorting_asc:after,table.dataTable thead .sorting_desc:before,table.dataTable thead .sorting_desc:after,table.dataTable thead .sorting_asc_disabled:before,table.dataTable thead .sorting_asc_disabled:after,table.dataTable thead .sorting_desc_disabled:before,table.dataTable thead .sorting_desc_disabled:after{position:absolute;bottom:0.9em;display:block;opacity:0.3}table.dataTable thead .sorting:before,table.dataTable thead .sorting_asc:before,table.dataTable thead .sorting_desc:before,table.dataTable thead .sorting_asc_disabled:before,table.dataTable thead .sorting_desc_disabled:before{right:1em;content:"\2191"}table.dataTable thead .sorting:after,table.dataTable thead .sorting_asc:after,table.dataTable thead .sorting_desc:after,table.dataTable thead .sorting_asc_disabled:after,table.dataTable thead .sorting_desc_disabled:after{right:0.5em;content:"\2193"}table.dataTable thead .sorting_asc:before,table.dataTable thead .sorting_desc:after{opacity:1}table.dataTable thead .sorting_asc_disabled:before,table.dataTable thead .sorting_desc_disabled:after{opacity:0}div.dataTables_scrollHead table.dataTable{margin-bottom:0 !important}div.dataTables_scrollBody table{border-top:none;margin-top:0 !important;margin-bottom:0 !important}div.dataTables_scrollBody table thead .sorting:after,div.dataTables_scrollBody table thead .sorting_asc:after,div.dataTables_scrollBody table thead .sorting_desc:after{display:none}div.dataTables_scrollBody table tbody tr:first-child th,div.dataTables_scrollBody table tbody tr:first-child td{border-top:none}div.dataTables_scrollFoot>.dataTables_scrollFootInner{box-sizing:content-box}div.dataTables_scrollFoot>.dataTables_scrollFootInner>table{margin-top:0 !important;border-top:none}@media screen and (max-width: 767px){div.dataTables_wrapper div.dataTables_length,div.dataTables_wrapper div.dataTables_filter,div.dataTables_wrapper div.dataTables_info,div.dataTables_wrapper div.dataTables_paginate{text-align:center}}table.dataTable.table-sm>thead>tr>th{padding-right:20px}table.dataTable.table-sm .sorting:before,table.dataTable.table-sm .sorting_asc:before,table.dataTable.table-sm .sorting_desc:before{top:5px;right:0.85em}table.dataTable.table-sm .sorting:after,table.dataTable.table-sm .sorting_asc:after,table.dataTable.table-sm .sorting_desc:after{top:5px}table.table-bordered.dataTable th,table.table-bordered.dataTable td{border-left-width:0}table.table-bordered.dataTable th:last-child,table.table-bordered.dataTable th:last-child,table.table-bordered.dataTable td:last-child,table.table-bordered.dataTable td:last-child{border-right-width:0}table.table-bordered.dataTable tbody th,table.table-bordered.dataTable tbody td{border-bottom-width:0}div.dataTables_scrollHead table.table-bordered{border-bottom-width:0}div.table-responsive>div.dataTables_wrapper>div.row{margin:0}div.table-responsive>div.dataTables_wrapper>div.row>div[class^="col-"]:first-child{padding-left:0}div.table-responsive>div.dataTables_wrapper>div.row>div[class^="col-"]:last-child{padding-right:0} diff --git a/AirScout/wwwroot/dashboard/assets/extra-libs/DataTables/DataTables-1.10.16/css/dataTables.foundation.css b/AirScout/wwwroot/dashboard/assets/extra-libs/DataTables/DataTables-1.10.16/css/dataTables.foundation.css new file mode 100644 index 0000000..79848c9 --- /dev/null +++ b/AirScout/wwwroot/dashboard/assets/extra-libs/DataTables/DataTables-1.10.16/css/dataTables.foundation.css @@ -0,0 +1,118 @@ +table.dataTable { + clear: both; + margin: 0.5em 0 !important; + max-width: none !important; + width: 100%; +} +table.dataTable td, +table.dataTable th { + -webkit-box-sizing: content-box; + box-sizing: content-box; +} +table.dataTable td.dataTables_empty, +table.dataTable th.dataTables_empty { + text-align: center; +} +table.dataTable.nowrap th, table.dataTable.nowrap td { + white-space: nowrap; +} + +div.dataTables_wrapper { + position: relative; +} +div.dataTables_wrapper div.dataTables_length label { + float: left; + text-align: left; + margin-bottom: 0; +} +div.dataTables_wrapper div.dataTables_length select { + width: 75px; + margin-bottom: 0; +} +div.dataTables_wrapper div.dataTables_filter label { + float: right; + margin-bottom: 0; +} +div.dataTables_wrapper div.dataTables_filter input { + display: inline-block !important; + width: auto !important; + margin-bottom: 0; + margin-left: 0.5em; +} +div.dataTables_wrapper div.dataTables_info { + padding-top: 2px; +} +div.dataTables_wrapper div.dataTables_paginate { + float: right; + margin: 0; +} +div.dataTables_wrapper div.dataTables_processing { + position: absolute; + top: 50%; + left: 50%; + width: 200px; + margin-left: -100px; + margin-top: -26px; + text-align: center; + padding: 1rem 0; +} + +table.dataTable thead > tr > th.sorting_asc, table.dataTable thead > tr > th.sorting_desc, table.dataTable thead > tr > th.sorting, +table.dataTable thead > tr > td.sorting_asc, +table.dataTable thead > tr > td.sorting_desc, +table.dataTable thead > tr > td.sorting { + padding-right: 1.5rem; +} +table.dataTable thead > tr > th:active, +table.dataTable thead > tr > td:active { + outline: none; +} +table.dataTable thead .sorting, +table.dataTable thead .sorting_asc, +table.dataTable thead .sorting_desc, +table.dataTable thead .sorting_asc_disabled, +table.dataTable thead .sorting_desc_disabled { + cursor: pointer; +} +table.dataTable thead .sorting, +table.dataTable thead .sorting_asc, +table.dataTable thead .sorting_desc, +table.dataTable thead .sorting_asc_disabled, +table.dataTable thead .sorting_desc_disabled { + background-repeat: no-repeat; + background-position: center right; +} +table.dataTable thead .sorting { + background-image: url("../images/sort_both.png"); +} +table.dataTable thead .sorting_asc { + background-image: url("../images/sort_asc.png"); +} +table.dataTable thead .sorting_desc { + background-image: url("../images/sort_desc.png"); +} +table.dataTable thead .sorting_asc_disabled { + background-image: url("../images/sort_asc_disabled.png"); +} +table.dataTable thead .sorting_desc_disabled { + background-image: url("../images/sort_desc_disabled.png"); +} + +div.dataTables_scrollHead table { + margin-bottom: 0 !important; +} + +div.dataTables_scrollBody table { + border-top: none; + margin-top: 0 !important; + margin-bottom: 0 !important; +} +div.dataTables_scrollBody table tbody tr:first-child th, +div.dataTables_scrollBody table tbody tr:first-child td { + border-top: none; +} + +div.dataTables_scrollFoot table { + margin-top: 0 !important; + border-top: none; +} diff --git a/AirScout/wwwroot/dashboard/assets/extra-libs/DataTables/DataTables-1.10.16/css/dataTables.foundation.min.css b/AirScout/wwwroot/dashboard/assets/extra-libs/DataTables/DataTables-1.10.16/css/dataTables.foundation.min.css new file mode 100644 index 0000000..73af41e --- /dev/null +++ b/AirScout/wwwroot/dashboard/assets/extra-libs/DataTables/DataTables-1.10.16/css/dataTables.foundation.min.css @@ -0,0 +1 @@ +table.dataTable{clear:both;margin:0.5em 0 !important;max-width:none !important;width:100%}table.dataTable td,table.dataTable th{-webkit-box-sizing:content-box;box-sizing:content-box}table.dataTable td.dataTables_empty,table.dataTable th.dataTables_empty{text-align:center}table.dataTable.nowrap th,table.dataTable.nowrap td{white-space:nowrap}div.dataTables_wrapper{position:relative}div.dataTables_wrapper div.dataTables_length label{float:left;text-align:left;margin-bottom:0}div.dataTables_wrapper div.dataTables_length select{width:75px;margin-bottom:0}div.dataTables_wrapper div.dataTables_filter label{float:right;margin-bottom:0}div.dataTables_wrapper div.dataTables_filter input{display:inline-block !important;width:auto !important;margin-bottom:0;margin-left:0.5em}div.dataTables_wrapper div.dataTables_info{padding-top:2px}div.dataTables_wrapper div.dataTables_paginate{float:right;margin:0}div.dataTables_wrapper div.dataTables_processing{position:absolute;top:50%;left:50%;width:200px;margin-left:-100px;margin-top:-26px;text-align:center;padding:1rem 0}table.dataTable thead>tr>th.sorting_asc,table.dataTable thead>tr>th.sorting_desc,table.dataTable thead>tr>th.sorting,table.dataTable thead>tr>td.sorting_asc,table.dataTable thead>tr>td.sorting_desc,table.dataTable thead>tr>td.sorting{padding-right:1.5rem}table.dataTable thead>tr>th:active,table.dataTable thead>tr>td:active{outline:none}table.dataTable thead .sorting,table.dataTable thead .sorting_asc,table.dataTable thead .sorting_desc,table.dataTable thead .sorting_asc_disabled,table.dataTable thead .sorting_desc_disabled{cursor:pointer}table.dataTable thead .sorting,table.dataTable thead .sorting_asc,table.dataTable thead .sorting_desc,table.dataTable thead .sorting_asc_disabled,table.dataTable thead .sorting_desc_disabled{background-repeat:no-repeat;background-position:center right}table.dataTable thead .sorting{background-image:url("../images/sort_both.png")}table.dataTable thead .sorting_asc{background-image:url("../images/sort_asc.png")}table.dataTable thead .sorting_desc{background-image:url("../images/sort_desc.png")}table.dataTable thead .sorting_asc_disabled{background-image:url("../images/sort_asc_disabled.png")}table.dataTable thead .sorting_desc_disabled{background-image:url("../images/sort_desc_disabled.png")}div.dataTables_scrollHead table{margin-bottom:0 !important}div.dataTables_scrollBody table{border-top:none;margin-top:0 !important;margin-bottom:0 !important}div.dataTables_scrollBody table tbody tr:first-child th,div.dataTables_scrollBody table tbody tr:first-child td{border-top:none}div.dataTables_scrollFoot table{margin-top:0 !important;border-top:none} diff --git a/AirScout/wwwroot/dashboard/assets/extra-libs/DataTables/DataTables-1.10.16/css/dataTables.jqueryui.css b/AirScout/wwwroot/dashboard/assets/extra-libs/DataTables/DataTables-1.10.16/css/dataTables.jqueryui.css new file mode 100644 index 0000000..5070b04 --- /dev/null +++ b/AirScout/wwwroot/dashboard/assets/extra-libs/DataTables/DataTables-1.10.16/css/dataTables.jqueryui.css @@ -0,0 +1,481 @@ +/* + * Table styles + */ +table.dataTable { + width: 100%; + margin: 0 auto; + clear: both; + border-collapse: separate; + border-spacing: 0; + /* + * Header and footer styles + */ + /* + * Body styles + */ +} +table.dataTable thead th, +table.dataTable tfoot th { + font-weight: bold; +} +table.dataTable thead th, +table.dataTable thead td { + padding: 10px 18px; +} +table.dataTable thead th:active, +table.dataTable thead td:active { + outline: none; +} +table.dataTable tfoot th, +table.dataTable tfoot td { + padding: 10px 18px 6px 18px; +} +table.dataTable tbody tr { + background-color: #ffffff; +} +table.dataTable tbody tr.selected { + background-color: #B0BED9; +} +table.dataTable tbody th, +table.dataTable tbody td { + padding: 8px 10px; +} +table.dataTable.row-border tbody th, table.dataTable.row-border tbody td, table.dataTable.display tbody th, table.dataTable.display tbody td { + border-top: 1px solid #ddd; +} +table.dataTable.row-border tbody tr:first-child th, +table.dataTable.row-border tbody tr:first-child td, table.dataTable.display tbody tr:first-child th, +table.dataTable.display tbody tr:first-child td { + border-top: none; +} +table.dataTable.cell-border tbody th, table.dataTable.cell-border tbody td { + border-top: 1px solid #ddd; + border-right: 1px solid #ddd; +} +table.dataTable.cell-border tbody tr th:first-child, +table.dataTable.cell-border tbody tr td:first-child { + border-left: 1px solid #ddd; +} +table.dataTable.cell-border tbody tr:first-child th, +table.dataTable.cell-border tbody tr:first-child td { + border-top: none; +} +table.dataTable.stripe tbody tr.odd, table.dataTable.display tbody tr.odd { + background-color: #f9f9f9; +} +table.dataTable.stripe tbody tr.odd.selected, table.dataTable.display tbody tr.odd.selected { + background-color: #acbad4; +} +table.dataTable.hover tbody tr:hover, table.dataTable.display tbody tr:hover { + background-color: #f6f6f6; +} +table.dataTable.hover tbody tr:hover.selected, table.dataTable.display tbody tr:hover.selected { + background-color: #aab7d1; +} +table.dataTable.order-column tbody tr > .sorting_1, +table.dataTable.order-column tbody tr > .sorting_2, +table.dataTable.order-column tbody tr > .sorting_3, table.dataTable.display tbody tr > .sorting_1, +table.dataTable.display tbody tr > .sorting_2, +table.dataTable.display tbody tr > .sorting_3 { + background-color: #fafafa; +} +table.dataTable.order-column tbody tr.selected > .sorting_1, +table.dataTable.order-column tbody tr.selected > .sorting_2, +table.dataTable.order-column tbody tr.selected > .sorting_3, table.dataTable.display tbody tr.selected > .sorting_1, +table.dataTable.display tbody tr.selected > .sorting_2, +table.dataTable.display tbody tr.selected > .sorting_3 { + background-color: #acbad5; +} +table.dataTable.display tbody tr.odd > .sorting_1, table.dataTable.order-column.stripe tbody tr.odd > .sorting_1 { + background-color: #f1f1f1; +} +table.dataTable.display tbody tr.odd > .sorting_2, table.dataTable.order-column.stripe tbody tr.odd > .sorting_2 { + background-color: #f3f3f3; +} +table.dataTable.display tbody tr.odd > .sorting_3, table.dataTable.order-column.stripe tbody tr.odd > .sorting_3 { + background-color: whitesmoke; +} +table.dataTable.display tbody tr.odd.selected > .sorting_1, table.dataTable.order-column.stripe tbody tr.odd.selected > .sorting_1 { + background-color: #a6b4cd; +} +table.dataTable.display tbody tr.odd.selected > .sorting_2, table.dataTable.order-column.stripe tbody tr.odd.selected > .sorting_2 { + background-color: #a8b5cf; +} +table.dataTable.display tbody tr.odd.selected > .sorting_3, table.dataTable.order-column.stripe tbody tr.odd.selected > .sorting_3 { + background-color: #a9b7d1; +} +table.dataTable.display tbody tr.even > .sorting_1, table.dataTable.order-column.stripe tbody tr.even > .sorting_1 { + background-color: #fafafa; +} +table.dataTable.display tbody tr.even > .sorting_2, table.dataTable.order-column.stripe tbody tr.even > .sorting_2 { + background-color: #fcfcfc; +} +table.dataTable.display tbody tr.even > .sorting_3, table.dataTable.order-column.stripe tbody tr.even > .sorting_3 { + background-color: #fefefe; +} +table.dataTable.display tbody tr.even.selected > .sorting_1, table.dataTable.order-column.stripe tbody tr.even.selected > .sorting_1 { + background-color: #acbad5; +} +table.dataTable.display tbody tr.even.selected > .sorting_2, table.dataTable.order-column.stripe tbody tr.even.selected > .sorting_2 { + background-color: #aebcd6; +} +table.dataTable.display tbody tr.even.selected > .sorting_3, table.dataTable.order-column.stripe tbody tr.even.selected > .sorting_3 { + background-color: #afbdd8; +} +table.dataTable.display tbody tr:hover > .sorting_1, table.dataTable.order-column.hover tbody tr:hover > .sorting_1 { + background-color: #eaeaea; +} +table.dataTable.display tbody tr:hover > .sorting_2, table.dataTable.order-column.hover tbody tr:hover > .sorting_2 { + background-color: #ececec; +} +table.dataTable.display tbody tr:hover > .sorting_3, table.dataTable.order-column.hover tbody tr:hover > .sorting_3 { + background-color: #efefef; +} +table.dataTable.display tbody tr:hover.selected > .sorting_1, table.dataTable.order-column.hover tbody tr:hover.selected > .sorting_1 { + background-color: #a2aec7; +} +table.dataTable.display tbody tr:hover.selected > .sorting_2, table.dataTable.order-column.hover tbody tr:hover.selected > .sorting_2 { + background-color: #a3b0c9; +} +table.dataTable.display tbody tr:hover.selected > .sorting_3, table.dataTable.order-column.hover tbody tr:hover.selected > .sorting_3 { + background-color: #a5b2cb; +} +table.dataTable.no-footer { + border-bottom: 1px solid #111; +} +table.dataTable.nowrap th, table.dataTable.nowrap td { + white-space: nowrap; +} +table.dataTable.compact thead th, +table.dataTable.compact thead td { + padding: 4px 17px 4px 4px; +} +table.dataTable.compact tfoot th, +table.dataTable.compact tfoot td { + padding: 4px; +} +table.dataTable.compact tbody th, +table.dataTable.compact tbody td { + padding: 4px; +} +table.dataTable th.dt-left, +table.dataTable td.dt-left { + text-align: left; +} +table.dataTable th.dt-center, +table.dataTable td.dt-center, +table.dataTable td.dataTables_empty { + text-align: center; +} +table.dataTable th.dt-right, +table.dataTable td.dt-right { + text-align: right; +} +table.dataTable th.dt-justify, +table.dataTable td.dt-justify { + text-align: justify; +} +table.dataTable th.dt-nowrap, +table.dataTable td.dt-nowrap { + white-space: nowrap; +} +table.dataTable thead th.dt-head-left, +table.dataTable thead td.dt-head-left, +table.dataTable tfoot th.dt-head-left, +table.dataTable tfoot td.dt-head-left { + text-align: left; +} +table.dataTable thead th.dt-head-center, +table.dataTable thead td.dt-head-center, +table.dataTable tfoot th.dt-head-center, +table.dataTable tfoot td.dt-head-center { + text-align: center; +} +table.dataTable thead th.dt-head-right, +table.dataTable thead td.dt-head-right, +table.dataTable tfoot th.dt-head-right, +table.dataTable tfoot td.dt-head-right { + text-align: right; +} +table.dataTable thead th.dt-head-justify, +table.dataTable thead td.dt-head-justify, +table.dataTable tfoot th.dt-head-justify, +table.dataTable tfoot td.dt-head-justify { + text-align: justify; +} +table.dataTable thead th.dt-head-nowrap, +table.dataTable thead td.dt-head-nowrap, +table.dataTable tfoot th.dt-head-nowrap, +table.dataTable tfoot td.dt-head-nowrap { + white-space: nowrap; +} +table.dataTable tbody th.dt-body-left, +table.dataTable tbody td.dt-body-left { + text-align: left; +} +table.dataTable tbody th.dt-body-center, +table.dataTable tbody td.dt-body-center { + text-align: center; +} +table.dataTable tbody th.dt-body-right, +table.dataTable tbody td.dt-body-right { + text-align: right; +} +table.dataTable tbody th.dt-body-justify, +table.dataTable tbody td.dt-body-justify { + text-align: justify; +} +table.dataTable tbody th.dt-body-nowrap, +table.dataTable tbody td.dt-body-nowrap { + white-space: nowrap; +} + +table.dataTable, +table.dataTable th, +table.dataTable td { + box-sizing: content-box; +} + +/* + * Control feature layout + */ +.dataTables_wrapper { + position: relative; + clear: both; + *zoom: 1; + zoom: 1; +} +.dataTables_wrapper .dataTables_length { + float: left; +} +.dataTables_wrapper .dataTables_filter { + float: right; + text-align: right; +} +.dataTables_wrapper .dataTables_filter input { + margin-left: 0.5em; +} +.dataTables_wrapper .dataTables_info { + clear: both; + float: left; + padding-top: 0.755em; +} +.dataTables_wrapper .dataTables_paginate { + float: right; + text-align: right; + padding-top: 0.25em; +} +.dataTables_wrapper .dataTables_paginate .paginate_button { + box-sizing: border-box; + display: inline-block; + min-width: 1.5em; + padding: 0.5em 1em; + margin-left: 2px; + text-align: center; + text-decoration: none !important; + cursor: pointer; + *cursor: hand; + color: #333 !important; + border: 1px solid transparent; + border-radius: 2px; +} +.dataTables_wrapper .dataTables_paginate .paginate_button.current, .dataTables_wrapper .dataTables_paginate .paginate_button.current:hover { + color: #333 !important; + border: 1px solid #979797; + background-color: white; + background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, white), color-stop(100%, #dcdcdc)); + /* Chrome,Safari4+ */ + background: -webkit-linear-gradient(top, white 0%, #dcdcdc 100%); + /* Chrome10+,Safari5.1+ */ + background: -moz-linear-gradient(top, white 0%, #dcdcdc 100%); + /* FF3.6+ */ + background: -ms-linear-gradient(top, white 0%, #dcdcdc 100%); + /* IE10+ */ + background: -o-linear-gradient(top, white 0%, #dcdcdc 100%); + /* Opera 11.10+ */ + background: linear-gradient(to bottom, white 0%, #dcdcdc 100%); + /* W3C */ +} +.dataTables_wrapper .dataTables_paginate .paginate_button.disabled, .dataTables_wrapper .dataTables_paginate .paginate_button.disabled:hover, .dataTables_wrapper .dataTables_paginate .paginate_button.disabled:active { + cursor: default; + color: #666 !important; + border: 1px solid transparent; + background: transparent; + box-shadow: none; +} +.dataTables_wrapper .dataTables_paginate .paginate_button:hover { + color: white !important; + border: 1px solid #111; + background-color: #585858; + background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #585858), color-stop(100%, #111)); + /* Chrome,Safari4+ */ + background: -webkit-linear-gradient(top, #585858 0%, #111 100%); + /* Chrome10+,Safari5.1+ */ + background: -moz-linear-gradient(top, #585858 0%, #111 100%); + /* FF3.6+ */ + background: -ms-linear-gradient(top, #585858 0%, #111 100%); + /* IE10+ */ + background: -o-linear-gradient(top, #585858 0%, #111 100%); + /* Opera 11.10+ */ + background: linear-gradient(to bottom, #585858 0%, #111 100%); + /* W3C */ +} +.dataTables_wrapper .dataTables_paginate .paginate_button:active { + outline: none; + background-color: #2b2b2b; + background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #2b2b2b), color-stop(100%, #0c0c0c)); + /* Chrome,Safari4+ */ + background: -webkit-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%); + /* Chrome10+,Safari5.1+ */ + background: -moz-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%); + /* FF3.6+ */ + background: -ms-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%); + /* IE10+ */ + background: -o-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%); + /* Opera 11.10+ */ + background: linear-gradient(to bottom, #2b2b2b 0%, #0c0c0c 100%); + /* W3C */ + box-shadow: inset 0 0 3px #111; +} +.dataTables_wrapper .dataTables_paginate .ellipsis { + padding: 0 1em; +} +.dataTables_wrapper .dataTables_processing { + position: absolute; + top: 50%; + left: 50%; + width: 100%; + height: 40px; + margin-left: -50%; + margin-top: -25px; + padding-top: 20px; + text-align: center; + font-size: 1.2em; + background-color: white; + background: -webkit-gradient(linear, left top, right top, color-stop(0%, rgba(255, 255, 255, 0)), color-stop(25%, rgba(255, 255, 255, 0.9)), color-stop(75%, rgba(255, 255, 255, 0.9)), color-stop(100%, rgba(255, 255, 255, 0))); + background: -webkit-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%); + background: -moz-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%); + background: -ms-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%); + background: -o-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%); + background: linear-gradient(to right, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%); +} +.dataTables_wrapper .dataTables_length, +.dataTables_wrapper .dataTables_filter, +.dataTables_wrapper .dataTables_info, +.dataTables_wrapper .dataTables_processing, +.dataTables_wrapper .dataTables_paginate { + color: #333; +} +.dataTables_wrapper .dataTables_scroll { + clear: both; +} +.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody { + *margin-top: -1px; + -webkit-overflow-scrolling: touch; +} +.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > thead > tr > th, .dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > thead > tr > td, .dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > tbody > tr > th, .dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > tbody > tr > td { + vertical-align: middle; +} +.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > thead > tr > th > div.dataTables_sizing, +.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > thead > tr > td > div.dataTables_sizing, .dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > tbody > tr > th > div.dataTables_sizing, +.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > tbody > tr > td > div.dataTables_sizing { + height: 0; + overflow: hidden; + margin: 0 !important; + padding: 0 !important; +} +.dataTables_wrapper.no-footer .dataTables_scrollBody { + border-bottom: 1px solid #111; +} +.dataTables_wrapper.no-footer div.dataTables_scrollHead table.dataTable, +.dataTables_wrapper.no-footer div.dataTables_scrollBody > table { + border-bottom: none; +} +.dataTables_wrapper:after { + visibility: hidden; + display: block; + content: ""; + clear: both; + height: 0; +} + +@media screen and (max-width: 767px) { + .dataTables_wrapper .dataTables_info, + .dataTables_wrapper .dataTables_paginate { + float: none; + text-align: center; + } + .dataTables_wrapper .dataTables_paginate { + margin-top: 0.5em; + } +} +@media screen and (max-width: 640px) { + .dataTables_wrapper .dataTables_length, + .dataTables_wrapper .dataTables_filter { + float: none; + text-align: center; + } + .dataTables_wrapper .dataTables_filter { + margin-top: 0.5em; + } +} +table.dataTable thead th div.DataTables_sort_wrapper { + position: relative; +} +table.dataTable thead th div.DataTables_sort_wrapper span { + position: absolute; + top: 50%; + margin-top: -8px; + right: -18px; +} +table.dataTable thead th.ui-state-default, +table.dataTable tfoot th.ui-state-default { + border-left-width: 0; +} +table.dataTable thead th.ui-state-default:first-child, +table.dataTable tfoot th.ui-state-default:first-child { + border-left-width: 1px; +} + +/* + * Control feature layout + */ +.dataTables_wrapper .dataTables_paginate .fg-button { + box-sizing: border-box; + display: inline-block; + min-width: 1.5em; + padding: 0.5em; + margin-left: 2px; + text-align: center; + text-decoration: none !important; + cursor: pointer; + *cursor: hand; + border: 1px solid transparent; +} +.dataTables_wrapper .dataTables_paginate .fg-button:active { + outline: none; +} +.dataTables_wrapper .dataTables_paginate .fg-button:first-child { + border-top-left-radius: 3px; + border-bottom-left-radius: 3px; +} +.dataTables_wrapper .dataTables_paginate .fg-button:last-child { + border-top-right-radius: 3px; + border-bottom-right-radius: 3px; +} +.dataTables_wrapper .ui-widget-header { + font-weight: normal; +} +.dataTables_wrapper .ui-toolbar { + padding: 8px; +} +.dataTables_wrapper.no-footer .dataTables_scrollBody { + border-bottom: none; +} +.dataTables_wrapper .dataTables_length, +.dataTables_wrapper .dataTables_filter, +.dataTables_wrapper .dataTables_info, +.dataTables_wrapper .dataTables_processing, +.dataTables_wrapper .dataTables_paginate { + color: inherit; +} diff --git a/AirScout/wwwroot/dashboard/assets/extra-libs/DataTables/DataTables-1.10.16/css/dataTables.jqueryui.min.css b/AirScout/wwwroot/dashboard/assets/extra-libs/DataTables/DataTables-1.10.16/css/dataTables.jqueryui.min.css new file mode 100644 index 0000000..4e99c26 --- /dev/null +++ b/AirScout/wwwroot/dashboard/assets/extra-libs/DataTables/DataTables-1.10.16/css/dataTables.jqueryui.min.css @@ -0,0 +1 @@ +table.dataTable{width:100%;margin:0 auto;clear:both;border-collapse:separate;border-spacing:0}table.dataTable thead th,table.dataTable tfoot th{font-weight:bold}table.dataTable thead th,table.dataTable thead td{padding:10px 18px}table.dataTable thead th:active,table.dataTable thead td:active{outline:none}table.dataTable tfoot th,table.dataTable tfoot td{padding:10px 18px 6px 18px}table.dataTable tbody tr{background-color:#ffffff}table.dataTable tbody tr.selected{background-color:#B0BED9}table.dataTable tbody th,table.dataTable tbody td{padding:8px 10px}table.dataTable.row-border tbody th,table.dataTable.row-border tbody td,table.dataTable.display tbody th,table.dataTable.display tbody td{border-top:1px solid #ddd}table.dataTable.row-border tbody tr:first-child th,table.dataTable.row-border tbody tr:first-child td,table.dataTable.display tbody tr:first-child th,table.dataTable.display tbody tr:first-child td{border-top:none}table.dataTable.cell-border tbody th,table.dataTable.cell-border tbody td{border-top:1px solid #ddd;border-right:1px solid #ddd}table.dataTable.cell-border tbody tr th:first-child,table.dataTable.cell-border tbody tr td:first-child{border-left:1px solid #ddd}table.dataTable.cell-border tbody tr:first-child th,table.dataTable.cell-border tbody tr:first-child td{border-top:none}table.dataTable.stripe tbody tr.odd,table.dataTable.display tbody tr.odd{background-color:#f9f9f9}table.dataTable.stripe tbody tr.odd.selected,table.dataTable.display tbody tr.odd.selected{background-color:#acbad4}table.dataTable.hover tbody tr:hover,table.dataTable.display tbody tr:hover{background-color:#f6f6f6}table.dataTable.hover tbody tr:hover.selected,table.dataTable.display tbody tr:hover.selected{background-color:#aab7d1}table.dataTable.order-column tbody tr>.sorting_1,table.dataTable.order-column tbody tr>.sorting_2,table.dataTable.order-column tbody tr>.sorting_3,table.dataTable.display tbody tr>.sorting_1,table.dataTable.display tbody tr>.sorting_2,table.dataTable.display tbody tr>.sorting_3{background-color:#fafafa}table.dataTable.order-column tbody tr.selected>.sorting_1,table.dataTable.order-column tbody tr.selected>.sorting_2,table.dataTable.order-column tbody tr.selected>.sorting_3,table.dataTable.display tbody tr.selected>.sorting_1,table.dataTable.display tbody tr.selected>.sorting_2,table.dataTable.display tbody tr.selected>.sorting_3{background-color:#acbad5}table.dataTable.display tbody tr.odd>.sorting_1,table.dataTable.order-column.stripe tbody tr.odd>.sorting_1{background-color:#f1f1f1}table.dataTable.display tbody tr.odd>.sorting_2,table.dataTable.order-column.stripe tbody tr.odd>.sorting_2{background-color:#f3f3f3}table.dataTable.display tbody tr.odd>.sorting_3,table.dataTable.order-column.stripe tbody tr.odd>.sorting_3{background-color:whitesmoke}table.dataTable.display tbody tr.odd.selected>.sorting_1,table.dataTable.order-column.stripe tbody tr.odd.selected>.sorting_1{background-color:#a6b4cd}table.dataTable.display tbody tr.odd.selected>.sorting_2,table.dataTable.order-column.stripe tbody tr.odd.selected>.sorting_2{background-color:#a8b5cf}table.dataTable.display tbody tr.odd.selected>.sorting_3,table.dataTable.order-column.stripe tbody tr.odd.selected>.sorting_3{background-color:#a9b7d1}table.dataTable.display tbody tr.even>.sorting_1,table.dataTable.order-column.stripe tbody tr.even>.sorting_1{background-color:#fafafa}table.dataTable.display tbody tr.even>.sorting_2,table.dataTable.order-column.stripe tbody tr.even>.sorting_2{background-color:#fcfcfc}table.dataTable.display tbody tr.even>.sorting_3,table.dataTable.order-column.stripe tbody tr.even>.sorting_3{background-color:#fefefe}table.dataTable.display tbody tr.even.selected>.sorting_1,table.dataTable.order-column.stripe tbody tr.even.selected>.sorting_1{background-color:#acbad5}table.dataTable.display tbody tr.even.selected>.sorting_2,table.dataTable.order-column.stripe tbody tr.even.selected>.sorting_2{background-color:#aebcd6}table.dataTable.display tbody tr.even.selected>.sorting_3,table.dataTable.order-column.stripe tbody tr.even.selected>.sorting_3{background-color:#afbdd8}table.dataTable.display tbody tr:hover>.sorting_1,table.dataTable.order-column.hover tbody tr:hover>.sorting_1{background-color:#eaeaea}table.dataTable.display tbody tr:hover>.sorting_2,table.dataTable.order-column.hover tbody tr:hover>.sorting_2{background-color:#ececec}table.dataTable.display tbody tr:hover>.sorting_3,table.dataTable.order-column.hover tbody tr:hover>.sorting_3{background-color:#efefef}table.dataTable.display tbody tr:hover.selected>.sorting_1,table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_1{background-color:#a2aec7}table.dataTable.display tbody tr:hover.selected>.sorting_2,table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_2{background-color:#a3b0c9}table.dataTable.display tbody tr:hover.selected>.sorting_3,table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_3{background-color:#a5b2cb}table.dataTable.no-footer{border-bottom:1px solid #111}table.dataTable.nowrap th,table.dataTable.nowrap td{white-space:nowrap}table.dataTable.compact thead th,table.dataTable.compact thead td{padding:4px 17px 4px 4px}table.dataTable.compact tfoot th,table.dataTable.compact tfoot td{padding:4px}table.dataTable.compact tbody th,table.dataTable.compact tbody td{padding:4px}table.dataTable th.dt-left,table.dataTable td.dt-left{text-align:left}table.dataTable th.dt-center,table.dataTable td.dt-center,table.dataTable td.dataTables_empty{text-align:center}table.dataTable th.dt-right,table.dataTable td.dt-right{text-align:right}table.dataTable th.dt-justify,table.dataTable td.dt-justify{text-align:justify}table.dataTable th.dt-nowrap,table.dataTable td.dt-nowrap{white-space:nowrap}table.dataTable thead th.dt-head-left,table.dataTable thead td.dt-head-left,table.dataTable tfoot th.dt-head-left,table.dataTable tfoot td.dt-head-left{text-align:left}table.dataTable thead th.dt-head-center,table.dataTable thead td.dt-head-center,table.dataTable tfoot th.dt-head-center,table.dataTable tfoot td.dt-head-center{text-align:center}table.dataTable thead th.dt-head-right,table.dataTable thead td.dt-head-right,table.dataTable tfoot th.dt-head-right,table.dataTable tfoot td.dt-head-right{text-align:right}table.dataTable thead th.dt-head-justify,table.dataTable thead td.dt-head-justify,table.dataTable tfoot th.dt-head-justify,table.dataTable tfoot td.dt-head-justify{text-align:justify}table.dataTable thead th.dt-head-nowrap,table.dataTable thead td.dt-head-nowrap,table.dataTable tfoot th.dt-head-nowrap,table.dataTable tfoot td.dt-head-nowrap{white-space:nowrap}table.dataTable tbody th.dt-body-left,table.dataTable tbody td.dt-body-left{text-align:left}table.dataTable tbody th.dt-body-center,table.dataTable tbody td.dt-body-center{text-align:center}table.dataTable tbody th.dt-body-right,table.dataTable tbody td.dt-body-right{text-align:right}table.dataTable tbody th.dt-body-justify,table.dataTable tbody td.dt-body-justify{text-align:justify}table.dataTable tbody th.dt-body-nowrap,table.dataTable tbody td.dt-body-nowrap{white-space:nowrap}table.dataTable,table.dataTable th,table.dataTable td{box-sizing:content-box}.dataTables_wrapper{position:relative;clear:both;*zoom:1;zoom:1}.dataTables_wrapper .dataTables_length{float:left}.dataTables_wrapper .dataTables_filter{float:right;text-align:right}.dataTables_wrapper .dataTables_filter input{margin-left:0.5em}.dataTables_wrapper .dataTables_info{clear:both;float:left;padding-top:0.755em}.dataTables_wrapper .dataTables_paginate{float:right;text-align:right;padding-top:0.25em}.dataTables_wrapper .dataTables_paginate .paginate_button{box-sizing:border-box;display:inline-block;min-width:1.5em;padding:0.5em 1em;margin-left:2px;text-align:center;text-decoration:none !important;cursor:pointer;*cursor:hand;color:#333 !important;border:1px solid transparent;border-radius:2px}.dataTables_wrapper .dataTables_paginate .paginate_button.current,.dataTables_wrapper .dataTables_paginate .paginate_button.current:hover{color:#333 !important;border:1px solid #979797;background-color:white;background:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #fff), color-stop(100%, #dcdcdc));background:-webkit-linear-gradient(top, #fff 0%, #dcdcdc 100%);background:-moz-linear-gradient(top, #fff 0%, #dcdcdc 100%);background:-ms-linear-gradient(top, #fff 0%, #dcdcdc 100%);background:-o-linear-gradient(top, #fff 0%, #dcdcdc 100%);background:linear-gradient(to bottom, #fff 0%, #dcdcdc 100%)}.dataTables_wrapper .dataTables_paginate .paginate_button.disabled,.dataTables_wrapper .dataTables_paginate .paginate_button.disabled:hover,.dataTables_wrapper .dataTables_paginate .paginate_button.disabled:active{cursor:default;color:#666 !important;border:1px solid transparent;background:transparent;box-shadow:none}.dataTables_wrapper .dataTables_paginate .paginate_button:hover{color:white !important;border:1px solid #111;background-color:#585858;background:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #585858), color-stop(100%, #111));background:-webkit-linear-gradient(top, #585858 0%, #111 100%);background:-moz-linear-gradient(top, #585858 0%, #111 100%);background:-ms-linear-gradient(top, #585858 0%, #111 100%);background:-o-linear-gradient(top, #585858 0%, #111 100%);background:linear-gradient(to bottom, #585858 0%, #111 100%)}.dataTables_wrapper .dataTables_paginate .paginate_button:active{outline:none;background-color:#2b2b2b;background:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #2b2b2b), color-stop(100%, #0c0c0c));background:-webkit-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);background:-moz-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);background:-ms-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);background:-o-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);background:linear-gradient(to bottom, #2b2b2b 0%, #0c0c0c 100%);box-shadow:inset 0 0 3px #111}.dataTables_wrapper .dataTables_paginate .ellipsis{padding:0 1em}.dataTables_wrapper .dataTables_processing{position:absolute;top:50%;left:50%;width:100%;height:40px;margin-left:-50%;margin-top:-25px;padding-top:20px;text-align:center;font-size:1.2em;background-color:white;background:-webkit-gradient(linear, left top, right top, color-stop(0%, rgba(255,255,255,0)), color-stop(25%, rgba(255,255,255,0.9)), color-stop(75%, rgba(255,255,255,0.9)), color-stop(100%, rgba(255,255,255,0)));background:-webkit-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%);background:-moz-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%);background:-ms-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%);background:-o-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%);background:linear-gradient(to right, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%)}.dataTables_wrapper .dataTables_length,.dataTables_wrapper .dataTables_filter,.dataTables_wrapper .dataTables_info,.dataTables_wrapper .dataTables_processing,.dataTables_wrapper .dataTables_paginate{color:#333}.dataTables_wrapper .dataTables_scroll{clear:both}.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody{*margin-top:-1px;-webkit-overflow-scrolling:touch}.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>thead>tr>th,.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>thead>tr>td,.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>tbody>tr>th,.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>tbody>tr>td{vertical-align:middle}.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>thead>tr>th>div.dataTables_sizing,.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>thead>tr>td>div.dataTables_sizing,.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>tbody>tr>th>div.dataTables_sizing,.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>tbody>tr>td>div.dataTables_sizing{height:0;overflow:hidden;margin:0 !important;padding:0 !important}.dataTables_wrapper.no-footer .dataTables_scrollBody{border-bottom:1px solid #111}.dataTables_wrapper.no-footer div.dataTables_scrollHead table.dataTable,.dataTables_wrapper.no-footer div.dataTables_scrollBody>table{border-bottom:none}.dataTables_wrapper:after{visibility:hidden;display:block;content:"";clear:both;height:0}@media screen and (max-width: 767px){.dataTables_wrapper .dataTables_info,.dataTables_wrapper .dataTables_paginate{float:none;text-align:center}.dataTables_wrapper .dataTables_paginate{margin-top:0.5em}}@media screen and (max-width: 640px){.dataTables_wrapper .dataTables_length,.dataTables_wrapper .dataTables_filter{float:none;text-align:center}.dataTables_wrapper .dataTables_filter{margin-top:0.5em}}table.dataTable thead th div.DataTables_sort_wrapper{position:relative}table.dataTable thead th div.DataTables_sort_wrapper span{position:absolute;top:50%;margin-top:-8px;right:-18px}table.dataTable thead th.ui-state-default,table.dataTable tfoot th.ui-state-default{border-left-width:0}table.dataTable thead th.ui-state-default:first-child,table.dataTable tfoot th.ui-state-default:first-child{border-left-width:1px}.dataTables_wrapper .dataTables_paginate .fg-button{box-sizing:border-box;display:inline-block;min-width:1.5em;padding:0.5em;margin-left:2px;text-align:center;text-decoration:none !important;cursor:pointer;*cursor:hand;border:1px solid transparent}.dataTables_wrapper .dataTables_paginate .fg-button:active{outline:none}.dataTables_wrapper .dataTables_paginate .fg-button:first-child{border-top-left-radius:3px;border-bottom-left-radius:3px}.dataTables_wrapper .dataTables_paginate .fg-button:last-child{border-top-right-radius:3px;border-bottom-right-radius:3px}.dataTables_wrapper .ui-widget-header{font-weight:normal}.dataTables_wrapper .ui-toolbar{padding:8px}.dataTables_wrapper.no-footer .dataTables_scrollBody{border-bottom:none}.dataTables_wrapper .dataTables_length,.dataTables_wrapper .dataTables_filter,.dataTables_wrapper .dataTables_info,.dataTables_wrapper .dataTables_processing,.dataTables_wrapper .dataTables_paginate{color:inherit} diff --git a/AirScout/wwwroot/dashboard/assets/extra-libs/DataTables/DataTables-1.10.16/css/dataTables.semanticui.css b/AirScout/wwwroot/dashboard/assets/extra-libs/DataTables/DataTables-1.10.16/css/dataTables.semanticui.css new file mode 100644 index 0000000..2583842 --- /dev/null +++ b/AirScout/wwwroot/dashboard/assets/extra-libs/DataTables/DataTables-1.10.16/css/dataTables.semanticui.css @@ -0,0 +1,102 @@ +/* + * Styling for DataTables with Semantic UI + */ +table.dataTable.table { + margin: 0; +} +table.dataTable.table thead th, +table.dataTable.table thead td { + position: relative; +} +table.dataTable.table thead th.sorting, table.dataTable.table thead th.sorting_asc, table.dataTable.table thead th.sorting_desc, +table.dataTable.table thead td.sorting, +table.dataTable.table thead td.sorting_asc, +table.dataTable.table thead td.sorting_desc { + padding-right: 20px; +} +table.dataTable.table thead th.sorting:after, table.dataTable.table thead th.sorting_asc:after, table.dataTable.table thead th.sorting_desc:after, +table.dataTable.table thead td.sorting:after, +table.dataTable.table thead td.sorting_asc:after, +table.dataTable.table thead td.sorting_desc:after { + position: absolute; + top: 12px; + right: 8px; + display: block; + font-family: Icons; +} +table.dataTable.table thead th.sorting:after, +table.dataTable.table thead td.sorting:after { + content: "\f0dc"; + color: #ddd; + font-size: 0.8em; +} +table.dataTable.table thead th.sorting_asc:after, +table.dataTable.table thead td.sorting_asc:after { + content: "\f0de"; +} +table.dataTable.table thead th.sorting_desc:after, +table.dataTable.table thead td.sorting_desc:after { + content: "\f0dd"; +} +table.dataTable.table td, +table.dataTable.table th { + -webkit-box-sizing: content-box; + box-sizing: content-box; +} +table.dataTable.table td.dataTables_empty, +table.dataTable.table th.dataTables_empty { + text-align: center; +} +table.dataTable.table.nowrap th, +table.dataTable.table.nowrap td { + white-space: nowrap; +} + +div.dataTables_wrapper div.dataTables_length select { + vertical-align: middle; + min-height: 2.7142em; +} +div.dataTables_wrapper div.dataTables_length .ui.selection.dropdown { + min-width: 0; +} +div.dataTables_wrapper div.dataTables_filter input { + margin-left: 0.5em; +} +div.dataTables_wrapper div.dataTables_info { + padding-top: 13px; + white-space: nowrap; +} +div.dataTables_wrapper div.dataTables_processing { + position: absolute; + top: 50%; + left: 50%; + width: 200px; + margin-left: -100px; + text-align: center; +} +div.dataTables_wrapper div.row.dt-table { + padding: 0; +} +div.dataTables_wrapper div.dataTables_scrollHead table.dataTable { + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; + border-bottom: none; +} +div.dataTables_wrapper div.dataTables_scrollBody thead .sorting:after, +div.dataTables_wrapper div.dataTables_scrollBody thead .sorting_asc:after, +div.dataTables_wrapper div.dataTables_scrollBody thead .sorting_desc:after { + display: none; +} +div.dataTables_wrapper div.dataTables_scrollBody table.dataTable { + border-radius: 0; + border-top: none; + border-bottom-width: 0; +} +div.dataTables_wrapper div.dataTables_scrollBody table.dataTable.no-footer { + border-bottom-width: 1px; +} +div.dataTables_wrapper div.dataTables_scrollFoot table.dataTable { + border-top-right-radius: 0; + border-top-left-radius: 0; + border-top: none; +} diff --git a/AirScout/wwwroot/dashboard/assets/extra-libs/DataTables/DataTables-1.10.16/css/dataTables.semanticui.min.css b/AirScout/wwwroot/dashboard/assets/extra-libs/DataTables/DataTables-1.10.16/css/dataTables.semanticui.min.css new file mode 100644 index 0000000..c192a34 --- /dev/null +++ b/AirScout/wwwroot/dashboard/assets/extra-libs/DataTables/DataTables-1.10.16/css/dataTables.semanticui.min.css @@ -0,0 +1 @@ +table.dataTable.table{margin:0}table.dataTable.table thead th,table.dataTable.table thead td{position:relative}table.dataTable.table thead th.sorting,table.dataTable.table thead th.sorting_asc,table.dataTable.table thead th.sorting_desc,table.dataTable.table thead td.sorting,table.dataTable.table thead td.sorting_asc,table.dataTable.table thead td.sorting_desc{padding-right:20px}table.dataTable.table thead th.sorting:after,table.dataTable.table thead th.sorting_asc:after,table.dataTable.table thead th.sorting_desc:after,table.dataTable.table thead td.sorting:after,table.dataTable.table thead td.sorting_asc:after,table.dataTable.table thead td.sorting_desc:after{position:absolute;top:12px;right:8px;display:block;font-family:Icons}table.dataTable.table thead th.sorting:after,table.dataTable.table thead td.sorting:after{content:"\f0dc";color:#ddd;font-size:0.8em}table.dataTable.table thead th.sorting_asc:after,table.dataTable.table thead td.sorting_asc:after{content:"\f0de"}table.dataTable.table thead th.sorting_desc:after,table.dataTable.table thead td.sorting_desc:after{content:"\f0dd"}table.dataTable.table td,table.dataTable.table th{-webkit-box-sizing:content-box;box-sizing:content-box}table.dataTable.table td.dataTables_empty,table.dataTable.table th.dataTables_empty{text-align:center}table.dataTable.table.nowrap th,table.dataTable.table.nowrap td{white-space:nowrap}div.dataTables_wrapper div.dataTables_length select{vertical-align:middle;min-height:2.7142em}div.dataTables_wrapper div.dataTables_length .ui.selection.dropdown{min-width:0}div.dataTables_wrapper div.dataTables_filter input{margin-left:0.5em}div.dataTables_wrapper div.dataTables_info{padding-top:13px;white-space:nowrap}div.dataTables_wrapper div.dataTables_processing{position:absolute;top:50%;left:50%;width:200px;margin-left:-100px;text-align:center}div.dataTables_wrapper div.row.dt-table{padding:0}div.dataTables_wrapper div.dataTables_scrollHead table.dataTable{border-bottom-right-radius:0;border-bottom-left-radius:0;border-bottom:none}div.dataTables_wrapper div.dataTables_scrollBody thead .sorting:after,div.dataTables_wrapper div.dataTables_scrollBody thead .sorting_asc:after,div.dataTables_wrapper div.dataTables_scrollBody thead .sorting_desc:after{display:none}div.dataTables_wrapper div.dataTables_scrollBody table.dataTable{border-radius:0;border-top:none;border-bottom-width:0}div.dataTables_wrapper div.dataTables_scrollBody table.dataTable.no-footer{border-bottom-width:1px}div.dataTables_wrapper div.dataTables_scrollFoot table.dataTable{border-top-right-radius:0;border-top-left-radius:0;border-top:none} diff --git a/AirScout/wwwroot/dashboard/assets/extra-libs/DataTables/DataTables-1.10.16/css/jquery.dataTables.css b/AirScout/wwwroot/dashboard/assets/extra-libs/DataTables/DataTables-1.10.16/css/jquery.dataTables.css new file mode 100644 index 0000000..760eccb --- /dev/null +++ b/AirScout/wwwroot/dashboard/assets/extra-libs/DataTables/DataTables-1.10.16/css/jquery.dataTables.css @@ -0,0 +1,448 @@ +/* + * Table styles + */ +table.dataTable { + width: 100%; + margin: 0 auto; + clear: both; + border-collapse: separate; + border-spacing: 0; + /* + * Header and footer styles + */ + /* + * Body styles + */ +} +table.dataTable thead th, +table.dataTable tfoot th { + font-weight: bold; +} +table.dataTable thead th, +table.dataTable thead td { + padding: 10px 18px; + border-bottom: 1px solid #111; +} +table.dataTable thead th:active, +table.dataTable thead td:active { + outline: none; +} +table.dataTable tfoot th, +table.dataTable tfoot td { + padding: 10px 18px 6px 18px; + border-top: 1px solid #111; +} +table.dataTable thead .sorting, +table.dataTable thead .sorting_asc, +table.dataTable thead .sorting_desc, +table.dataTable thead .sorting_asc_disabled, +table.dataTable thead .sorting_desc_disabled { + cursor: pointer; + *cursor: hand; + background-repeat: no-repeat; + background-position: center right; +} +table.dataTable thead .sorting { + background-image: url("../images/sort_both.png"); +} +table.dataTable thead .sorting_asc { + background-image: url("../images/sort_asc.png"); +} +table.dataTable thead .sorting_desc { + background-image: url("../images/sort_desc.png"); +} +table.dataTable thead .sorting_asc_disabled { + background-image: url("../images/sort_asc_disabled.png"); +} +table.dataTable thead .sorting_desc_disabled { + background-image: url("../images/sort_desc_disabled.png"); +} +table.dataTable tbody tr { + background-color: #ffffff; +} +table.dataTable tbody tr.selected { + background-color: #B0BED9; +} +table.dataTable tbody th, +table.dataTable tbody td { + padding: 8px 10px; +} +table.dataTable.row-border tbody th, table.dataTable.row-border tbody td, table.dataTable.display tbody th, table.dataTable.display tbody td { + border-top: 1px solid #ddd; +} +table.dataTable.row-border tbody tr:first-child th, +table.dataTable.row-border tbody tr:first-child td, table.dataTable.display tbody tr:first-child th, +table.dataTable.display tbody tr:first-child td { + border-top: none; +} +table.dataTable.cell-border tbody th, table.dataTable.cell-border tbody td { + border-top: 1px solid #ddd; + border-right: 1px solid #ddd; +} +table.dataTable.cell-border tbody tr th:first-child, +table.dataTable.cell-border tbody tr td:first-child { + border-left: 1px solid #ddd; +} +table.dataTable.cell-border tbody tr:first-child th, +table.dataTable.cell-border tbody tr:first-child td { + border-top: none; +} +table.dataTable.stripe tbody tr.odd, table.dataTable.display tbody tr.odd { + background-color: #f9f9f9; +} +table.dataTable.stripe tbody tr.odd.selected, table.dataTable.display tbody tr.odd.selected { + background-color: #acbad4; +} +table.dataTable.hover tbody tr:hover, table.dataTable.display tbody tr:hover { + background-color: #f6f6f6; +} +table.dataTable.hover tbody tr:hover.selected, table.dataTable.display tbody tr:hover.selected { + background-color: #aab7d1; +} +table.dataTable.order-column tbody tr > .sorting_1, +table.dataTable.order-column tbody tr > .sorting_2, +table.dataTable.order-column tbody tr > .sorting_3, table.dataTable.display tbody tr > .sorting_1, +table.dataTable.display tbody tr > .sorting_2, +table.dataTable.display tbody tr > .sorting_3 { + background-color: #fafafa; +} +table.dataTable.order-column tbody tr.selected > .sorting_1, +table.dataTable.order-column tbody tr.selected > .sorting_2, +table.dataTable.order-column tbody tr.selected > .sorting_3, table.dataTable.display tbody tr.selected > .sorting_1, +table.dataTable.display tbody tr.selected > .sorting_2, +table.dataTable.display tbody tr.selected > .sorting_3 { + background-color: #acbad5; +} +table.dataTable.display tbody tr.odd > .sorting_1, table.dataTable.order-column.stripe tbody tr.odd > .sorting_1 { + background-color: #f1f1f1; +} +table.dataTable.display tbody tr.odd > .sorting_2, table.dataTable.order-column.stripe tbody tr.odd > .sorting_2 { + background-color: #f3f3f3; +} +table.dataTable.display tbody tr.odd > .sorting_3, table.dataTable.order-column.stripe tbody tr.odd > .sorting_3 { + background-color: whitesmoke; +} +table.dataTable.display tbody tr.odd.selected > .sorting_1, table.dataTable.order-column.stripe tbody tr.odd.selected > .sorting_1 { + background-color: #a6b4cd; +} +table.dataTable.display tbody tr.odd.selected > .sorting_2, table.dataTable.order-column.stripe tbody tr.odd.selected > .sorting_2 { + background-color: #a8b5cf; +} +table.dataTable.display tbody tr.odd.selected > .sorting_3, table.dataTable.order-column.stripe tbody tr.odd.selected > .sorting_3 { + background-color: #a9b7d1; +} +table.dataTable.display tbody tr.even > .sorting_1, table.dataTable.order-column.stripe tbody tr.even > .sorting_1 { + background-color: #fafafa; +} +table.dataTable.display tbody tr.even > .sorting_2, table.dataTable.order-column.stripe tbody tr.even > .sorting_2 { + background-color: #fcfcfc; +} +table.dataTable.display tbody tr.even > .sorting_3, table.dataTable.order-column.stripe tbody tr.even > .sorting_3 { + background-color: #fefefe; +} +table.dataTable.display tbody tr.even.selected > .sorting_1, table.dataTable.order-column.stripe tbody tr.even.selected > .sorting_1 { + background-color: #acbad5; +} +table.dataTable.display tbody tr.even.selected > .sorting_2, table.dataTable.order-column.stripe tbody tr.even.selected > .sorting_2 { + background-color: #aebcd6; +} +table.dataTable.display tbody tr.even.selected > .sorting_3, table.dataTable.order-column.stripe tbody tr.even.selected > .sorting_3 { + background-color: #afbdd8; +} +table.dataTable.display tbody tr:hover > .sorting_1, table.dataTable.order-column.hover tbody tr:hover > .sorting_1 { + background-color: #eaeaea; +} +table.dataTable.display tbody tr:hover > .sorting_2, table.dataTable.order-column.hover tbody tr:hover > .sorting_2 { + background-color: #ececec; +} +table.dataTable.display tbody tr:hover > .sorting_3, table.dataTable.order-column.hover tbody tr:hover > .sorting_3 { + background-color: #efefef; +} +table.dataTable.display tbody tr:hover.selected > .sorting_1, table.dataTable.order-column.hover tbody tr:hover.selected > .sorting_1 { + background-color: #a2aec7; +} +table.dataTable.display tbody tr:hover.selected > .sorting_2, table.dataTable.order-column.hover tbody tr:hover.selected > .sorting_2 { + background-color: #a3b0c9; +} +table.dataTable.display tbody tr:hover.selected > .sorting_3, table.dataTable.order-column.hover tbody tr:hover.selected > .sorting_3 { + background-color: #a5b2cb; +} +table.dataTable.no-footer { + border-bottom: 1px solid #111; +} +table.dataTable.nowrap th, table.dataTable.nowrap td { + white-space: nowrap; +} +table.dataTable.compact thead th, +table.dataTable.compact thead td { + padding: 4px 17px 4px 4px; +} +table.dataTable.compact tfoot th, +table.dataTable.compact tfoot td { + padding: 4px; +} +table.dataTable.compact tbody th, +table.dataTable.compact tbody td { + padding: 4px; +} +table.dataTable th.dt-left, +table.dataTable td.dt-left { + text-align: left; +} +table.dataTable th.dt-center, +table.dataTable td.dt-center, +table.dataTable td.dataTables_empty { + text-align: center; +} +table.dataTable th.dt-right, +table.dataTable td.dt-right { + text-align: right; +} +table.dataTable th.dt-justify, +table.dataTable td.dt-justify { + text-align: justify; +} +table.dataTable th.dt-nowrap, +table.dataTable td.dt-nowrap { + white-space: nowrap; +} +table.dataTable thead th.dt-head-left, +table.dataTable thead td.dt-head-left, +table.dataTable tfoot th.dt-head-left, +table.dataTable tfoot td.dt-head-left { + text-align: left; +} +table.dataTable thead th.dt-head-center, +table.dataTable thead td.dt-head-center, +table.dataTable tfoot th.dt-head-center, +table.dataTable tfoot td.dt-head-center { + text-align: center; +} +table.dataTable thead th.dt-head-right, +table.dataTable thead td.dt-head-right, +table.dataTable tfoot th.dt-head-right, +table.dataTable tfoot td.dt-head-right { + text-align: right; +} +table.dataTable thead th.dt-head-justify, +table.dataTable thead td.dt-head-justify, +table.dataTable tfoot th.dt-head-justify, +table.dataTable tfoot td.dt-head-justify { + text-align: justify; +} +table.dataTable thead th.dt-head-nowrap, +table.dataTable thead td.dt-head-nowrap, +table.dataTable tfoot th.dt-head-nowrap, +table.dataTable tfoot td.dt-head-nowrap { + white-space: nowrap; +} +table.dataTable tbody th.dt-body-left, +table.dataTable tbody td.dt-body-left { + text-align: left; +} +table.dataTable tbody th.dt-body-center, +table.dataTable tbody td.dt-body-center { + text-align: center; +} +table.dataTable tbody th.dt-body-right, +table.dataTable tbody td.dt-body-right { + text-align: right; +} +table.dataTable tbody th.dt-body-justify, +table.dataTable tbody td.dt-body-justify { + text-align: justify; +} +table.dataTable tbody th.dt-body-nowrap, +table.dataTable tbody td.dt-body-nowrap { + white-space: nowrap; +} + +table.dataTable, +table.dataTable th, +table.dataTable td { + box-sizing: content-box; +} + +/* + * Control feature layout + */ +.dataTables_wrapper { + position: relative; + clear: both; + *zoom: 1; + zoom: 1; +} +.dataTables_wrapper .dataTables_length { + float: left; +} +.dataTables_wrapper .dataTables_filter { + float: right; + text-align: right; +} +.dataTables_wrapper .dataTables_filter input { + margin-left: 0.5em; +} +.dataTables_wrapper .dataTables_info { + clear: both; + float: left; + padding-top: 0.755em; +} +.dataTables_wrapper .dataTables_paginate { + float: right; + text-align: right; + padding-top: 0.25em; +} +.dataTables_wrapper .dataTables_paginate .paginate_button { + box-sizing: border-box; + display: inline-block; + min-width: 1.5em; + padding: 0.5em 1em; + margin-left: 2px; + text-align: center; + text-decoration: none !important; + cursor: pointer; + *cursor: hand; + color: #333 !important; + border: 1px solid transparent; + border-radius: 2px; +} +.dataTables_wrapper .dataTables_paginate .paginate_button.current, .dataTables_wrapper .dataTables_paginate .paginate_button.current:hover { + color: #333 !important; + border: 1px solid #979797; + background-color: white; + background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, white), color-stop(100%, #dcdcdc)); + /* Chrome,Safari4+ */ + background: -webkit-linear-gradient(top, white 0%, #dcdcdc 100%); + /* Chrome10+,Safari5.1+ */ + background: -moz-linear-gradient(top, white 0%, #dcdcdc 100%); + /* FF3.6+ */ + background: -ms-linear-gradient(top, white 0%, #dcdcdc 100%); + /* IE10+ */ + background: -o-linear-gradient(top, white 0%, #dcdcdc 100%); + /* Opera 11.10+ */ + background: linear-gradient(to bottom, white 0%, #dcdcdc 100%); + /* W3C */ +} +.dataTables_wrapper .dataTables_paginate .paginate_button.disabled, .dataTables_wrapper .dataTables_paginate .paginate_button.disabled:hover, .dataTables_wrapper .dataTables_paginate .paginate_button.disabled:active { + cursor: default; + color: #666 !important; + border: 1px solid transparent; + background: transparent; + box-shadow: none; +} +.dataTables_wrapper .dataTables_paginate .paginate_button:hover { + color: white !important; + border: 1px solid #111; + background-color: #585858; + background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #585858), color-stop(100%, #111)); + /* Chrome,Safari4+ */ + background: -webkit-linear-gradient(top, #585858 0%, #111 100%); + /* Chrome10+,Safari5.1+ */ + background: -moz-linear-gradient(top, #585858 0%, #111 100%); + /* FF3.6+ */ + background: -ms-linear-gradient(top, #585858 0%, #111 100%); + /* IE10+ */ + background: -o-linear-gradient(top, #585858 0%, #111 100%); + /* Opera 11.10+ */ + background: linear-gradient(to bottom, #585858 0%, #111 100%); + /* W3C */ +} +.dataTables_wrapper .dataTables_paginate .paginate_button:active { + outline: none; + background-color: #2b2b2b; + background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #2b2b2b), color-stop(100%, #0c0c0c)); + /* Chrome,Safari4+ */ + background: -webkit-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%); + /* Chrome10+,Safari5.1+ */ + background: -moz-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%); + /* FF3.6+ */ + background: -ms-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%); + /* IE10+ */ + background: -o-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%); + /* Opera 11.10+ */ + background: linear-gradient(to bottom, #2b2b2b 0%, #0c0c0c 100%); + /* W3C */ + box-shadow: inset 0 0 3px #111; +} +.dataTables_wrapper .dataTables_paginate .ellipsis { + padding: 0 1em; +} +.dataTables_wrapper .dataTables_processing { + position: absolute; + top: 50%; + left: 50%; + width: 100%; + height: 40px; + margin-left: -50%; + margin-top: -25px; + padding-top: 20px; + text-align: center; + font-size: 1.2em; + background-color: white; + background: -webkit-gradient(linear, left top, right top, color-stop(0%, rgba(255, 255, 255, 0)), color-stop(25%, rgba(255, 255, 255, 0.9)), color-stop(75%, rgba(255, 255, 255, 0.9)), color-stop(100%, rgba(255, 255, 255, 0))); + background: -webkit-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%); + background: -moz-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%); + background: -ms-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%); + background: -o-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%); + background: linear-gradient(to right, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%); +} +.dataTables_wrapper .dataTables_length, +.dataTables_wrapper .dataTables_filter, +.dataTables_wrapper .dataTables_info, +.dataTables_wrapper .dataTables_processing, +.dataTables_wrapper .dataTables_paginate { + color: #333; +} +.dataTables_wrapper .dataTables_scroll { + clear: both; +} +.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody { + *margin-top: -1px; + -webkit-overflow-scrolling: touch; +} +.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > thead > tr > th, .dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > thead > tr > td, .dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > tbody > tr > th, .dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > tbody > tr > td { + vertical-align: middle; +} +.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > thead > tr > th > div.dataTables_sizing, +.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > thead > tr > td > div.dataTables_sizing, .dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > tbody > tr > th > div.dataTables_sizing, +.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > tbody > tr > td > div.dataTables_sizing { + height: 0; + overflow: hidden; + margin: 0 !important; + padding: 0 !important; +} +.dataTables_wrapper.no-footer .dataTables_scrollBody { + border-bottom: 1px solid #111; +} +.dataTables_wrapper.no-footer div.dataTables_scrollHead table.dataTable, +.dataTables_wrapper.no-footer div.dataTables_scrollBody > table { + border-bottom: none; +} +.dataTables_wrapper:after { + visibility: hidden; + display: block; + content: ""; + clear: both; + height: 0; +} + +@media screen and (max-width: 767px) { + .dataTables_wrapper .dataTables_info, + .dataTables_wrapper .dataTables_paginate { + float: none; + text-align: center; + } + .dataTables_wrapper .dataTables_paginate { + margin-top: 0.5em; + } +} +@media screen and (max-width: 640px) { + .dataTables_wrapper .dataTables_length, + .dataTables_wrapper .dataTables_filter { + float: none; + text-align: center; + } + .dataTables_wrapper .dataTables_filter { + margin-top: 0.5em; + } +} diff --git a/AirScout/wwwroot/dashboard/assets/extra-libs/DataTables/DataTables-1.10.16/css/jquery.dataTables.min.css b/AirScout/wwwroot/dashboard/assets/extra-libs/DataTables/DataTables-1.10.16/css/jquery.dataTables.min.css new file mode 100644 index 0000000..6565b40 --- /dev/null +++ b/AirScout/wwwroot/dashboard/assets/extra-libs/DataTables/DataTables-1.10.16/css/jquery.dataTables.min.css @@ -0,0 +1 @@ +table.dataTable{width:100%;margin:0 auto;clear:both;border-collapse:separate;border-spacing:0}table.dataTable thead th,table.dataTable tfoot th{font-weight:bold}table.dataTable thead th,table.dataTable thead td{padding:10px 18px;border-bottom:1px solid #111}table.dataTable thead th:active,table.dataTable thead td:active{outline:none}table.dataTable tfoot th,table.dataTable tfoot td{padding:10px 18px 6px 18px;border-top:1px solid #111}table.dataTable thead .sorting,table.dataTable thead .sorting_asc,table.dataTable thead .sorting_desc,table.dataTable thead .sorting_asc_disabled,table.dataTable thead .sorting_desc_disabled{cursor:pointer;*cursor:hand;background-repeat:no-repeat;background-position:center right}table.dataTable thead .sorting{background-image:url("../images/sort_both.png")}table.dataTable thead .sorting_asc{background-image:url("../images/sort_asc.png")}table.dataTable thead .sorting_desc{background-image:url("../images/sort_desc.png")}table.dataTable thead .sorting_asc_disabled{background-image:url("../images/sort_asc_disabled.png")}table.dataTable thead .sorting_desc_disabled{background-image:url("../images/sort_desc_disabled.png")}table.dataTable tbody tr{background-color:#ffffff}table.dataTable tbody tr.selected{background-color:#B0BED9}table.dataTable tbody th,table.dataTable tbody td{padding:8px 10px}table.dataTable.row-border tbody th,table.dataTable.row-border tbody td,table.dataTable.display tbody th,table.dataTable.display tbody td{border-top:1px solid #ddd}table.dataTable.row-border tbody tr:first-child th,table.dataTable.row-border tbody tr:first-child td,table.dataTable.display tbody tr:first-child th,table.dataTable.display tbody tr:first-child td{border-top:none}table.dataTable.cell-border tbody th,table.dataTable.cell-border tbody td{border-top:1px solid #ddd;border-right:1px solid #ddd}table.dataTable.cell-border tbody tr th:first-child,table.dataTable.cell-border tbody tr td:first-child{border-left:1px solid #ddd}table.dataTable.cell-border tbody tr:first-child th,table.dataTable.cell-border tbody tr:first-child td{border-top:none}table.dataTable.stripe tbody tr.odd,table.dataTable.display tbody tr.odd{background-color:#f9f9f9}table.dataTable.stripe tbody tr.odd.selected,table.dataTable.display tbody tr.odd.selected{background-color:#acbad4}table.dataTable.hover tbody tr:hover,table.dataTable.display tbody tr:hover{background-color:#f6f6f6}table.dataTable.hover tbody tr:hover.selected,table.dataTable.display tbody tr:hover.selected{background-color:#aab7d1}table.dataTable.order-column tbody tr>.sorting_1,table.dataTable.order-column tbody tr>.sorting_2,table.dataTable.order-column tbody tr>.sorting_3,table.dataTable.display tbody tr>.sorting_1,table.dataTable.display tbody tr>.sorting_2,table.dataTable.display tbody tr>.sorting_3{background-color:#fafafa}table.dataTable.order-column tbody tr.selected>.sorting_1,table.dataTable.order-column tbody tr.selected>.sorting_2,table.dataTable.order-column tbody tr.selected>.sorting_3,table.dataTable.display tbody tr.selected>.sorting_1,table.dataTable.display tbody tr.selected>.sorting_2,table.dataTable.display tbody tr.selected>.sorting_3{background-color:#acbad5}table.dataTable.display tbody tr.odd>.sorting_1,table.dataTable.order-column.stripe tbody tr.odd>.sorting_1{background-color:#f1f1f1}table.dataTable.display tbody tr.odd>.sorting_2,table.dataTable.order-column.stripe tbody tr.odd>.sorting_2{background-color:#f3f3f3}table.dataTable.display tbody tr.odd>.sorting_3,table.dataTable.order-column.stripe tbody tr.odd>.sorting_3{background-color:whitesmoke}table.dataTable.display tbody tr.odd.selected>.sorting_1,table.dataTable.order-column.stripe tbody tr.odd.selected>.sorting_1{background-color:#a6b4cd}table.dataTable.display tbody tr.odd.selected>.sorting_2,table.dataTable.order-column.stripe tbody tr.odd.selected>.sorting_2{background-color:#a8b5cf}table.dataTable.display tbody tr.odd.selected>.sorting_3,table.dataTable.order-column.stripe tbody tr.odd.selected>.sorting_3{background-color:#a9b7d1}table.dataTable.display tbody tr.even>.sorting_1,table.dataTable.order-column.stripe tbody tr.even>.sorting_1{background-color:#fafafa}table.dataTable.display tbody tr.even>.sorting_2,table.dataTable.order-column.stripe tbody tr.even>.sorting_2{background-color:#fcfcfc}table.dataTable.display tbody tr.even>.sorting_3,table.dataTable.order-column.stripe tbody tr.even>.sorting_3{background-color:#fefefe}table.dataTable.display tbody tr.even.selected>.sorting_1,table.dataTable.order-column.stripe tbody tr.even.selected>.sorting_1{background-color:#acbad5}table.dataTable.display tbody tr.even.selected>.sorting_2,table.dataTable.order-column.stripe tbody tr.even.selected>.sorting_2{background-color:#aebcd6}table.dataTable.display tbody tr.even.selected>.sorting_3,table.dataTable.order-column.stripe tbody tr.even.selected>.sorting_3{background-color:#afbdd8}table.dataTable.display tbody tr:hover>.sorting_1,table.dataTable.order-column.hover tbody tr:hover>.sorting_1{background-color:#eaeaea}table.dataTable.display tbody tr:hover>.sorting_2,table.dataTable.order-column.hover tbody tr:hover>.sorting_2{background-color:#ececec}table.dataTable.display tbody tr:hover>.sorting_3,table.dataTable.order-column.hover tbody tr:hover>.sorting_3{background-color:#efefef}table.dataTable.display tbody tr:hover.selected>.sorting_1,table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_1{background-color:#a2aec7}table.dataTable.display tbody tr:hover.selected>.sorting_2,table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_2{background-color:#a3b0c9}table.dataTable.display tbody tr:hover.selected>.sorting_3,table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_3{background-color:#a5b2cb}table.dataTable.no-footer{border-bottom:1px solid #111}table.dataTable.nowrap th,table.dataTable.nowrap td{white-space:nowrap}table.dataTable.compact thead th,table.dataTable.compact thead td{padding:4px 17px 4px 4px}table.dataTable.compact tfoot th,table.dataTable.compact tfoot td{padding:4px}table.dataTable.compact tbody th,table.dataTable.compact tbody td{padding:4px}table.dataTable th.dt-left,table.dataTable td.dt-left{text-align:left}table.dataTable th.dt-center,table.dataTable td.dt-center,table.dataTable td.dataTables_empty{text-align:center}table.dataTable th.dt-right,table.dataTable td.dt-right{text-align:right}table.dataTable th.dt-justify,table.dataTable td.dt-justify{text-align:justify}table.dataTable th.dt-nowrap,table.dataTable td.dt-nowrap{white-space:nowrap}table.dataTable thead th.dt-head-left,table.dataTable thead td.dt-head-left,table.dataTable tfoot th.dt-head-left,table.dataTable tfoot td.dt-head-left{text-align:left}table.dataTable thead th.dt-head-center,table.dataTable thead td.dt-head-center,table.dataTable tfoot th.dt-head-center,table.dataTable tfoot td.dt-head-center{text-align:center}table.dataTable thead th.dt-head-right,table.dataTable thead td.dt-head-right,table.dataTable tfoot th.dt-head-right,table.dataTable tfoot td.dt-head-right{text-align:right}table.dataTable thead th.dt-head-justify,table.dataTable thead td.dt-head-justify,table.dataTable tfoot th.dt-head-justify,table.dataTable tfoot td.dt-head-justify{text-align:justify}table.dataTable thead th.dt-head-nowrap,table.dataTable thead td.dt-head-nowrap,table.dataTable tfoot th.dt-head-nowrap,table.dataTable tfoot td.dt-head-nowrap{white-space:nowrap}table.dataTable tbody th.dt-body-left,table.dataTable tbody td.dt-body-left{text-align:left}table.dataTable tbody th.dt-body-center,table.dataTable tbody td.dt-body-center{text-align:center}table.dataTable tbody th.dt-body-right,table.dataTable tbody td.dt-body-right{text-align:right}table.dataTable tbody th.dt-body-justify,table.dataTable tbody td.dt-body-justify{text-align:justify}table.dataTable tbody th.dt-body-nowrap,table.dataTable tbody td.dt-body-nowrap{white-space:nowrap}table.dataTable,table.dataTable th,table.dataTable td{box-sizing:content-box}.dataTables_wrapper{position:relative;clear:both;*zoom:1;zoom:1}.dataTables_wrapper .dataTables_length{float:left}.dataTables_wrapper .dataTables_filter{float:right;text-align:right}.dataTables_wrapper .dataTables_filter input{margin-left:0.5em}.dataTables_wrapper .dataTables_info{clear:both;float:left;padding-top:0.755em}.dataTables_wrapper .dataTables_paginate{float:right;text-align:right;padding-top:0.25em}.dataTables_wrapper .dataTables_paginate .paginate_button{box-sizing:border-box;display:inline-block;min-width:1.5em;padding:0.5em 1em;margin-left:2px;text-align:center;text-decoration:none !important;cursor:pointer;*cursor:hand;color:#333 !important;border:1px solid transparent;border-radius:2px}.dataTables_wrapper .dataTables_paginate .paginate_button.current,.dataTables_wrapper .dataTables_paginate .paginate_button.current:hover{color:#333 !important;border:1px solid #979797;background-color:white;background:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #fff), color-stop(100%, #dcdcdc));background:-webkit-linear-gradient(top, #fff 0%, #dcdcdc 100%);background:-moz-linear-gradient(top, #fff 0%, #dcdcdc 100%);background:-ms-linear-gradient(top, #fff 0%, #dcdcdc 100%);background:-o-linear-gradient(top, #fff 0%, #dcdcdc 100%);background:linear-gradient(to bottom, #fff 0%, #dcdcdc 100%)}.dataTables_wrapper .dataTables_paginate .paginate_button.disabled,.dataTables_wrapper .dataTables_paginate .paginate_button.disabled:hover,.dataTables_wrapper .dataTables_paginate .paginate_button.disabled:active{cursor:default;color:#666 !important;border:1px solid transparent;background:transparent;box-shadow:none}.dataTables_wrapper .dataTables_paginate .paginate_button:hover{color:white !important;border:1px solid #111;background-color:#585858;background:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #585858), color-stop(100%, #111));background:-webkit-linear-gradient(top, #585858 0%, #111 100%);background:-moz-linear-gradient(top, #585858 0%, #111 100%);background:-ms-linear-gradient(top, #585858 0%, #111 100%);background:-o-linear-gradient(top, #585858 0%, #111 100%);background:linear-gradient(to bottom, #585858 0%, #111 100%)}.dataTables_wrapper .dataTables_paginate .paginate_button:active{outline:none;background-color:#2b2b2b;background:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #2b2b2b), color-stop(100%, #0c0c0c));background:-webkit-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);background:-moz-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);background:-ms-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);background:-o-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);background:linear-gradient(to bottom, #2b2b2b 0%, #0c0c0c 100%);box-shadow:inset 0 0 3px #111}.dataTables_wrapper .dataTables_paginate .ellipsis{padding:0 1em}.dataTables_wrapper .dataTables_processing{position:absolute;top:50%;left:50%;width:100%;height:40px;margin-left:-50%;margin-top:-25px;padding-top:20px;text-align:center;font-size:1.2em;background-color:white;background:-webkit-gradient(linear, left top, right top, color-stop(0%, rgba(255,255,255,0)), color-stop(25%, rgba(255,255,255,0.9)), color-stop(75%, rgba(255,255,255,0.9)), color-stop(100%, rgba(255,255,255,0)));background:-webkit-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%);background:-moz-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%);background:-ms-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%);background:-o-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%);background:linear-gradient(to right, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%)}.dataTables_wrapper .dataTables_length,.dataTables_wrapper .dataTables_filter,.dataTables_wrapper .dataTables_info,.dataTables_wrapper .dataTables_processing,.dataTables_wrapper .dataTables_paginate{color:#333}.dataTables_wrapper .dataTables_scroll{clear:both}.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody{*margin-top:-1px;-webkit-overflow-scrolling:touch}.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>thead>tr>th,.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>thead>tr>td,.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>tbody>tr>th,.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>tbody>tr>td{vertical-align:middle}.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>thead>tr>th>div.dataTables_sizing,.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>thead>tr>td>div.dataTables_sizing,.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>tbody>tr>th>div.dataTables_sizing,.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>tbody>tr>td>div.dataTables_sizing{height:0;overflow:hidden;margin:0 !important;padding:0 !important}.dataTables_wrapper.no-footer .dataTables_scrollBody{border-bottom:1px solid #111}.dataTables_wrapper.no-footer div.dataTables_scrollHead table.dataTable,.dataTables_wrapper.no-footer div.dataTables_scrollBody>table{border-bottom:none}.dataTables_wrapper:after{visibility:hidden;display:block;content:"";clear:both;height:0}@media screen and (max-width: 767px){.dataTables_wrapper .dataTables_info,.dataTables_wrapper .dataTables_paginate{float:none;text-align:center}.dataTables_wrapper .dataTables_paginate{margin-top:0.5em}}@media screen and (max-width: 640px){.dataTables_wrapper .dataTables_length,.dataTables_wrapper .dataTables_filter{float:none;text-align:center}.dataTables_wrapper .dataTables_filter{margin-top:0.5em}} diff --git a/AirScout/wwwroot/dashboard/assets/extra-libs/DataTables/DataTables-1.10.16/images/sort_asc.png b/AirScout/wwwroot/dashboard/assets/extra-libs/DataTables/DataTables-1.10.16/images/sort_asc.png new file mode 100644 index 0000000000000000000000000000000000000000..e1ba61a8055fcb18273f2468d335572204667b1f GIT binary patch literal 160 zcmeAS@N?(olHy`uVBq!ia0vp^!XV7S1|*9D%+3I*bWaz@5R22v2@;zYta_*?F5u6Q zWR@in#&u+WgT?Hi<}D3B3}GOXuX|8Oj3tosHiJ3*4TN zC7>_x-r1O=t(?KoTC+`+>7&2GzdqLHBg&F)2Q?&EGZ+}|Rpsc~9`m>jw35No)z4*} HQ$iB}HK{Sd literal 0 HcmV?d00001 diff --git a/AirScout/wwwroot/dashboard/assets/extra-libs/DataTables/DataTables-1.10.16/images/sort_asc_disabled.png b/AirScout/wwwroot/dashboard/assets/extra-libs/DataTables/DataTables-1.10.16/images/sort_asc_disabled.png new file mode 100644 index 0000000000000000000000000000000000000000..fb11dfe24a6c564cb7ddf8bc96703ebb121df1e7 GIT binary patch literal 148 zcmeAS@N?(olHy`uVBq!ia0vp^!XV7S0wixl{&NRX(Vi}jAsXkC6BcOhI9!^3NY?Do zDX;f`c1`y6n0RgO@$!H7chZT&|Jn0dmaqO^XNm-CGtk!Ur<_=Jws3;%W$<+Mb6Mw<&;$T1GdZXL literal 0 HcmV?d00001 diff --git a/AirScout/wwwroot/dashboard/assets/extra-libs/DataTables/DataTables-1.10.16/images/sort_both.png b/AirScout/wwwroot/dashboard/assets/extra-libs/DataTables/DataTables-1.10.16/images/sort_both.png new file mode 100644 index 0000000000000000000000000000000000000000..af5bc7c5a10b9d6d57cb641aeec752428a07f0ca GIT binary patch literal 201 zcmeAS@N?(olHy`uVBq!ia0vp^!XV7S0wixl{&NRX6FglULp08Bycxyy87-Q;~nRxO8@-UU*I^KVWyN+&SiMHu5xDOu|HNvwzODfTdXjhVyNu1 z#7^XbGKZ7LW3XeONb$RKLeE*WhqbYpIXPIqK@r4)v+qN8um%99%MPpS9d#7Ed7SL@Bp00i_>zopr0H-Zb Aj{pDw literal 0 HcmV?d00001 diff --git a/AirScout/wwwroot/dashboard/assets/extra-libs/DataTables/DataTables-1.10.16/images/sort_desc.png b/AirScout/wwwroot/dashboard/assets/extra-libs/DataTables/DataTables-1.10.16/images/sort_desc.png new file mode 100644 index 0000000000000000000000000000000000000000..0e156deb5f61d18f9e2ec5da4f6a8c94a5b4fb41 GIT binary patch literal 158 zcmeAS@N?(olHy`uVBq!ia0vp^!XV7S1|*9D%+3I*R8JSj5R22v2@yo z(czD9$NuDl3Ljm9c#_#4$vXUz=f1~&WY3aa=h!;z7fOEN>ySP9QA=6C-^Dmb&tuM= z4Z&=WZU;2WF>e%GI&mWJk^K!jrbro{W;-I>FeCfLGJl3}+Z^2)3Kw?+EoAU?^>bP0 Hl+XkKC^j|Q{b@g3TV7E(Grjn^aLC2o)_ptHrtUEoT$S@q)~)7U@V;W{6)!%@ u>N?4t-1qslpJw9!O?PJ&w0Cby<'col-sm-6'f>>" + + "<'row'<'col-sm-12'tr>>" + + "<'row'<'col-sm-5'i><'col-sm-7'p>>", + renderer: "bootstrap", + }); + + /* Default class modification */ + $.extend(DataTable.ext.classes, { + sWrapper: "dataTables_wrapper form-inline dt-bootstrap", + sFilterInput: "form-control input-sm", + sLengthSelect: "form-control input-sm", + sProcessing: "dataTables_processing panel panel-default", + }); + + /* Bootstrap paging button renderer */ + DataTable.ext.renderer.pageButton.bootstrap = function ( + settings, + host, + idx, + buttons, + page, + pages + ) { + var api = new DataTable.Api(settings); + var classes = settings.oClasses; + var lang = settings.oLanguage.oPaginate; + var aria = settings.oLanguage.oAria.paginate || {}; + var btnDisplay, + btnClass, + counter = 0; + + var attach = function (container, buttons) { + var i, ien, node, button; + var clickHandler = function (e) { + e.preventDefault(); + if ( + !$(e.currentTarget).hasClass("disabled") && + api.page() != e.data.action + ) { + api.page(e.data.action).draw("page"); + } + }; + + for (i = 0, ien = buttons.length; i < ien; i++) { + button = buttons[i]; + + if ($.isArray(button)) { + attach(container, button); + } else { + btnDisplay = ""; + btnClass = ""; + + switch (button) { + case "ellipsis": + btnDisplay = "…"; + btnClass = "disabled"; + break; + + case "first": + btnDisplay = lang.sFirst; + btnClass = button + (page > 0 ? "" : " disabled"); + break; + + case "previous": + btnDisplay = lang.sPrevious; + btnClass = button + (page > 0 ? "" : " disabled"); + break; + + case "next": + btnDisplay = lang.sNext; + btnClass = button + (page < pages - 1 ? "" : " disabled"); + break; + + case "last": + btnDisplay = lang.sLast; + btnClass = button + (page < pages - 1 ? "" : " disabled"); + break; + + default: + btnDisplay = button + 1; + btnClass = page === button ? "active" : ""; + break; + } + + if (btnDisplay) { + node = $("
  • ", { + class: classes.sPageButton + " " + btnClass, + id: + idx === 0 && typeof button === "string" + ? settings.sTableId + "_" + button + : null, + }) + .append( + $("", { + href: "#", + "aria-controls": settings.sTableId, + "aria-label": aria[button], + "data-dt-idx": counter, + tabindex: settings.iTabIndex, + }).html(btnDisplay) + ) + .appendTo(container); + + settings.oApi._fnBindAction(node, { action: button }, clickHandler); + + counter++; + } + } + } + }; + + // IE9 throws an 'unknown error' if document.activeElement is used + // inside an iframe or frame. + var activeEl; + + try { + // Because this approach is destroying and recreating the paging + // elements, focus is lost on the select button which is bad for + // accessibility. So we want to restore focus once the draw has + // completed + activeEl = $(host).find(document.activeElement).data("dt-idx"); + } catch (e) {} + + attach( + $(host).empty().html('