├── .gitattributes
├── .github
├── ISSUE_TEMPLATE
│ ├── bug_report.md
│ └── feature_request.md
└── workflows
│ └── GS.CI.yml
├── .gitignore
├── AlignmentModelTests
├── AlignmentModelTests.csproj
├── AlignmentPointTests.cs
├── PolarCartesTests.cs
├── Properties
│ └── AssemblyInfo.cs
├── SphericalPolarTests.cs
├── app.config
└── packages.config
├── ColorPicker
├── ASCOM.snk
├── ColorDialog.xaml
├── ColorDialog.xaml.cs
├── ColorPicker.csproj
├── ColorPicker.xaml
├── ColorPicker.xaml.cs
└── Images
│ ├── ColorSwatchCircle.png
│ ├── ColorSwatchSquare.png
│ └── ColorSwatchSquare2.png
├── Directory.Build.props
├── Docs
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
└── Sshot_GSSMain1.jpg
├── GS.Ascom.SkyTelescope
├── ASCOM.GS.Sky.Telescope.csproj
├── CommandStrings.cs
├── GlobalSuppressions.cs
├── Rates.cs
├── Resources
│ ├── ASCOM.snk
│ ├── Resource.Designer.cs
│ └── Resource.resx
├── Telescope.cs
└── app.config
├── GS.ChartViewer
├── App.config
├── App.xaml
├── App.xaml.cs
├── Controls
│ ├── Dialogs
│ │ ├── Dialog.xaml
│ │ ├── Dialog.xaml.cs
│ │ ├── ErrorMessageDialog.xaml
│ │ ├── ErrorMessageDialog.xaml.cs
│ │ └── ErrorMessageDialogVM.cs
│ ├── WindowTitleBar.xaml
│ └── WindowTitleBar.xaml.cs
├── GS.ChartViewer.csproj
├── Helpers
│ ├── ObservableObject.cs
│ └── Settings.cs
├── Main
│ ├── MainWindowV.xaml
│ ├── MainWindowV.xaml.cs
│ └── MainWindowVM.cs
├── Properties
│ ├── ChartViewer.Designer.cs
│ └── ChartViewer.settings
└── Resources
│ ├── ASCOM.snk
│ ├── GSS ChartViewer.jpg
│ └── greenswamp1.ico
├── GS.FitsImageManager
├── Binning.cs
├── FitsHeader.cs
├── FitsHeaderItem.cs
├── GS.FitsImageManager.csproj
├── Header Value Converters
│ ├── BoolStringConverter.cs
│ ├── ComplexStringConverter.cs
│ ├── DateTimeStringConverter.cs
│ ├── DoubleStringConverter.cs
│ ├── FloatStringConverter.cs
│ ├── HeaderValueConverterBase.cs
│ ├── IntegerStringConverter.cs
│ └── StringStringConverter.cs
├── IFitsHeaderItem.cs
├── ImageManager.cs
├── Resources
│ └── ASCOM.snk
├── Wrapper.cs
└── cfitsio
│ ├── cfitsio_32.dll
│ └── cfitsio_64.dll
├── GS.Principle
├── Alignment.cs
├── Calculations.cs
├── Conversions.cs
├── Coordinate.cs
├── DSP.cs
├── GS.Principles.csproj
├── HiResDateTime.cs
├── JDate.cs
├── MediaTimer.cs
├── NativeMethods.cs
├── Range.cs
├── Resources
│ └── ASCOM.snk
├── StopwatchTimer.cs
├── Time.cs
└── Units.cs
├── GS.Server
├── Alignment
│ ├── AlignmentModel.cs
│ ├── AlignmentModel_EqModVector.cs
│ ├── AlignmentModel_EqmodAlignment.cs
│ ├── AlignmentModel_Goto.cs
│ ├── AlignmentModel_Math.cs
│ ├── AlignmentPoint.cs
│ ├── AlignmentSettings.cs
│ ├── AlignmentV.xaml
│ ├── AlignmentV.xaml.cs
│ ├── AlignmentVM.cs
│ ├── AxisPosition.cs
│ ├── EqascomDataTypes.cs
│ └── MapResult.cs
├── App.config
├── App.xaml
├── App.xaml.cs
├── AutoHome
│ ├── AutohomeSim.cs
│ └── AutohomeSky.cs
├── Cdc
│ ├── CdcDialog.xaml
│ ├── CdcDialog.xaml.cs
│ └── CdcServer.cs
├── ClassDiagram1.cd
├── Controls
│ ├── AltAzGauges.xaml
│ ├── AltAzGauges.xaml.cs
│ ├── AltAzGoTo.xaml
│ ├── AltAzGoTo.xaml.cs
│ ├── Backlash.xaml
│ ├── Backlash.xaml.cs
│ ├── BottomStatusBar.xaml
│ ├── BottomStatusBar.xaml.cs
│ ├── Dialogs
│ │ ├── AltGoToDecimal.xaml
│ │ ├── AltGoToDecimal.xaml.cs
│ │ ├── AutoHomeDialog.xaml
│ │ ├── AutoHomeDialog.xaml.cs
│ │ ├── AzGoToDecimal.xaml
│ │ ├── AzGoToDecimal.xaml.cs
│ │ ├── AzGoToDialog.xaml
│ │ ├── AzGoToDialog.xaml.cs
│ │ ├── CapabilitiesDialog.xaml
│ │ ├── CapabilitiesDialog.xaml.cs
│ │ ├── CloseDialog.xaml
│ │ ├── CloseDialog.xaml.cs
│ │ ├── CustomGearingDialog.xaml
│ │ ├── CustomGearingDialog.xaml.cs
│ │ ├── DecGoToDecimal.xaml
│ │ ├── DecGoToDecimal.xaml.cs
│ │ ├── DialogOK.xaml
│ │ ├── DialogOK.xaml.cs
│ │ ├── DownloadUpdateDialog.xaml
│ │ ├── DownloadUpdateDialog.xaml.cs
│ │ ├── ErrorMessageDialog.xaml
│ │ ├── ErrorMessageDialog.xaml.cs
│ │ ├── ErrorMessageDialogVM.cs
│ │ ├── FlipAzDirDialog.xaml
│ │ ├── FlipAzDirDialog.xaml.cs
│ │ ├── FlipDialog.xaml
│ │ ├── FlipDialog.xaml.cs
│ │ ├── HcOptionsDialog.xaml
│ │ ├── HcOptionsDialog.xaml.cs
│ │ ├── HcPulseGuidesDialog.xaml
│ │ ├── HcPulseGuidesDialog.xaml.cs
│ │ ├── HomeDialog.xaml
│ │ ├── HomeDialog.xaml.cs
│ │ ├── LatLongDialog.xaml
│ │ ├── LatLongDialog.xaml.cs
│ │ ├── LimitDialog.xaml
│ │ ├── LimitDialog.xaml.cs
│ │ ├── MountInfoDialog.xaml
│ │ ├── MountInfoDialog.xaml.cs
│ │ ├── ParkAddDialog.xaml
│ │ ├── ParkAddDialog.xaml.cs
│ │ ├── ParkDeleteDialog.xaml
│ │ ├── ParkDeleteDialog.xaml.cs
│ │ ├── ParkDialog.xaml
│ │ ├── ParkDialog.xaml.cs
│ │ ├── PpecDialog.xaml
│ │ ├── PpecDialog.xaml.cs
│ │ ├── RaGoToDecimal.xaml
│ │ ├── RaGoToDecimal.xaml.cs
│ │ ├── RaGoToDialog.xaml
│ │ ├── RaGoToDialog.xaml.cs
│ │ ├── RaGoToSyncDialog.xaml
│ │ ├── RaGoToSyncDialog.xaml.cs
│ │ ├── ReSyncDialog.xaml
│ │ ├── ReSyncDialog.xaml.cs
│ │ ├── ResetSettingsDialog.xaml
│ │ ├── ResetSettingsDialog.xaml.cs
│ │ ├── SchedulerDialog.xaml
│ │ ├── SchedulerDialog.xaml.cs
│ │ ├── Snap1DitherDialog.xaml
│ │ ├── Snap1DitherDialog.xaml.cs
│ │ ├── Snap2DitherDialog.xaml
│ │ ├── Snap2DitherDialog.xaml.cs
│ │ ├── SpiralFovDialog.xaml
│ │ ├── SpiralFovDialog.xaml.cs
│ │ ├── SpiralGoToDialog.xaml
│ │ └── SpiralGoToDialog.xaml.cs
│ ├── HandController.xaml
│ ├── HandController.xaml.cs
│ ├── HelixViewport3D.xaml
│ ├── HelixViewport3D.xaml.cs
│ ├── PPECBar.xaml
│ ├── PPECBar.xaml.cs
│ ├── RaDecGauges.xaml
│ ├── RaDecGauges.xaml.cs
│ ├── RaDecGoTo.xaml
│ ├── RaDecGoTo.xaml.cs
│ ├── StandardButtonBar.xaml
│ ├── StandardButtonBar.xaml.cs
│ ├── TabBar.xaml
│ ├── TabBar.xaml.cs
│ ├── TopCoordsBar.xaml
│ ├── TopCoordsBar.xaml.cs
│ ├── WindowTitleBar.xaml
│ ├── WindowTitleBar.xaml.cs
│ ├── WindowTitleBarBasic.xaml
│ └── WindowTitleBarBasic.xaml.cs
├── Domain
│ ├── BoolOpToVisConverter.cs
│ ├── BoolToVisClapConverter.cs
│ ├── BoolToVisConverter.cs
│ ├── BoolToVisHideConverter.cs
│ ├── ColorToBrushConverter.cs
│ ├── ComparisonConverter.cs
│ ├── DoubleValidationRule .cs
│ ├── EnumBooleanConverter .cs
│ ├── EnumToVisibilityConverter.cs
│ ├── FlowDocumentToXamlConverter.cs
│ ├── FutureDateValidationRule.cs
│ ├── HyperlinkExtensions.cs
│ ├── IntValidationRule.cs
│ ├── InvertBooleanConvertor.cs
│ ├── IpAddressValidationRule.cs
│ ├── RadioButtonCheckedConverter.cs
│ ├── SimpleDateValidationRule.cs
│ └── UtcToLocalDateTimeConverter .cs
├── Focuser
│ ├── FocuserSettings.cs
│ ├── FocuserV.xaml
│ ├── FocuserV.xaml.cs
│ └── FocuserVM.cs
├── GS.Server.csproj
├── GSServer.cs
├── Gamepad
│ ├── GamePadDirectX.cs
│ ├── GamePadXInput.cs
│ ├── Gamepad.cs
│ ├── GamepadSettings.cs
│ ├── GamepadV.xaml
│ ├── GamepadV.xaml.cs
│ ├── GamepadVM.cs
│ └── IGamepad.cs
├── Gps
│ ├── GpsDialog.xaml
│ ├── GpsDialog.xaml.cs
│ └── GpsHardware.cs
├── Helpers
│ ├── ClassFactory.cs
│ ├── Memory.cs
│ ├── NativeMethods.cs
│ ├── ObjectBase.cs
│ ├── ObservableObject.cs
│ ├── SleepMode.cs
│ └── Synthesizer.cs
├── Keys
│ ├── GSKey.snk
│ └── GSpublic.snk
├── Main
│ ├── IPageVM.cs
│ ├── MainWindow.xaml
│ ├── MainWindow.xaml.cs
│ └── MainWindowVM.cs
├── Model3D
│ ├── Model3DV.xaml
│ ├── Model3DV.xaml.cs
│ └── Model3DVM.cs
├── Models
│ ├── Default.obj
│ ├── DefaultAltAz.obj
│ ├── Reflector.obj
│ ├── ReflectorAltAz.obj
│ ├── Refractor.obj
│ ├── RefractorAltAz.obj
│ ├── RitcheyChretien.obj
│ ├── RitcheyChretienAltAz.obj
│ ├── RitcheyChretienTruss.obj
│ ├── RitcheyChretienTrussAltAz.obj
│ ├── SchmidtCassegrain.obj
│ ├── SchmidtCassegrainAltAz.obj
│ ├── compassN.png
│ └── compassS.png
├── Notes
│ ├── DocumentPaginatorWrapper.cs
│ ├── NotesTemplates
│ │ └── NotesLog.rtf
│ ├── NotesV.xaml
│ ├── NotesV.xaml.cs
│ └── NotesVM.cs
├── Pec
│ ├── PecV.xaml
│ ├── PecV.xaml.cs
│ └── PecVM.cs
├── Phd
│ ├── Guider.cs
│ └── GuiderImpl.cs
├── Plot
│ ├── PlotV.xaml
│ ├── PlotV.xaml.cs
│ └── PlotVM.cs
├── PoleLocator
│ ├── PoleLocatorV.xaml
│ ├── PoleLocatorV.xaml.cs
│ └── PoleLocatorVM.cs
├── Properties
│ ├── Alignment.Designer.cs
│ ├── Alignment.settings
│ ├── Focuser.Designer.cs
│ ├── Focuser.settings
│ ├── Gamepad.Designer.cs
│ ├── Gamepad.settings
│ ├── Server.Designer.cs
│ ├── Server.settings
│ ├── SkyTelescope.Designer.cs
│ ├── SkyTelescope.settings
│ └── launchSettings.json
├── Pulses
│ ├── HCPulses.cs
│ ├── PulsesV.xaml
│ ├── PulsesV.xaml.cs
│ └── PulsesVM.cs
├── Resources
│ ├── ASCOM.snk
│ ├── Horsehead.png
│ ├── IC1396.png
│ ├── License.txt
│ ├── M33.png
│ ├── NGC6992.png
│ ├── Orion.png
│ ├── Vectors.xaml
│ └── greenswamp1.ico
├── Settings
│ ├── Settings.cs
│ ├── SettingsV.xaml
│ ├── SettingsV.xaml.cs
│ └── SettingsVM.cs
├── SkyTelescope
│ ├── Axes.cs
│ ├── AxesRateOfChange.cs
│ ├── Enums.cs
│ ├── Exceptions.cs
│ ├── HcLastMove.cs
│ ├── ParkPosition.cs
│ ├── SkyPredictor.cs
│ ├── SkyServer.cs
│ ├── SkySettings.cs
│ ├── SkySystem.cs
│ ├── SkyTelescopeV.xaml
│ ├── SkyTelescopeV.xaml.cs
│ ├── SkyTelescopeVM.cs
│ └── Transforms.cs
├── Snap
│ ├── SnapV.xaml
│ ├── SnapV.xaml.cs
│ └── SnapVM.cs
├── Windows
│ ├── ButtonsControlV.xaml
│ ├── ButtonsControlV.xaml.cs
│ ├── ButtonsControlVM.cs
│ ├── HandControlV.xaml
│ ├── HandControlV.xaml.cs
│ ├── HandControlVM.cs
│ ├── HcPulseGuidesV.xaml
│ ├── HcPulseGuidesV.xaml.cs
│ ├── HcPulseGuidesVM.cs
│ ├── MessageControlV.xaml
│ ├── MessageControlV.xaml.cs
│ ├── MessageControlVM.cs
│ ├── ModelV.xaml
│ ├── ModelV.xaml.cs
│ ├── ModelVM.cs
│ ├── SpiralV.xaml
│ ├── SpiralV.xaml.cs
│ └── SpiralVM.cs
├── app.manifest
└── greenswamp1.ico
├── GS.Shared
├── ChartLogging.cs
├── Command
│ └── RelayCommand.cs
├── Comparer.cs
├── Domain
│ ├── DebugConverter .cs
│ ├── EnumBindingSourceExtension.cs
│ ├── EnumTypeConverter.cs
│ ├── EnumUtils.cs
│ ├── EnumValueBindingSourceExtension.cs
│ ├── EnumValueToDescriptionConverter.cs
│ ├── NotEmptyValidationRule.cs
│ ├── NotifyPropertyChangedExtension.cs
│ ├── NullImageConverter.cs
│ ├── OrdinalConverter.cs
│ └── TextBoxMaskBehavior.cs
├── Enums.cs
├── GS.Shared.csproj
├── GSColors.cs
├── GSFile.cs
├── GssAttribute.cs
├── HTML.cs
├── LanguageFiles
│ ├── GSChart_de-DE.xaml
│ ├── GSChart_en-US.xaml
│ ├── GSChart_fr-FR.xaml
│ ├── GSChart_it-IT.xaml
│ ├── GSServer_de-DE.xaml
│ ├── GSServer_en-US.xaml
│ ├── GSServer_fr-FR.xaml
│ ├── GSServer_it-IT.xaml
│ ├── GSUtil_de-DE.xaml
│ ├── GSUtil_en-US.xaml
│ ├── GSUtil_fr-FR.xaml
│ └── GSUtil_it-IT.xaml
├── Languages.cs
├── Languages
│ ├── StringResChart_en-us.xaml
│ ├── StringResServer_en-us.xaml
│ └── StringResUtil_en-us.xaml
├── Model3D.cs
├── Monitor.cs
├── MonitorQueue.cs
├── Numbers.cs
├── Properties
│ ├── Monitor.Designer.cs
│ └── Monitor.settings
├── Resources
│ └── ASCOM.snk
├── Settings.cs
├── Strings.cs
├── SystemInfo.cs
├── Tasks.cs
├── ThreadContext.cs
├── Transport
│ ├── DiscoveryState.cs
│ ├── GSSerialPort.cs
│ ├── ISerialPort.cs
│ └── SerialOverUdpPort.cs
├── WaitCursor.cs
└── app.config
├── GS.Simulator
├── Actions.cs
├── AxisStatus.cs
├── Commands.cs
├── Controllers.cs
├── Enums.cs
├── GS.Simulator.csproj
├── IOSerial.cs
├── MountException.cs
├── MountInfo.cs
├── MountQueue.cs
└── Resources
│ └── ASCOM.snk
├── GS.SkyApi
├── GS.SkyApi.csproj
├── Resources
│ └── ASCOM.snk
├── Sky.cs
├── SkyScripts
│ ├── Basic.ps1
│ ├── Capabilities.ps1
│ ├── Encoders.ps1
│ ├── MemberList.ps1
│ ├── MotionMode.ps1
│ ├── Move10Degrees.ps1
│ ├── Move10Seconds.ps1
│ ├── Park.ps1
│ ├── Settings.ps1
│ ├── SimGotoSpeed.ps1
│ └── Versions.ps1
└── app.config
├── GS.SkyWatcher
├── Commands.cs
├── GS.SkyWatcher.csproj
├── Resources
│ └── ASCOM.snk
├── SharedResources.cs
├── SkyCommands.cs
├── SkyQueue.cs
└── SkyWatcher.cs
├── GS.Utilities
├── App.config
├── App.xaml
├── App.xaml.cs
├── Controls
│ ├── Dialogs
│ │ ├── DelFilesDialog.xaml
│ │ ├── DelFilesDialog.xaml.cs
│ │ ├── Dialog.xaml
│ │ ├── Dialog.xaml.cs
│ │ ├── ErrorMessageDialog.xaml
│ │ ├── ErrorMessageDialog.xaml.cs
│ │ ├── ErrorMessageDialogVM.cs
│ │ ├── TwoButtonMessageDialog.xaml
│ │ ├── TwoButtonMessageDialog.xaml.cs
│ │ └── TwoButtonMessageDialogVM.cs
│ ├── WindowTitleBar.xaml
│ └── WindowTitleBar.xaml.cs
├── GS.Utilities.csproj
├── Helpers
│ ├── FileUtil.cs
│ ├── NativeMethods.cs
│ ├── ObservableObject.cs
│ └── Settings.cs
├── Main
│ ├── MainWindowV.xaml
│ ├── MainWindowV.xaml.cs
│ └── MainWindowVM.cs
├── Properties
│ ├── Utilities.Designer.cs
│ └── Utilities.settings
├── Resources
│ ├── ASCOM.snk
│ ├── GSS Cleaner.jpg
│ └── greenswamp1.ico
└── greenswamp1.ico
├── GSResharper.DotSettings
├── GSSolution.sln
├── GSSolution.sln.DotSettings
├── LICENSE
├── NINA
├── Model
│ ├── ApplicationStatus.cs
│ ├── IDevice.cs
│ └── MyFocuser
│ │ ├── AbsoluteAscomFocuser.cs
│ │ ├── AscomFocuser.cs
│ │ ├── AscomFocuserProvider.cs
│ │ ├── IAscomFocuserProvider.cs
│ │ ├── IFocuser.cs
│ │ ├── IFocuserV3Ex.cs
│ │ └── RelativeAscomFocuser.cs
├── NINA.csproj
├── Resources
│ └── ASCOM.snk
├── Utility
│ ├── AsyncCommand.cs
│ ├── AsyncObservableCollection.cs
│ ├── NotifyTaskCompletion.cs
│ └── Utility.cs
└── ViewModel
│ └── Equipment
│ └── Focuser
│ └── FocuserChooserVM.cs
├── NStarAlignment
├── DataTypes
│ ├── AlignmentPoint.cs
│ ├── AlignmentStar.cs
│ ├── Angle.cs
│ ├── AxisPosition.cs
│ ├── CarteseanCoordinate.cs
│ ├── Matrix.cs
│ ├── SphericalCoordinate.cs
│ └── TimeRecord.cs
├── Model
│ ├── AlignmentModel.cs
│ ├── AlignmentModel_AlignmentStars.cs
│ └── AlignmentModel_Goto.cs
├── NStarAlignment.csproj
├── Properties
│ ├── AssemblyInfo.cs
│ ├── Resources.Designer.cs
│ └── Resources.resx
├── Resources
│ ├── ASCOM.snk
│ └── SampleCodeForGeneratingTestData.txt
└── Utilities
│ ├── AstroConvert.cs
│ ├── EnumTypeConverter.cs
│ └── Range.cs
├── README.md
├── Resources
├── Installer
│ ├── GSCertScript.ps1
│ ├── GreenSwampSetup.iss
│ ├── License.txt
│ ├── WizardImage.bmp
│ ├── WizardImage1.bmp
│ └── greenswamp2.ico
└── Manuals
│ ├── GSS Manual.docx
│ ├── GSS Manual.pdf
│ ├── Graphics
│ ├── 3d.jpg
│ ├── CableToMount.jpg
│ ├── GamePad.jpg
│ ├── MainWindow.jpg
│ ├── MainWindow.pdn
│ ├── Monitor.jpg
│ ├── Notes.jpg
│ ├── Options.jpg
│ ├── Options1.jpg
│ ├── Pulses.jpg
│ ├── PulsesSettings.jpg
│ ├── Settings.jpg
│ └── SettingsPanel.jpg
│ └── Swamp Witch.ttf
├── XInputDotNetPure
├── GamePad.cs
├── Properties
│ └── AssemblyInfo.cs
├── Utils.cs
└── XInputDotNetPure.csproj
└── XInputInterface
├── Common.h
├── GamePad.cpp
├── GamePad.h
└── XInputInterface.vcxproj
/.github/ISSUE_TEMPLATE/bug_report.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Bug report
3 | about: Create a report to help us improve
4 | title: ''
5 | labels: ''
6 | assignees: ''
7 |
8 | ---
9 |
10 | **Describe the bug**
11 | A clear and concise description of what the bug is.
12 |
13 | **To Reproduce**
14 | Steps to reproduce the behavior:
15 | 1. Go to '...'
16 | 2. Click on '....'
17 | 3. Scroll down to '....'
18 | 4. See error
19 |
20 | **Expected behavior**
21 | A clear and concise description of what you expected to happen.
22 |
23 | **Screenshots**
24 | If applicable, add screenshots to help explain your problem.
25 |
26 | **Desktop (please complete the following information):**
27 | - OS: [e.g. iOS]
28 | - Browser [e.g. chrome, safari]
29 | - Version [e.g. 22]
30 |
31 | **Smartphone (please complete the following information):**
32 | - Device: [e.g. iPhone6]
33 | - OS: [e.g. iOS8.1]
34 | - Browser [e.g. stock browser, safari]
35 | - Version [e.g. 22]
36 |
37 | **Additional context**
38 | Add any other context about the problem here.
39 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/feature_request.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Feature request
3 | about: Suggest an idea for this project
4 | title: ''
5 | labels: ''
6 | assignees: ''
7 |
8 | ---
9 |
10 | **Is your feature request related to a problem? Please describe.**
11 | A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
12 |
13 | **Describe the solution you'd like**
14 | A clear and concise description of what you want to happen.
15 |
16 | **Describe alternatives you've considered**
17 | A clear and concise description of any alternative solutions or features you've considered.
18 |
19 | **Additional context**
20 | Add any other context or screenshots about the feature request here.
21 |
--------------------------------------------------------------------------------
/AlignmentModelTests/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.CompilerServices;
3 | using System.Runtime.InteropServices;
4 |
5 | [assembly: AssemblyTitle("AlignmentModelTests")]
6 | [assembly: AssemblyDescription("")]
7 | [assembly: AssemblyConfiguration("")]
8 | [assembly: AssemblyCompany("")]
9 | [assembly: AssemblyProduct("AlignmentModelTests")]
10 | [assembly: AssemblyCopyright("Copyright © 2023")]
11 | [assembly: AssemblyTrademark("")]
12 | [assembly: AssemblyCulture("")]
13 |
14 | [assembly: ComVisible(false)]
15 |
16 | [assembly: Guid("d814704d-79cb-49df-bd81-8241ee9a8272")]
17 |
18 | // [assembly: AssemblyVersion("1.0.*")]
19 | [assembly: AssemblyVersion("1.0.0.0")]
20 | [assembly: AssemblyFileVersion("1.0.0.0")]
21 |
--------------------------------------------------------------------------------
/AlignmentModelTests/app.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/AlignmentModelTests/packages.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/ColorPicker/ASCOM.snk:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rmorgan001/GSServer/6d156bb0755f231859aee11ea85b1f9f51d3cf66/ColorPicker/ASCOM.snk
--------------------------------------------------------------------------------
/ColorPicker/ColorDialog.xaml:
--------------------------------------------------------------------------------
1 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/ColorPicker/ColorDialog.xaml.cs:
--------------------------------------------------------------------------------
1 | using System.Windows;
2 | using System.Windows.Input;
3 | using System.Windows.Media;
4 |
5 | namespace ColorPicker
6 | {
7 | ///
8 | /// Holds a ColorPicker control, and exposes
9 | /// the ColorPicker.SelectedColor
10 | ///
11 | public partial class ColorDialog
12 | {
13 | #region Ctor
14 | public ColorDialog()
15 | {
16 | InitializeComponent();
17 | }
18 | #endregion
19 |
20 | #region Public Properties
21 | public Color SelectedColor
22 | {
23 | get => colorPicker.SelectedColor;
24 | set => colorPicker.SelectedColor = value;
25 | }
26 | #endregion
27 |
28 | #region Private Methods
29 | ///
30 | /// Closes the dialog on Enter key pressed
31 | ///
32 | private void Window_KeyDown(object sender, KeyEventArgs e)
33 | {
34 | if (e.Key == Key.Enter)
35 | {
36 | Close();
37 | }
38 | }
39 |
40 | ///
41 | /// User is happy with choice
42 | ///
43 | private void BtnOk_Click(object sender, RoutedEventArgs e)
44 | {
45 | DialogResult = true;
46 | }
47 |
48 | ///
49 | /// User is not happy with choice
50 | ///
51 | private void BtnCancel_Click(object sender, RoutedEventArgs e)
52 | {
53 | DialogResult = false;
54 | }
55 | #endregion
56 | }
57 | }
58 |
--------------------------------------------------------------------------------
/ColorPicker/Images/ColorSwatchCircle.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rmorgan001/GSServer/6d156bb0755f231859aee11ea85b1f9f51d3cf66/ColorPicker/Images/ColorSwatchCircle.png
--------------------------------------------------------------------------------
/ColorPicker/Images/ColorSwatchSquare.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rmorgan001/GSServer/6d156bb0755f231859aee11ea85b1f9f51d3cf66/ColorPicker/Images/ColorSwatchSquare.png
--------------------------------------------------------------------------------
/ColorPicker/Images/ColorSwatchSquare2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rmorgan001/GSServer/6d156bb0755f231859aee11ea85b1f9f51d3cf66/ColorPicker/Images/ColorSwatchSquare2.png
--------------------------------------------------------------------------------
/Directory.Build.props:
--------------------------------------------------------------------------------
1 |
2 |
3 | Rob Morgan
4 | GS Server
5 | GS Server
6 | en
7 | Copyright © GreenSwamp Software 2019-2025
8 | 1.0.9.3
9 | 1.0.9.3
10 | 1.0.9.3
11 | 1.0.9.3
12 |
13 |
--------------------------------------------------------------------------------
/Docs/Sshot_GSSMain1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rmorgan001/GSServer/6d156bb0755f231859aee11ea85b1f9f51d3cf66/Docs/Sshot_GSSMain1.jpg
--------------------------------------------------------------------------------
/GS.Ascom.SkyTelescope/GlobalSuppressions.cs:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rmorgan001/GSServer/6d156bb0755f231859aee11ea85b1f9f51d3cf66/GS.Ascom.SkyTelescope/GlobalSuppressions.cs
--------------------------------------------------------------------------------
/GS.Ascom.SkyTelescope/Resources/ASCOM.snk:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rmorgan001/GSServer/6d156bb0755f231859aee11ea85b1f9f51d3cf66/GS.Ascom.SkyTelescope/Resources/ASCOM.snk
--------------------------------------------------------------------------------
/GS.Ascom.SkyTelescope/app.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/GS.ChartViewer/App.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 | 500
15 |
16 |
17 | 800
18 |
19 |
20 | 0
21 |
22 |
23 | 0
24 |
25 |
26 |
27 |
28 |
29 | Normal
30 |
31 |
32 | en-US
33 |
34 |
35 |
36 |
--------------------------------------------------------------------------------
/GS.ChartViewer/Controls/Dialogs/Dialog.xaml:
--------------------------------------------------------------------------------
1 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
16 |
20 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/GS.ChartViewer/Controls/Dialogs/Dialog.xaml.cs:
--------------------------------------------------------------------------------
1 | using System.Runtime.InteropServices;
2 |
3 | namespace GS.ChartViewer.Controls.Dialogs
4 | {
5 | ///
6 | /// Interaction logic for Window1.xaml
7 | ///
8 | [ComVisible(false)]
9 | public partial class Dialog
10 | {
11 | public Dialog()
12 | {
13 | InitializeComponent();
14 | }
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/GS.ChartViewer/Controls/Dialogs/ErrorMessageDialog.xaml:
--------------------------------------------------------------------------------
1 |
9 |
10 |
11 |
12 |
13 |
14 |
17 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/GS.ChartViewer/Controls/Dialogs/ErrorMessageDialog.xaml.cs:
--------------------------------------------------------------------------------
1 | using System.Runtime.InteropServices;
2 |
3 | namespace GS.ChartViewer.Controls.Dialogs
4 | {
5 | ///
6 | /// Interaction logic for ErrorMessageDialog.xaml
7 | ///
8 | [ComVisible(false)]
9 | public partial class ErrorMessageDialog
10 | {
11 | public ErrorMessageDialog()
12 | {
13 | InitializeComponent();
14 | }
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/GS.ChartViewer/Controls/Dialogs/ErrorMessageDialogVM.cs:
--------------------------------------------------------------------------------
1 | /*Copyright(C) 2019-2025Rob Morgan (robert.morgan.e@gmail.com)
2 |
3 | This program is free software: you can redistribute it and/or modify
4 | it under the terms of the GNU General Public License as published
5 | by the Free Software Foundation, either version 3 of the License, or
6 | (at your option) any later version.
7 |
8 | This program is distributed in the hope that it will be useful,
9 | but WITHOUT ANY WARRANTY; without even the implied warranty of
10 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 | GNU General Public License for more details.
12 |
13 | You should have received a copy of the GNU General Public License
14 | along with this program. If not, see .
15 | */
16 |
17 | using System;
18 | using System.ComponentModel;
19 | using GS.Shared.Domain;
20 |
21 | namespace GS.ChartViewer.Controls.Dialogs
22 | {
23 | class ErrorMessageDialogVM : INotifyPropertyChanged
24 | {
25 | private string _name;
26 | public string Name
27 | {
28 | get => _name;
29 | set => this.MutateVerbose(ref _name, value, RaisePropertyChanged());
30 | }
31 |
32 | public event PropertyChangedEventHandler PropertyChanged;
33 |
34 | private Action RaisePropertyChanged()
35 | {
36 | return args => PropertyChanged?.Invoke(this, args);
37 | }
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/GS.ChartViewer/Controls/WindowTitleBar.xaml.cs:
--------------------------------------------------------------------------------
1 | using System.Runtime.InteropServices;
2 |
3 | namespace GS.ChartViewer.Controls
4 | {
5 | ///
6 | /// Interaction logic for TopCoordsBar.xaml
7 | ///
8 | [ComVisible(false)]
9 | public partial class WindowTitleBar
10 | {
11 | public WindowTitleBar()
12 | {
13 | InitializeComponent();
14 | }
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/GS.ChartViewer/Properties/ChartViewer.settings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | 500
7 |
8 |
9 | 800
10 |
11 |
12 | 0
13 |
14 |
15 | 0
16 |
17 |
18 |
19 |
20 |
21 | Normal
22 |
23 |
24 | en-US
25 |
26 |
27 |
--------------------------------------------------------------------------------
/GS.ChartViewer/Resources/ASCOM.snk:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rmorgan001/GSServer/6d156bb0755f231859aee11ea85b1f9f51d3cf66/GS.ChartViewer/Resources/ASCOM.snk
--------------------------------------------------------------------------------
/GS.ChartViewer/Resources/GSS ChartViewer.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rmorgan001/GSServer/6d156bb0755f231859aee11ea85b1f9f51d3cf66/GS.ChartViewer/Resources/GSS ChartViewer.jpg
--------------------------------------------------------------------------------
/GS.ChartViewer/Resources/greenswamp1.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rmorgan001/GSServer/6d156bb0755f231859aee11ea85b1f9f51d3cf66/GS.ChartViewer/Resources/greenswamp1.ico
--------------------------------------------------------------------------------
/GS.FitsImageManager/FitsHeader.cs:
--------------------------------------------------------------------------------
1 | /* Copyright(C) 2019-2025 Rob Morgan (robert.morgan.e@gmail.com)
2 |
3 | This program is free software: you can redistribute it and/or modify
4 | it under the terms of the GNU General Public License as published
5 | by the Free Software Foundation, either version 3 of the License, or
6 | (at your option) any later version.
7 |
8 | This program is distributed in the hope that it will be useful,
9 | but WITHOUT ANY WARRANTY; without even the implied warranty of
10 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 | GNU General Public License for more details.
12 |
13 | You should have received a copy of the GNU General Public License
14 | along with this program. If not, see .
15 | */
16 | using System.Collections.Generic;
17 | using System.Linq;
18 | using System.Text;
19 |
20 | namespace GS.FitsImageManager
21 | {
22 | public class FitsHeader : List
23 | {
24 | public override string ToString()
25 | {
26 | var sb = new StringBuilder();
27 |
28 | for ( var n = 0; n < Count; ++n )
29 | {
30 | var item = this.ElementAt( n );
31 |
32 | sb.AppendLine( item.ToString() );
33 | }
34 |
35 | return sb.ToString();
36 | }
37 |
38 | public FitsHeaderItem GetItemByKeyName( string keyName )
39 | {
40 | return this.FirstOrDefault(i => i.KeyName == keyName);
41 | }
42 | }
43 | }
44 |
--------------------------------------------------------------------------------
/GS.FitsImageManager/Header Value Converters/BoolStringConverter.cs:
--------------------------------------------------------------------------------
1 | /* Copyright(C) 2019-2025 Rob Morgan (robert.morgan.e@gmail.com)
2 |
3 | This program is free software: you can redistribute it and/or modify
4 | it under the terms of the GNU General Public License as published
5 | by the Free Software Foundation, either version 3 of the License, or
6 | (at your option) any later version.
7 |
8 | This program is distributed in the hope that it will be useful,
9 | but WITHOUT ANY WARRANTY; without even the implied warranty of
10 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 | GNU General Public License for more details.
12 |
13 | You should have received a copy of the GNU General Public License
14 | along with this program. If not, see .
15 | */
16 | namespace GS.FitsImageManager.Header_Value_Converters
17 | {
18 | public class BoolStringConverter : HeaderValueConverterBase
19 | {
20 | public override string Convert( bool value, int? decimals = null )
21 | {
22 | return ( value ) ? "T" : "F";
23 | }
24 |
25 | public override bool ConvertBack( string value )
26 | {
27 | return ( value == "T" );
28 | }
29 |
30 | public override bool IsConvertible( string value )
31 | {
32 | return value == "T" || value == "F";
33 | }
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/GS.FitsImageManager/Header Value Converters/HeaderValueConverterBase.cs:
--------------------------------------------------------------------------------
1 | /* Copyright(C) 2019-2025 Rob Morgan (robert.morgan.e@gmail.com)
2 |
3 | This program is free software: you can redistribute it and/or modify
4 | it under the terms of the GNU General Public License as published
5 | by the Free Software Foundation, either version 3 of the License, or
6 | (at your option) any later version.
7 |
8 | This program is distributed in the hope that it will be useful,
9 | but WITHOUT ANY WARRANTY; without even the implied warranty of
10 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 | GNU General Public License for more details.
12 |
13 | You should have received a copy of the GNU General Public License
14 | along with this program. If not, see .
15 | */
16 | namespace GS.FitsImageManager.Header_Value_Converters
17 | {
18 | public abstract class HeaderValueConverterBase
19 | {
20 | public abstract string Convert( T value, int? decimals = null );
21 | public abstract T ConvertBack( string value );
22 | public abstract bool IsConvertible( string value );
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/GS.FitsImageManager/Header Value Converters/IntegerStringConverter.cs:
--------------------------------------------------------------------------------
1 | /* Copyright(C) 2019-2025 Rob Morgan (robert.morgan.e@gmail.com)
2 |
3 | This program is free software: you can redistribute it and/or modify
4 | it under the terms of the GNU General Public License as published
5 | by the Free Software Foundation, either version 3 of the License, or
6 | (at your option) any later version.
7 |
8 | This program is distributed in the hope that it will be useful,
9 | but WITHOUT ANY WARRANTY; without even the implied warranty of
10 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 | GNU General Public License for more details.
12 |
13 | You should have received a copy of the GNU General Public License
14 | along with this program. If not, see .
15 | */
16 | using System;
17 |
18 | namespace GS.FitsImageManager.Header_Value_Converters
19 | {
20 | public class IntegerStringConverter : HeaderValueConverterBase
21 | {
22 | public override string Convert( int value, int? decimals = null )
23 | {
24 | return value.ToString();
25 | }
26 |
27 | public override int ConvertBack( string value )
28 | {
29 | return int.TryParse( value, out var result ) ? result : int.MinValue;
30 | }
31 |
32 | public override bool IsConvertible( string value )
33 | {
34 | return Int32.TryParse( value, out _ );
35 | }
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/GS.FitsImageManager/Header Value Converters/StringStringConverter.cs:
--------------------------------------------------------------------------------
1 | /* Copyright(C) 2019-2025 Rob Morgan (robert.morgan.e@gmail.com)
2 |
3 | This program is free software: you can redistribute it and/or modify
4 | it under the terms of the GNU General Public License as published
5 | by the Free Software Foundation, either version 3 of the License, or
6 | (at your option) any later version.
7 |
8 | This program is distributed in the hope that it will be useful,
9 | but WITHOUT ANY WARRANTY; without even the implied warranty of
10 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 | GNU General Public License for more details.
12 |
13 | You should have received a copy of the GNU General Public License
14 | along with this program. If not, see .
15 | */
16 | using System.Linq;
17 |
18 | namespace GS.FitsImageManager.Header_Value_Converters
19 | {
20 | public class StringStringConverter : HeaderValueConverterBase
21 | {
22 | public override string Convert( string value, int? decimals = null )
23 | {
24 | if ( value.StartsWith( "\'" ) && value.EndsWith( "\'" ) )
25 | {
26 | return value;
27 | }
28 |
29 | return $"'{value}'";
30 | }
31 |
32 | public override string ConvertBack( string value )
33 | {
34 | var retval = value;
35 |
36 | if (string.IsNullOrEmpty(value)) return retval;
37 | if ( value.First() == '\'' && value.Last() == '\'' )
38 | {
39 | retval = value.Substring( 1, value.Length - 2 );
40 | }
41 |
42 | return retval;
43 | }
44 |
45 | public override bool IsConvertible( string value )
46 | {
47 | return true;
48 | }
49 | }
50 | }
51 |
--------------------------------------------------------------------------------
/GS.FitsImageManager/IFitsHeaderItem.cs:
--------------------------------------------------------------------------------
1 | /* Copyright(C) 2019-2025 Rob Morgan (robert.morgan.e@gmail.com)
2 |
3 | This program is free software: you can redistribute it and/or modify
4 | it under the terms of the GNU General Public License as published
5 | by the Free Software Foundation, either version 3 of the License, or
6 | (at your option) any later version.
7 |
8 | This program is distributed in the hope that it will be useful,
9 | but WITHOUT ANY WARRANTY; without even the implied warranty of
10 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 | GNU General Public License for more details.
12 |
13 | You should have received a copy of the GNU General Public License
14 | along with this program. If not, see .
15 | */
16 |
17 | namespace GS.FitsImageManager
18 | {
19 | public enum HeaderValueType { None, String, Logical, Integer, Single, Double, Complex, DateTime, Unknown };
20 |
21 | public interface IFitsHeaderItem
22 | {
23 | string KeyName { get; }
24 | HeaderValueType ValueType { get; }
25 | string Value { get; }
26 | string Units { get; }
27 | string Comment { get; }
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/GS.FitsImageManager/Resources/ASCOM.snk:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rmorgan001/GSServer/6d156bb0755f231859aee11ea85b1f9f51d3cf66/GS.FitsImageManager/Resources/ASCOM.snk
--------------------------------------------------------------------------------
/GS.FitsImageManager/cfitsio/cfitsio_32.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rmorgan001/GSServer/6d156bb0755f231859aee11ea85b1f9f51d3cf66/GS.FitsImageManager/cfitsio/cfitsio_32.dll
--------------------------------------------------------------------------------
/GS.FitsImageManager/cfitsio/cfitsio_64.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rmorgan001/GSServer/6d156bb0755f231859aee11ea85b1f9f51d3cf66/GS.FitsImageManager/cfitsio/cfitsio_64.dll
--------------------------------------------------------------------------------
/GS.Principle/Calculations.cs:
--------------------------------------------------------------------------------
1 | /* Copyright(C) 2019-2025 Rob Morgan (robert.morgan.e@gmail.com)
2 |
3 | This program is free software: you can redistribute it and/or modify
4 | it under the terms of the GNU General Public License as published
5 | by the Free Software Foundation, either version 3 of the License, or
6 | (at your option) any later version.
7 |
8 | This program is distributed in the hope that it will be useful,
9 | but WITHOUT ANY WARRANTY; without even the implied warranty of
10 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 | GNU General Public License for more details.
12 |
13 | You should have received a copy of the GNU General Public License
14 | along with this program. If not, see .
15 | */
16 | using System;
17 |
18 | namespace GS.Principles
19 | {
20 | public static class Calculations
21 | {
22 | ///
23 | /// Compute the angular distance between two coordinates
24 | ///
25 | /// hours decimal
26 | /// degrees decimal
27 | /// hours decimal
28 | /// degrees decimal
29 | /// degrees
30 | public static double AngularDistance(double ra1, double dec1, double ra2, double dec2)
31 | {
32 | var a = Math.Sin(Units.Deg2Rad1(dec1));
33 | var b = Math.Sin(Units.Deg2Rad1(dec2));
34 | var c = Math.Cos(Units.Deg2Rad1(dec1));
35 | var d = Math.Cos(Units.Deg2Rad1(dec2));
36 | var e = (ra1 - ra2) * 15;
37 | var f = Math.Cos(Units.Deg2Rad1(e));
38 | var g = Math.Acos(a * b + c * d * f);
39 | var h = Units.Rad2Deg1(g);
40 | return h;
41 | }
42 |
43 | }
44 | }
45 |
--------------------------------------------------------------------------------
/GS.Principle/GS.Principles.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 | GS.Principles
4 | GS.Principles
5 | GS.Principles
6 | {C2BC2641-3B32-4940-B124-61ADEC0DAC28}
7 | net472
8 | ..\Builds\$(Configuration)\
9 |
10 | true
11 | true
12 | false
13 | false
14 |
15 |
16 | pdbonly
17 |
18 |
19 | true
20 |
21 |
22 | Resources\ASCOM.snk
23 |
24 |
25 | x86
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 | runtime
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
--------------------------------------------------------------------------------
/GS.Principle/Resources/ASCOM.snk:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rmorgan001/GSServer/6d156bb0755f231859aee11ea85b1f9f51d3cf66/GS.Principle/Resources/ASCOM.snk
--------------------------------------------------------------------------------
/GS.Server/Alignment/AlignmentV.xaml.cs:
--------------------------------------------------------------------------------
1 | namespace GS.Server.Alignment
2 | {
3 | ///
4 | /// Interaction logic for AlignmentV.xaml
5 | ///
6 | public partial class AlignmentV
7 | {
8 | public AlignmentV()
9 | {
10 | InitializeComponent();
11 | }
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/GS.Server/Alignment/MapResult.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Text;
4 |
5 | namespace GS.Server.Alignment
6 | {
7 | public class MapResult
8 | {
9 | public CartesCoord Position { get; set;}
10 |
11 | public bool InTriangle { get;set;} = false;
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/GS.Server/Cdc/CdcDialog.xaml.cs:
--------------------------------------------------------------------------------
1 | using System.Runtime.InteropServices;
2 |
3 | namespace GS.Server.Cdc
4 | {
5 | ///
6 | /// Interaction logic for Window1.xaml
7 | ///
8 | [ComVisible(false)]
9 | public partial class CdcDialog
10 | {
11 | public CdcDialog()
12 | {
13 | InitializeComponent();
14 | }
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/GS.Server/ClassDiagram1.cd:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | x6UvEcP02srN+qcdS86w/VWBmRb/RzuyXJdIPPyj3bk=
7 | SkyTelescope\SkyServer.cs
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/GS.Server/Controls/AltAzGauges.xaml.cs:
--------------------------------------------------------------------------------
1 | using System.Runtime.InteropServices;
2 |
3 | namespace GS.Server.Controls
4 | {
5 | ///
6 | /// Interaction logic for TopCoordsBar.xaml
7 | ///
8 | [ComVisible(false)]
9 | public partial class AltAzGauges
10 | {
11 | public AltAzGauges()
12 | {
13 | InitializeComponent();
14 | }
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/GS.Server/Controls/AltAzGoTo.xaml.cs:
--------------------------------------------------------------------------------
1 | using System.Runtime.InteropServices;
2 |
3 | namespace GS.Server.Controls
4 | {
5 | ///
6 | /// Interaction logic for AltAzGoTo.xaml
7 | ///
8 | [ComVisible(false)]
9 | public partial class AltAzGoTo
10 | {
11 | public AltAzGoTo()
12 | {
13 | InitializeComponent();
14 | }
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/GS.Server/Controls/Backlash.xaml.cs:
--------------------------------------------------------------------------------
1 | using System.Runtime.InteropServices;
2 |
3 | namespace GS.Server.Controls
4 | {
5 | ///
6 | /// Interaction logic for TopCoordsBar.xaml
7 | ///
8 | [ComVisible(false)]
9 | public partial class Backlash
10 | {
11 | public Backlash()
12 | {
13 | InitializeComponent();
14 | }
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/GS.Server/Controls/BottomStatusBar.xaml.cs:
--------------------------------------------------------------------------------
1 | using System.Runtime.InteropServices;
2 |
3 | namespace GS.Server.Controls
4 | {
5 | ///
6 | /// Interaction logic for TopCoordsBar.xaml
7 | ///
8 | [ComVisible(false)]
9 | public partial class BottomStatusBar
10 | {
11 | public BottomStatusBar()
12 | {
13 | InitializeComponent();
14 | }
15 |
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/GS.Server/Controls/Dialogs/AltGoToDecimal.xaml:
--------------------------------------------------------------------------------
1 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/GS.Server/Controls/Dialogs/AltGoToDecimal.xaml.cs:
--------------------------------------------------------------------------------
1 | using System.Runtime.InteropServices;
2 |
3 | namespace GS.Server.Controls.Dialogs
4 | {
5 | ///
6 | /// Interaction logic for Window1.xaml
7 | ///
8 | [ComVisible(false)]
9 | public partial class AltGoToDecimalDialog
10 | {
11 | public AltGoToDecimalDialog()
12 | {
13 | InitializeComponent();
14 | }
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/GS.Server/Controls/Dialogs/AutoHomeDialog.xaml.cs:
--------------------------------------------------------------------------------
1 | using System.Runtime.InteropServices;
2 |
3 | namespace GS.Server.Controls.Dialogs
4 | {
5 | ///
6 | /// Interaction logic for Window1.xaml
7 | ///
8 | [ComVisible(false)]
9 | public partial class AutoHomeDialog
10 | {
11 | public AutoHomeDialog()
12 | {
13 | InitializeComponent();
14 | }
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/GS.Server/Controls/Dialogs/AzGoToDecimal.xaml:
--------------------------------------------------------------------------------
1 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/GS.Server/Controls/Dialogs/AzGoToDecimal.xaml.cs:
--------------------------------------------------------------------------------
1 | using System.Runtime.InteropServices;
2 |
3 | namespace GS.Server.Controls.Dialogs
4 | {
5 | ///
6 | /// Interaction logic for Window1.xaml
7 | ///
8 | [ComVisible(false)]
9 | public partial class AzGoToDecimalDialog
10 | {
11 | public AzGoToDecimalDialog()
12 | {
13 | InitializeComponent();
14 | }
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/GS.Server/Controls/Dialogs/AzGoToDialog.xaml:
--------------------------------------------------------------------------------
1 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/GS.Server/Controls/Dialogs/AzGoToDialog.xaml.cs:
--------------------------------------------------------------------------------
1 | using System.Runtime.InteropServices;
2 |
3 | namespace GS.Server.Controls.Dialogs
4 | {
5 | ///
6 | /// Interaction logic for Window1.xaml
7 | ///
8 | [ComVisible(false)]
9 | public partial class AzGoToDialog
10 | {
11 | public AzGoToDialog()
12 | {
13 | InitializeComponent();
14 | }
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/GS.Server/Controls/Dialogs/CapabilitiesDialog.xaml:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/GS.Server/Controls/Dialogs/CapabilitiesDialog.xaml.cs:
--------------------------------------------------------------------------------
1 | using System.Runtime.InteropServices;
2 |
3 | namespace GS.Server.Controls.Dialogs
4 | {
5 | ///
6 | /// Interaction logic for Window1.xaml
7 | ///
8 | [ComVisible(false)]
9 | public partial class CapabilitiesDialog
10 | {
11 | public CapabilitiesDialog()
12 | {
13 | InitializeComponent();
14 | }
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/GS.Server/Controls/Dialogs/CloseDialog.xaml:
--------------------------------------------------------------------------------
1 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/GS.Server/Controls/Dialogs/CloseDialog.xaml.cs:
--------------------------------------------------------------------------------
1 | using System.Runtime.InteropServices;
2 |
3 | namespace GS.Server.Controls.Dialogs
4 | {
5 | ///
6 | /// Interaction logic for Window1.xaml
7 | ///
8 | [ComVisible(false)]
9 | public partial class CloseDialog
10 | {
11 | public CloseDialog()
12 | {
13 | InitializeComponent();
14 | }
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/GS.Server/Controls/Dialogs/CustomGearingDialog.xaml.cs:
--------------------------------------------------------------------------------
1 | using System.Runtime.InteropServices;
2 |
3 | namespace GS.Server.Controls.Dialogs
4 | {
5 | ///
6 | /// Interaction logic for Window1.xaml
7 | ///
8 | [ComVisible(false)]
9 | public partial class CustomGearingDialog
10 | {
11 | public CustomGearingDialog()
12 | {
13 | InitializeComponent();
14 | }
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/GS.Server/Controls/Dialogs/DecGoToDecimal.xaml:
--------------------------------------------------------------------------------
1 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/GS.Server/Controls/Dialogs/DecGoToDecimal.xaml.cs:
--------------------------------------------------------------------------------
1 | using System.Runtime.InteropServices;
2 |
3 | namespace GS.Server.Controls.Dialogs
4 | {
5 | ///
6 | /// Interaction logic for Window1.xaml
7 | ///
8 | [ComVisible(false)]
9 | public partial class DecGoToDecimalDialog
10 | {
11 | public DecGoToDecimalDialog()
12 | {
13 | InitializeComponent();
14 | }
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/GS.Server/Controls/Dialogs/DialogOK.xaml:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/GS.Server/Controls/Dialogs/DialogOK.xaml.cs:
--------------------------------------------------------------------------------
1 | using System.Runtime.InteropServices;
2 |
3 | namespace GS.Server.Controls.Dialogs
4 | {
5 | ///
6 | /// Interaction logic for Window1.xaml
7 | ///
8 | [ComVisible(false)]
9 | public partial class DialogOK
10 | {
11 | public DialogOK()
12 | {
13 | InitializeComponent();
14 | }
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/GS.Server/Controls/Dialogs/DownloadUpdateDialog.xaml.cs:
--------------------------------------------------------------------------------
1 | using System.Runtime.InteropServices;
2 |
3 | namespace GS.Server.Controls.Dialogs
4 | {
5 | ///
6 | /// Interaction logic for Window1.xaml
7 | ///
8 | [ComVisible(false)]
9 | public partial class DownloadUpdateDialog
10 | {
11 | public DownloadUpdateDialog()
12 | {
13 | InitializeComponent();
14 | }
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/GS.Server/Controls/Dialogs/ErrorMessageDialog.xaml:
--------------------------------------------------------------------------------
1 |
9 |
10 |
11 |
12 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/GS.Server/Controls/Dialogs/ErrorMessageDialog.xaml.cs:
--------------------------------------------------------------------------------
1 | using System.Runtime.InteropServices;
2 |
3 | namespace GS.Server.Controls.Dialogs
4 | {
5 | ///
6 | /// Interaction logic for ErrorMessageDialog.xaml
7 | ///
8 | [ComVisible(false)]
9 | public partial class ErrorMessageDialog
10 | {
11 | public ErrorMessageDialog()
12 | {
13 | InitializeComponent();
14 | }
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/GS.Server/Controls/Dialogs/ErrorMessageDialogVM.cs:
--------------------------------------------------------------------------------
1 | /* Copyright(C) 2019-2025 Rob Morgan (robert.morgan.e@gmail.com)
2 |
3 | This program is free software: you can redistribute it and/or modify
4 | it under the terms of the GNU General Public License as published
5 | by the Free Software Foundation, either version 3 of the License, or
6 | (at your option) any later version.
7 |
8 | This program is distributed in the hope that it will be useful,
9 | but WITHOUT ANY WARRANTY; without even the implied warranty of
10 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 | GNU General Public License for more details.
12 |
13 | You should have received a copy of the GNU General Public License
14 | along with this program. If not, see .
15 | */
16 |
17 | using System;
18 | using System.ComponentModel;
19 | using System.Runtime.InteropServices;
20 | using GS.Shared.Domain;
21 |
22 | namespace GS.Server.Controls.Dialogs
23 | {
24 | [ComVisible(false)]
25 | public class ErrorMessageDialogVM : INotifyPropertyChanged
26 | {
27 | private string _name;
28 | public string Name
29 | {
30 | get => _name;
31 | set => this.MutateVerbose(ref _name, value, RaisePropertyChanged());
32 | }
33 |
34 | public event PropertyChangedEventHandler PropertyChanged;
35 |
36 | private Action RaisePropertyChanged()
37 | {
38 | return args => PropertyChanged?.Invoke(this, args);
39 | }
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/GS.Server/Controls/Dialogs/FlipAzDirDialog.xaml:
--------------------------------------------------------------------------------
1 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/GS.Server/Controls/Dialogs/FlipAzDirDialog.xaml.cs:
--------------------------------------------------------------------------------
1 | using System.Runtime.InteropServices;
2 |
3 | namespace GS.Server.Controls.Dialogs
4 | {
5 | ///
6 | /// Interaction logic for Window1.xaml
7 | ///
8 | [ComVisible(false)]
9 | public partial class FlipAzDirDialog
10 | {
11 | public FlipAzDirDialog()
12 | {
13 | InitializeComponent();
14 | }
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/GS.Server/Controls/Dialogs/FlipDialog.xaml.cs:
--------------------------------------------------------------------------------
1 | using System.Runtime.InteropServices;
2 |
3 | namespace GS.Server.Controls.Dialogs
4 | {
5 | ///
6 | /// Interaction logic for Window1.xaml
7 | ///
8 | [ComVisible(false)]
9 | public partial class FlipDialog
10 | {
11 | public FlipDialog()
12 | {
13 | InitializeComponent();
14 | }
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/GS.Server/Controls/Dialogs/HcOptionsDialog.xaml.cs:
--------------------------------------------------------------------------------
1 | using System.Runtime.InteropServices;
2 |
3 | namespace GS.Server.Controls.Dialogs
4 | {
5 | ///
6 | /// Interaction logic for Window1.xaml
7 | ///
8 | [ComVisible(false)]
9 | public partial class HcOptionsDialog
10 | {
11 | public HcOptionsDialog()
12 | {
13 | InitializeComponent();
14 | }
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/GS.Server/Controls/Dialogs/HcPulseGuidesDialog.xaml.cs:
--------------------------------------------------------------------------------
1 | using System.Runtime.InteropServices;
2 |
3 | namespace GS.Server.Controls.Dialogs
4 | {
5 | ///
6 | /// Interaction logic for Window1.xaml
7 | ///
8 | [ComVisible(false)]
9 | public partial class HcPulseGuidesDialog
10 | {
11 | public HcPulseGuidesDialog()
12 | {
13 | InitializeComponent();
14 | }
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/GS.Server/Controls/Dialogs/HomeDialog.xaml:
--------------------------------------------------------------------------------
1 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/GS.Server/Controls/Dialogs/HomeDialog.xaml.cs:
--------------------------------------------------------------------------------
1 | using System.Runtime.InteropServices;
2 |
3 | namespace GS.Server.Controls.Dialogs
4 | {
5 | ///
6 | /// Interaction logic for Window1.xaml
7 | ///
8 | [ComVisible(false)]
9 | public partial class HomeDialog
10 | {
11 | public HomeDialog()
12 | {
13 | InitializeComponent();
14 | }
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/GS.Server/Controls/Dialogs/LatLongDialog.xaml.cs:
--------------------------------------------------------------------------------
1 | using System.Runtime.InteropServices;
2 |
3 | namespace GS.Server.Controls.Dialogs
4 | {
5 | ///
6 | /// Interaction logic for Window1.xaml
7 | ///
8 | [ComVisible(false)]
9 | public partial class LatLongDialog
10 | {
11 | public LatLongDialog()
12 | {
13 | InitializeComponent();
14 | }
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/GS.Server/Controls/Dialogs/LimitDialog.xaml.cs:
--------------------------------------------------------------------------------
1 | using System.Runtime.InteropServices;
2 |
3 | namespace GS.Server.Controls.Dialogs
4 | {
5 | ///
6 | /// Interaction logic for Window1.xaml
7 | ///
8 | [ComVisible(false)]
9 | public partial class LimitDialog
10 | {
11 | public LimitDialog()
12 | {
13 | InitializeComponent();
14 | }
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/GS.Server/Controls/Dialogs/MountInfoDialog.xaml.cs:
--------------------------------------------------------------------------------
1 | using System.Runtime.InteropServices;
2 |
3 | namespace GS.Server.Controls.Dialogs
4 | {
5 | ///
6 | /// Interaction logic for Window1.xaml
7 | ///
8 | [ComVisible(false)]
9 | public partial class MountInfoDialog
10 | {
11 | public MountInfoDialog()
12 | {
13 | InitializeComponent();
14 | }
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/GS.Server/Controls/Dialogs/ParkAddDialog.xaml:
--------------------------------------------------------------------------------
1 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
--------------------------------------------------------------------------------
/GS.Server/Controls/Dialogs/ParkAddDialog.xaml.cs:
--------------------------------------------------------------------------------
1 | using System.Runtime.InteropServices;
2 |
3 | namespace GS.Server.Controls.Dialogs
4 | {
5 | ///
6 | /// Interaction logic for Window1.xaml
7 | ///
8 | [ComVisible(false)]
9 | public partial class ParkAddDialog
10 | {
11 | public ParkAddDialog()
12 | {
13 | InitializeComponent();
14 | }
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/GS.Server/Controls/Dialogs/ParkDeleteDialog.xaml:
--------------------------------------------------------------------------------
1 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/GS.Server/Controls/Dialogs/ParkDeleteDialog.xaml.cs:
--------------------------------------------------------------------------------
1 | using System.Runtime.InteropServices;
2 |
3 | namespace GS.Server.Controls.Dialogs
4 | {
5 | ///
6 | /// Interaction logic for Window1.xaml
7 | ///
8 | [ComVisible(false)]
9 | public partial class ParkDeleteDialog
10 | {
11 | public ParkDeleteDialog()
12 | {
13 | InitializeComponent();
14 | }
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/GS.Server/Controls/Dialogs/ParkDialog.xaml:
--------------------------------------------------------------------------------
1 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/GS.Server/Controls/Dialogs/ParkDialog.xaml.cs:
--------------------------------------------------------------------------------
1 | using System.Runtime.InteropServices;
2 |
3 | namespace GS.Server.Controls.Dialogs
4 | {
5 | ///
6 | /// Interaction logic for Window1.xaml
7 | ///
8 | [ComVisible(false)]
9 | public partial class ParkDialog
10 | {
11 | public ParkDialog()
12 | {
13 | InitializeComponent();
14 | }
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/GS.Server/Controls/Dialogs/PpecDialog.xaml:
--------------------------------------------------------------------------------
1 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/GS.Server/Controls/Dialogs/PpecDialog.xaml.cs:
--------------------------------------------------------------------------------
1 | using System.Runtime.InteropServices;
2 |
3 | namespace GS.Server.Controls.Dialogs
4 | {
5 | ///
6 | /// Interaction logic for Window1.xaml
7 | ///
8 | [ComVisible(false)]
9 | public partial class PpecDialog
10 | {
11 | public PpecDialog()
12 | {
13 | InitializeComponent();
14 | }
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/GS.Server/Controls/Dialogs/RaGoToDecimal.xaml:
--------------------------------------------------------------------------------
1 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/GS.Server/Controls/Dialogs/RaGoToDecimal.xaml.cs:
--------------------------------------------------------------------------------
1 | using System.Runtime.InteropServices;
2 |
3 | namespace GS.Server.Controls.Dialogs
4 | {
5 | ///
6 | /// Interaction logic for Window1.xaml
7 | ///
8 | [ComVisible(false)]
9 | public partial class RaGoToDecimalDialog
10 | {
11 | public RaGoToDecimalDialog()
12 | {
13 | InitializeComponent();
14 | }
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/GS.Server/Controls/Dialogs/RaGoToDialog.xaml:
--------------------------------------------------------------------------------
1 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/GS.Server/Controls/Dialogs/RaGoToDialog.xaml.cs:
--------------------------------------------------------------------------------
1 | using System.Runtime.InteropServices;
2 |
3 | namespace GS.Server.Controls.Dialogs
4 | {
5 | ///
6 | /// Interaction logic for Window1.xaml
7 | ///
8 | [ComVisible(false)]
9 | public partial class RaGoToDialog
10 | {
11 | public RaGoToDialog()
12 | {
13 | InitializeComponent();
14 | }
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/GS.Server/Controls/Dialogs/RaGoToSyncDialog.xaml:
--------------------------------------------------------------------------------
1 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
--------------------------------------------------------------------------------
/GS.Server/Controls/Dialogs/RaGoToSyncDialog.xaml.cs:
--------------------------------------------------------------------------------
1 | using System.Runtime.InteropServices;
2 |
3 | namespace GS.Server.Controls.Dialogs
4 | {
5 | ///
6 | /// Interaction logic for Window1.xaml
7 | ///
8 | [ComVisible(false)]
9 | public partial class RaGoToSyncDialog
10 | {
11 | public RaGoToSyncDialog()
12 | {
13 | InitializeComponent();
14 | }
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/GS.Server/Controls/Dialogs/ReSyncDialog.xaml.cs:
--------------------------------------------------------------------------------
1 | using System.Runtime.InteropServices;
2 |
3 | namespace GS.Server.Controls.Dialogs
4 | {
5 | ///
6 | /// Interaction logic for Window1.xaml
7 | ///
8 | [ComVisible(false)]
9 | public partial class ReSyncDialog
10 | {
11 | public ReSyncDialog()
12 | {
13 | InitializeComponent();
14 | }
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/GS.Server/Controls/Dialogs/ResetSettingsDialog.xaml:
--------------------------------------------------------------------------------
1 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/GS.Server/Controls/Dialogs/ResetSettingsDialog.xaml.cs:
--------------------------------------------------------------------------------
1 | using System.Runtime.InteropServices;
2 |
3 | namespace GS.Server.Controls.Dialogs
4 | {
5 | ///
6 | /// Interaction logic for Window1.xaml
7 | ///
8 | [ComVisible(false)]
9 | public partial class ResetSettingsDialog
10 | {
11 | public ResetSettingsDialog()
12 | {
13 | InitializeComponent();
14 | }
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/GS.Server/Controls/Dialogs/SchedulerDialog.xaml.cs:
--------------------------------------------------------------------------------
1 | using System.Runtime.InteropServices;
2 |
3 | namespace GS.Server.Controls.Dialogs
4 | {
5 | ///
6 | /// Interaction logic for Window1.xaml
7 | ///
8 | [ComVisible(false)]
9 | public partial class SchedulerDialog
10 | {
11 | public SchedulerDialog()
12 | {
13 | InitializeComponent();
14 | }
15 |
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/GS.Server/Controls/Dialogs/Snap1DitherDialog.xaml.cs:
--------------------------------------------------------------------------------
1 | using System.Runtime.InteropServices;
2 |
3 | namespace GS.Server.Controls.Dialogs
4 | {
5 | ///
6 | /// Interaction logic for Window1.xaml
7 | ///
8 | [ComVisible(false)]
9 | public partial class Snap1DitherDialog
10 | {
11 | public Snap1DitherDialog()
12 | {
13 | InitializeComponent();
14 | }
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/GS.Server/Controls/Dialogs/Snap2DitherDialog.xaml.cs:
--------------------------------------------------------------------------------
1 | using System.Runtime.InteropServices;
2 |
3 | namespace GS.Server.Controls.Dialogs
4 | {
5 | ///
6 | /// Interaction logic for Window1.xaml
7 | ///
8 | [ComVisible(false)]
9 | public partial class Snap2DitherDialog
10 | {
11 | public Snap2DitherDialog()
12 | {
13 | InitializeComponent();
14 | }
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/GS.Server/Controls/Dialogs/SpiralFovDialog.xaml.cs:
--------------------------------------------------------------------------------
1 | using System.Runtime.InteropServices;
2 |
3 | namespace GS.Server.Controls.Dialogs
4 | {
5 | ///
6 | /// Interaction logic for Window1.xaml
7 | ///
8 | [ComVisible(false)]
9 | public partial class SpiralFovDialog
10 | {
11 | public SpiralFovDialog()
12 | {
13 | InitializeComponent();
14 | }
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/GS.Server/Controls/Dialogs/SpiralGoToDialog.xaml.cs:
--------------------------------------------------------------------------------
1 | using System.Runtime.InteropServices;
2 |
3 | namespace GS.Server.Controls.Dialogs
4 | {
5 | ///
6 | /// Interaction logic for Window1.xaml
7 | ///
8 | [ComVisible(false)]
9 | public partial class SpiralGoToDialog
10 | {
11 | public SpiralGoToDialog()
12 | {
13 | InitializeComponent();
14 | }
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/GS.Server/Controls/HandController.xaml.cs:
--------------------------------------------------------------------------------
1 | using System.Runtime.InteropServices;
2 |
3 | namespace GS.Server.Controls
4 | {
5 | ///
6 | /// Interaction logic for HandController.xaml
7 | ///
8 | [ComVisible(false)]
9 | public partial class HandController
10 | {
11 | public HandController()
12 | {
13 | InitializeComponent();
14 | }
15 |
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/GS.Server/Controls/HelixViewport3D.xaml.cs:
--------------------------------------------------------------------------------
1 | namespace GS.Server.Controls
2 | {
3 | ///
4 | /// Interaction logic for HelixViewport3D.xaml
5 | ///
6 | public partial class HelixViewport3D
7 | {
8 | public HelixViewport3D()
9 | {
10 | InitializeComponent();
11 | }
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/GS.Server/Controls/PPECBar.xaml.cs:
--------------------------------------------------------------------------------
1 | using System.Runtime.InteropServices;
2 |
3 | namespace GS.Server.Controls
4 | {
5 | ///
6 | /// Interaction logic for TopCoordsBar.xaml
7 | ///
8 | [ComVisible(false)]
9 | public partial class PPecBar
10 | {
11 | public PPecBar()
12 | {
13 | InitializeComponent();
14 | }
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/GS.Server/Controls/RaDecGauges.xaml.cs:
--------------------------------------------------------------------------------
1 | using System.Runtime.InteropServices;
2 |
3 | namespace GS.Server.Controls
4 | {
5 | ///
6 | /// Interaction logic for TopCoordsBar.xaml
7 | ///
8 | [ComVisible(false)]
9 | public partial class RaDecGauges
10 | {
11 | public RaDecGauges()
12 | {
13 | InitializeComponent();
14 | }
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/GS.Server/Controls/RaDecGoTo.xaml.cs:
--------------------------------------------------------------------------------
1 | using System.Runtime.InteropServices;
2 |
3 | namespace GS.Server.Controls
4 | {
5 | ///
6 | /// Interaction logic for TopCoordsBar.xaml
7 | ///
8 | [ComVisible(false)]
9 | public partial class RaDecGoTo
10 | {
11 | public RaDecGoTo()
12 | {
13 | InitializeComponent();
14 | }
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/GS.Server/Controls/StandardButtonBar.xaml.cs:
--------------------------------------------------------------------------------
1 | using System.Runtime.InteropServices;
2 |
3 | namespace GS.Server.Controls
4 | {
5 | ///
6 | /// Interaction logic for TopCoordsBar.xaml
7 | ///
8 | [ComVisible(false)]
9 | public partial class StandardButtonBar
10 | {
11 | public StandardButtonBar()
12 | {
13 | InitializeComponent();
14 | }
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/GS.Server/Controls/TabBar.xaml.cs:
--------------------------------------------------------------------------------
1 | using System.Runtime.InteropServices;
2 |
3 | namespace GS.Server.Controls
4 | {
5 | ///
6 | /// Interaction logic for TopCoordsBar.xaml
7 | ///
8 | [ComVisible(false)]
9 | public partial class TabBar
10 | {
11 | public TabBar()
12 | {
13 | InitializeComponent();
14 | }
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/GS.Server/Controls/TopCoordsBar.xaml.cs:
--------------------------------------------------------------------------------
1 | using System.Runtime.InteropServices;
2 |
3 | namespace GS.Server.Controls
4 | {
5 | ///
6 | /// Interaction logic for TopCoordsBar.xaml
7 | ///
8 | [ComVisible(false)]
9 | public partial class TopCoordsBar
10 | {
11 | public TopCoordsBar()
12 | {
13 | InitializeComponent();
14 | }
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/GS.Server/Controls/WindowTitleBar.xaml.cs:
--------------------------------------------------------------------------------
1 | using System.Runtime.InteropServices;
2 |
3 | namespace GS.Server.Controls
4 | {
5 | ///
6 | /// Interaction logic for TopCoordsBar.xaml
7 | ///
8 | [ComVisible(false)]
9 | public partial class WindowTitleBar
10 | {
11 | public WindowTitleBar()
12 | {
13 | InitializeComponent();
14 | }
15 |
16 | //private void TopCheck_OnClick(object sender, RoutedEventArgs e)
17 | //{
18 | // var window = (Window)sender;
19 | // window.Topmost = !window.Topmost;
20 | //}
21 |
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/GS.Server/Controls/WindowTitleBarBasic.xaml.cs:
--------------------------------------------------------------------------------
1 | using System.Runtime.InteropServices;
2 |
3 | namespace GS.Server.Controls
4 | {
5 | ///
6 | /// Interaction logic for TopCoordsBar.xaml
7 | ///
8 | [ComVisible(false)]
9 | public partial class WindowTitleBarBasic
10 | {
11 | public WindowTitleBarBasic()
12 | {
13 | InitializeComponent();
14 | }
15 |
16 | //private void TopCheck_OnClick(object sender, RoutedEventArgs e)
17 | //{
18 | // var window = (Window)sender;
19 | // window.Topmost = !window.Topmost;
20 | //}
21 |
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/GS.Server/Domain/BoolOpToVisConverter.cs:
--------------------------------------------------------------------------------
1 | /* Copyright(C) 2019-2025 Rob Morgan (robert.morgan.e@gmail.com)
2 |
3 | This program is free software: you can redistribute it and/or modify
4 | it under the terms of the GNU General Public License as published
5 | by the Free Software Foundation, either version 3 of the License, or
6 | (at your option) any later version.
7 |
8 | This program is distributed in the hope that it will be useful,
9 | but WITHOUT ANY WARRANTY; without even the implied warranty of
10 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 | GNU General Public License for more details.
12 |
13 | You should have received a copy of the GNU General Public License
14 | along with this program. If not, see .
15 | */
16 | using System;
17 | using System.Globalization;
18 | using System.Windows;
19 | using System.Windows.Data;
20 |
21 | namespace GS.Server.Domain
22 | {
23 | public class BoolOpToVisConverter : IValueConverter
24 | {
25 | public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
26 | {
27 | return (value is bool b && b) ? Visibility.Collapsed : Visibility.Visible;
28 | }
29 |
30 | public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
31 | {
32 | return value is Visibility visibility && visibility == Visibility.Visible;
33 | }
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/GS.Server/Domain/BoolToVisClapConverter.cs:
--------------------------------------------------------------------------------
1 | /* Copyright(C) 2019-2025 Rob Morgan (robert.morgan.e@gmail.com)
2 |
3 | This program is free software: you can redistribute it and/or modify
4 | it under the terms of the GNU General Public License as published
5 | by the Free Software Foundation, either version 3 of the License, or
6 | (at your option) any later version.
7 |
8 | This program is distributed in the hope that it will be useful,
9 | but WITHOUT ANY WARRANTY; without even the implied warranty of
10 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 | GNU General Public License for more details.
12 |
13 | You should have received a copy of the GNU General Public License
14 | along with this program. If not, see .
15 | */
16 | using System;
17 | using System.Globalization;
18 | using System.Windows;
19 | using System.Windows.Data;
20 |
21 | namespace GS.Server.Domain
22 | {
23 | public class BoolToVisClapConverter : IValueConverter
24 | {
25 | public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
26 | {
27 | return (value is bool b && b) ? Visibility.Visible : Visibility.Collapsed;
28 | }
29 |
30 | public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
31 | {
32 | return value is Visibility visibility && visibility == Visibility.Visible;
33 | }
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/GS.Server/Domain/BoolToVisConverter.cs:
--------------------------------------------------------------------------------
1 | /* Copyright(C) 2019-2025 Rob Morgan (robert.morgan.e@gmail.com)
2 |
3 | This program is free software: you can redistribute it and/or modify
4 | it under the terms of the GNU General Public License as published
5 | by the Free Software Foundation, either version 3 of the License, or
6 | (at your option) any later version.
7 |
8 | This program is distributed in the hope that it will be useful,
9 | but WITHOUT ANY WARRANTY; without even the implied warranty of
10 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 | GNU General Public License for more details.
12 |
13 | You should have received a copy of the GNU General Public License
14 | along with this program. If not, see .
15 | */
16 | using System;
17 | using System.Globalization;
18 | using System.Windows;
19 | using System.Windows.Data;
20 |
21 | namespace GS.Server.Domain
22 | {
23 | public class BoolToVisConverter : IValueConverter
24 | {
25 | public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
26 | {
27 | return (value is bool b && b) ? Visibility.Visible : Visibility.Collapsed;
28 | }
29 |
30 | public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
31 | {
32 | return value is Visibility visibility && visibility == Visibility.Visible;
33 | }
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/GS.Server/Domain/BoolToVisHideConverter.cs:
--------------------------------------------------------------------------------
1 | /* Copyright(C) 2019-2025 Rob Morgan (robert.morgan.e@gmail.com)
2 |
3 | This program is free software: you can redistribute it and/or modify
4 | it under the terms of the GNU General Public License as published
5 | by the Free Software Foundation, either version 3 of the License, or
6 | (at your option) any later version.
7 |
8 | This program is distributed in the hope that it will be useful,
9 | but WITHOUT ANY WARRANTY; without even the implied warranty of
10 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 | GNU General Public License for more details.
12 |
13 | You should have received a copy of the GNU General Public License
14 | along with this program. If not, see .
15 | */
16 | using System;
17 | using System.Globalization;
18 | using System.Windows;
19 | using System.Windows.Data;
20 |
21 | namespace GS.Server.Domain
22 | {
23 | public class BoolToVisHideConverter : IValueConverter
24 | {
25 | public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
26 | {
27 | return (value is bool b && b) ? Visibility.Visible : Visibility.Hidden;
28 | }
29 |
30 | public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
31 | {
32 | return value is Visibility visibility && visibility == Visibility.Visible;
33 | }
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/GS.Server/Domain/ComparisonConverter.cs:
--------------------------------------------------------------------------------
1 | /* Copyright(C) 2019-2025 Rob Morgan (robert.morgan.e@gmail.com)
2 |
3 | This program is free software: you can redistribute it and/or modify
4 | it under the terms of the GNU General Public License as published
5 | by the Free Software Foundation, either version 3 of the License, or
6 | (at your option) any later version.
7 |
8 | This program is distributed in the hope that it will be useful,
9 | but WITHOUT ANY WARRANTY; without even the implied warranty of
10 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 | GNU General Public License for more details.
12 |
13 | You should have received a copy of the GNU General Public License
14 | along with this program. If not, see .
15 | */
16 | using System;
17 | using System.Windows.Data;
18 |
19 | namespace GS.Server.Domain
20 | {
21 | public class ComparisonConverter : IValueConverter
22 | {
23 | public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
24 | {
25 | return value?.Equals(parameter);
26 | }
27 |
28 | public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
29 | {
30 | return value?.Equals(true) == true ? parameter : Binding.DoNothing;
31 | }
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/GS.Server/Domain/DoubleValidationRule .cs:
--------------------------------------------------------------------------------
1 | /* Copyright(C) 2019-2025 Rob Morgan (robert.morgan.e@gmail.com)
2 |
3 | This program is free software: you can redistribute it and/or modify
4 | it under the terms of the GNU General Public License as published
5 | by the Free Software Foundation, either version 3 of the License, or
6 | (at your option) any later version.
7 |
8 | This program is distributed in the hope that it will be useful,
9 | but WITHOUT ANY WARRANTY; without even the implied warranty of
10 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 | GNU General Public License for more details.
12 |
13 | You should have received a copy of the GNU General Public License
14 | along with this program. If not, see .
15 | */
16 |
17 | using System.Globalization;
18 | using System.Runtime.InteropServices;
19 | using System.Windows;
20 | using System.Windows.Controls;
21 |
22 | namespace GS.Server.Domain
23 | {
24 | [ComVisible(false)]
25 | internal class DoubleValidationRule : ValidationRule
26 | {
27 | public override ValidationResult Validate(object value, CultureInfo cultureInfo)
28 | {
29 | var canConvert = double.TryParse(value as string, NumberStyles.Any, cultureInfo, out _);
30 | return new ValidationResult(canConvert, Application.Current.Resources["cvtInvNumber"].ToString());
31 | }
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/GS.Server/Domain/EnumBooleanConverter .cs:
--------------------------------------------------------------------------------
1 | /* Copyright(C) 2019-2025 Rob Morgan (robert.morgan.e@gmail.com)
2 |
3 | This program is free software: you can redistribute it and/or modify
4 | it under the terms of the GNU General Public License as published
5 | by the Free Software Foundation, either version 3 of the License, or
6 | (at your option) any later version.
7 |
8 | This program is distributed in the hope that it will be useful,
9 | but WITHOUT ANY WARRANTY; without even the implied warranty of
10 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 | GNU General Public License for more details.
12 |
13 | You should have received a copy of the GNU General Public License
14 | along with this program. If not, see .
15 | */
16 | using System;
17 | using System.Globalization;
18 | using System.Runtime.InteropServices;
19 | using System.Windows.Data;
20 |
21 | namespace GS.Server.Domain
22 | {
23 | [ComVisible(false)]
24 | internal class EnumBooleanConverter : IValueConverter
25 | {
26 | public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
27 | {
28 | return value?.Equals(parameter);
29 | }
30 |
31 | public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
32 | {
33 | return value?.Equals(true) == true ? parameter : Binding.DoNothing;
34 | }
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/GS.Server/Domain/EnumToVisibilityConverter.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Windows;
3 | using System.Windows.Data;
4 |
5 | namespace GS.Server.Domain
6 | {
7 | public class EnumToVisibilityConverter : IValueConverter
8 | {
9 | public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
10 | {
11 | if (value == null || parameter == null || !(value is Enum))
12 | return Visibility.Collapsed;
13 |
14 | var currentState = value.ToString();
15 | var stateStrings = parameter.ToString();
16 | var found = false;
17 |
18 | foreach (var state in stateStrings.Split(','))
19 | {
20 | found = currentState == state.Trim();
21 |
22 | if (found)
23 | break;
24 | }
25 |
26 | return found ? Visibility.Visible : Visibility.Collapsed;
27 | }
28 |
29 | public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
30 | {
31 | throw new NotImplementedException();
32 | }
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/GS.Server/Domain/FutureDateValidationRule.cs:
--------------------------------------------------------------------------------
1 | // /* Copyright(C) 2019-2025 Rob Morgan (robert.morgan.e@gmail.com)
2 | //
3 | // This program is free software: you can redistribute it and/or modify
4 | // it under the terms of the GNU General Public License as published
5 | // by the Free Software Foundation, either version 3 of the License, or
6 | // (at your option) any later version.
7 | //
8 | // This program is distributed in the hope that it will be useful,
9 | // but WITHOUT ANY WARRANTY; without even the implied warranty of
10 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 | // GNU General Public License for more details.
12 | //
13 | // You should have received a copy of the GNU General Public License
14 | // along with this program. If not, see .
15 | // */
16 | using System;
17 | using System.Globalization;
18 | using System.Windows;
19 | using System.Windows.Controls;
20 |
21 | namespace GS.Server.Domain
22 | {
23 | public class FutureDateValidationRule : ValidationRule
24 | {
25 | public override ValidationResult Validate(object value, CultureInfo cultureInfo)
26 | {
27 | if (!DateTime.TryParse((value ?? "").ToString(),
28 | CultureInfo.CurrentCulture,
29 | DateTimeStyles.AssumeLocal | DateTimeStyles.AllowWhiteSpaces,
30 | out var time)) return new ValidationResult(false, $"{Application.Current.Resources["cvtInvaliddate"]}");
31 |
32 | return time.Date < DateTime.Now.Date
33 | ? new ValidationResult(false, $"{Application.Current.Resources["cvtFutureDate"]}")
34 | : ValidationResult.ValidResult;
35 | }
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/GS.Server/Domain/HyperlinkExtensions.cs:
--------------------------------------------------------------------------------
1 | using System.Diagnostics;
2 | using System.Windows;
3 | using System.Windows.Documents;
4 |
5 | namespace GS.Server.Domain
6 | {
7 | public static class HyperlinkExtensions
8 | {
9 | public static bool GetIsExternal(DependencyObject obj)
10 | {
11 | return (bool)obj.GetValue(IsExternalProperty);
12 | }
13 |
14 | public static void SetIsExternal(DependencyObject obj, bool value)
15 | {
16 | obj.SetValue(IsExternalProperty, value);
17 | }
18 | public static readonly DependencyProperty IsExternalProperty =
19 | DependencyProperty.RegisterAttached("IsExternal", typeof(bool), typeof(HyperlinkExtensions), new UIPropertyMetadata(false, OnIsExternalChanged));
20 |
21 | private static void OnIsExternalChanged(object sender, DependencyPropertyChangedEventArgs args)
22 | {
23 | var hyperlink = sender as Hyperlink;
24 |
25 | if ((bool)args.NewValue)
26 | {
27 | if (hyperlink != null) hyperlink.RequestNavigate += Hyperlink_RequestNavigate;
28 | }
29 | else if (hyperlink != null) hyperlink.RequestNavigate -= Hyperlink_RequestNavigate;
30 | }
31 |
32 | private static void Hyperlink_RequestNavigate(object sender, System.Windows.Navigation.RequestNavigateEventArgs e)
33 | {
34 | Process.Start(new ProcessStartInfo(e.Uri.AbsoluteUri));
35 | e.Handled = true;
36 | }
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/GS.Server/Domain/IntValidationRule.cs:
--------------------------------------------------------------------------------
1 | /* Copyright(C) 2019-2025 Rob Morgan (robert.morgan.e@gmail.com)
2 |
3 | This program is free software: you can redistribute it and/or modify
4 | it under the terms of the GNU General Public License as published
5 | by the Free Software Foundation, either version 3 of the License, or
6 | (at your option) any later version.
7 |
8 | This program is distributed in the hope that it will be useful,
9 | but WITHOUT ANY WARRANTY; without even the implied warranty of
10 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 | GNU General Public License for more details.
12 |
13 | You should have received a copy of the GNU General Public License
14 | along with this program. If not, see .
15 | */
16 | using System.Runtime.InteropServices;
17 | using System.Windows;
18 | using System.Windows.Controls;
19 |
20 | namespace GS.Server.Domain
21 | {
22 | [ComVisible(false)]
23 | internal class IntValidationRule : ValidationRule
24 | {
25 | public override ValidationResult Validate(object value, System.Globalization.CultureInfo cultureInfo)
26 | {
27 | var canConvert = int.TryParse(value as string, out _);
28 | return new ValidationResult(canConvert, Application.Current.Resources["cvtInvNumber"].ToString());
29 | }
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/GS.Server/Domain/InvertBooleanConvertor.cs:
--------------------------------------------------------------------------------
1 | /* Copyright(C) 2019-2025 Rob Morgan (robert.morgan.e@gmail.com)
2 |
3 | This program is free software: you can redistribute it and/or modify
4 | it under the terms of the GNU General Public License as published
5 | by the Free Software Foundation, either version 3 of the License, or
6 | (at your option) any later version.
7 |
8 | This program is distributed in the hope that it will be useful,
9 | but WITHOUT ANY WARRANTY; without even the implied warranty of
10 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 | GNU General Public License for more details.
12 |
13 | You should have received a copy of the GNU General Public License
14 | along with this program. If not, see .
15 | */
16 | using System;
17 | using System.Windows;
18 | using System.Windows.Data;
19 |
20 | namespace GS.Server.Domain
21 | {
22 | [ValueConversion(typeof(bool), typeof(bool))]
23 | public class InverseBooleanConverter : IValueConverter
24 | {
25 | #region IValueConverter Members
26 |
27 | public object Convert(object value, Type targetType, object parameter,
28 | System.Globalization.CultureInfo culture)
29 | {
30 | if (targetType != typeof(bool))
31 | throw new InvalidOperationException($"{Application.Current.Resources["cvtMustBool"]}");
32 |
33 | return value != null && !(bool)value;
34 | }
35 |
36 | public object ConvertBack(object value, Type targetType, object parameter,
37 | System.Globalization.CultureInfo culture)
38 | {
39 | throw new NotSupportedException();
40 | }
41 |
42 | #endregion
43 | }
44 | }
45 |
--------------------------------------------------------------------------------
/GS.Server/Domain/IpAddressValidationRule.cs:
--------------------------------------------------------------------------------
1 | /* Copyright(C) 2019-2025 Rob Morgan (robert.morgan.e@gmail.com)
2 |
3 | This program is free software: you can redistribute it and/or modify
4 | it under the terms of the GNU General Public License as published
5 | by the Free Software Foundation, either version 3 of the License, or
6 | (at your option) any later version.
7 |
8 | This program is distributed in the hope that it will be useful,
9 | but WITHOUT ANY WARRANTY; without even the implied warranty of
10 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 | GNU General Public License for more details.
12 |
13 | You should have received a copy of the GNU General Public License
14 | along with this program. If not, see .
15 | */
16 | using System;
17 | using System.Runtime.InteropServices;
18 | using System.Windows;
19 | using System.Windows.Controls;
20 |
21 | namespace GS.Server.Domain
22 | {
23 | [ComVisible(false)]
24 | internal class IpAddressValidationRule : ValidationRule
25 | {
26 | public override ValidationResult Validate(object value, System.Globalization.CultureInfo cultureInfo)
27 | {
28 | var canConvert = System.Net.IPAddress.TryParse(value as string ?? throw new InvalidOperationException(), out _);
29 | return new ValidationResult(canConvert, Application.Current.Resources["cvtInvIP"].ToString());
30 | }
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/GS.Server/Domain/RadioButtonCheckedConverter.cs:
--------------------------------------------------------------------------------
1 | /* Copyright(C) 2019-2025 Rob Morgan (robert.morgan.e@gmail.com)
2 |
3 | This program is free software: you can redistribute it and/or modify
4 | it under the terms of the GNU General Public License as published
5 | by the Free Software Foundation, either version 3 of the License, or
6 | (at your option) any later version.
7 |
8 | This program is distributed in the hope that it will be useful,
9 | but WITHOUT ANY WARRANTY; without even the implied warranty of
10 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 | GNU General Public License for more details.
12 |
13 | You should have received a copy of the GNU General Public License
14 | along with this program. If not, see .
15 | */
16 | using System;
17 | using System.Diagnostics;
18 | using System.Windows.Data;
19 |
20 | namespace GS.Server.Domain
21 | {
22 | public class RadioButtonCheckedConverter : IValueConverter
23 |
24 | {
25 |
26 | public object Convert(object value, Type targetType, object parameter,
27 |
28 | System.Globalization.CultureInfo culture)
29 |
30 | {
31 | return value != null && value.Equals(parameter);
32 | }
33 |
34 |
35 |
36 | public object ConvertBack(object value, Type targetType, object parameter,
37 |
38 | System.Globalization.CultureInfo culture)
39 |
40 | {
41 |
42 | return value != null && value.Equals(true) ? parameter : Binding.DoNothing;
43 |
44 | }
45 |
46 | }
47 | }
48 |
--------------------------------------------------------------------------------
/GS.Server/Domain/SimpleDateValidationRule.cs:
--------------------------------------------------------------------------------
1 | // /* Copyright(C) 2019-2025 Rob Morgan (robert.morgan.e@gmail.com)
2 | //
3 | // This program is free software: you can redistribute it and/or modify
4 | // it under the terms of the GNU General Public License as published
5 | // by the Free Software Foundation, either version 3 of the License, or
6 | // (at your option) any later version.
7 | //
8 | // This program is distributed in the hope that it will be useful,
9 | // but WITHOUT ANY WARRANTY; without even the implied warranty of
10 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 | // GNU General Public License for more details.
12 | //
13 | // You should have received a copy of the GNU General Public License
14 | // along with this program. If not, see .
15 | // */
16 |
17 | using System;
18 | using System.Globalization;
19 | using System.Windows;
20 | using System.Windows.Controls;
21 |
22 | namespace GS.Server.Domain
23 | {
24 | public class SimpleDateValidationRule : ValidationRule
25 | {
26 | public override ValidationResult Validate(object value, CultureInfo cultureInfo)
27 | {
28 | return DateTime.TryParse((value ?? "").ToString(),
29 | CultureInfo.CurrentCulture, DateTimeStyles.AssumeLocal | DateTimeStyles.AllowWhiteSpaces, out _)
30 | ? ValidationResult.ValidResult
31 | : new ValidationResult(false, $"{Application.Current.Resources["cvtInvaliddate"]}");
32 | }
33 | }
34 | }
--------------------------------------------------------------------------------
/GS.Server/Domain/UtcToLocalDateTimeConverter .cs:
--------------------------------------------------------------------------------
1 | /* Copyright(C) 2019-2025 Rob Morgan (robert.morgan.e@gmail.com)
2 |
3 | This program is free software: you can redistribute it and/or modify
4 | it under the terms of the GNU General Public License as published
5 | by the Free Software Foundation, either version 3 of the License, or
6 | (at your option) any later version.
7 |
8 | This program is distributed in the hope that it will be useful,
9 | but WITHOUT ANY WARRANTY; without even the implied warranty of
10 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 | GNU General Public License for more details.
12 |
13 | You should have received a copy of the GNU General Public License
14 | along with this program. If not, see .
15 | */
16 | using System;
17 | using System.Globalization;
18 | using System.Windows.Data;
19 |
20 | namespace GS.Server.Domain
21 | {
22 | public class UtcToLocalDateTimeConverter : IValueConverter
23 | {
24 | public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
25 | {
26 | if (value is DateTime time)
27 | return time.ToLocalTime();
28 | else
29 | return DateTime.Parse(value?.ToString()).ToLocalTime();
30 | }
31 |
32 | public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
33 | {
34 | throw new NotImplementedException();
35 | }
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/GS.Server/Focuser/FocuserV.xaml.cs:
--------------------------------------------------------------------------------
1 | using System.Runtime.InteropServices;
2 |
3 | namespace GS.Server.Focuser
4 | {
5 | ///
6 | /// Interaction logic for FocuserView.xaml
7 | ///
8 | [ComVisible(false)]
9 | public partial class FocuserView
10 | {
11 | public FocuserView()
12 | {
13 | InitializeComponent();
14 | }
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/GS.Server/Gamepad/GamepadV.xaml.cs:
--------------------------------------------------------------------------------
1 | using System.Runtime.InteropServices;
2 |
3 | namespace GS.Server.GamePad
4 | {
5 | ///
6 | /// Interaction logic for GamePad
7 | ///
8 | [ComVisible(false)]
9 | public partial class GamePadV
10 | {
11 | public GamePadV()
12 | {
13 | InitializeComponent();
14 | }
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/GS.Server/Gps/GpsDialog.xaml.cs:
--------------------------------------------------------------------------------
1 | using System.Runtime.InteropServices;
2 |
3 | namespace GS.Server.Gps
4 | {
5 | ///
6 | /// Interaction logic for Window1.xaml
7 | ///
8 | [ComVisible(false)]
9 | public partial class GpsDialog
10 | {
11 | public GpsDialog()
12 | {
13 | InitializeComponent();
14 | }
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/GS.Server/Helpers/Memory.cs:
--------------------------------------------------------------------------------
1 | /* Copyright(C) 2019-2025 Rob Morgan (robert.morgan.e@gmail.com)
2 |
3 | This program is free software: you can redistribute it and/or modify
4 | it under the terms of the GNU General Public License as published
5 | by the Free Software Foundation, either version 3 of the License, or
6 | (at your option) any later version.
7 |
8 | This program is distributed in the hope that it will be useful,
9 | but WITHOUT ANY WARRANTY; without even the implied warranty of
10 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 | GNU General Public License for more details.
12 |
13 | You should have received a copy of the GNU General Public License
14 | along with this program. If not, see .
15 | */
16 | using System;
17 |
18 | namespace GS.Server.Helpers
19 | {
20 | public static class Memory
21 | {
22 | ///
23 | /// Controls the amount of RAM the process uses
24 | ///
25 | public static void FlushMemory()
26 | {
27 | GC.Collect();
28 | GC.WaitForPendingFinalizers();
29 | if (Environment.OSVersion.Platform == PlatformID.Win32NT)
30 | {
31 | NativeMethods.SetProcessWorkingSetSize(System.Diagnostics.Process.GetCurrentProcess().Handle, -1, -1);
32 | }
33 | }
34 |
35 | public static void Collect()
36 | {
37 | GC.Collect();
38 | GC.WaitForPendingFinalizers();
39 | }
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/GS.Server/Keys/GSKey.snk:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rmorgan001/GSServer/6d156bb0755f231859aee11ea85b1f9f51d3cf66/GS.Server/Keys/GSKey.snk
--------------------------------------------------------------------------------
/GS.Server/Keys/GSpublic.snk:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rmorgan001/GSServer/6d156bb0755f231859aee11ea85b1f9f51d3cf66/GS.Server/Keys/GSpublic.snk
--------------------------------------------------------------------------------
/GS.Server/Main/IPageVM.cs:
--------------------------------------------------------------------------------
1 | /* Copyright(C) 2019-2025 Rob Morgan (robert.morgan.e@gmail.com)
2 |
3 | This program is free software: you can redistribute it and/or modify
4 | it under the terms of the GNU General Public License as published
5 | by the Free Software Foundation, either version 3 of the License, or
6 | (at your option) any later version.
7 |
8 | This program is distributed in the hope that it will be useful,
9 | but WITHOUT ANY WARRANTY; without even the implied warranty of
10 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 | GNU General Public License for more details.
12 |
13 | You should have received a copy of the GNU General Public License
14 | along with this program. If not, see .
15 | */
16 | namespace GS.Server.Main
17 | {
18 | public interface IPageVM
19 | {
20 | string TopName { get; }
21 | string BottomName { get; }
22 | int Uid { get; }
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/GS.Server/Main/MainWindow.xaml.cs:
--------------------------------------------------------------------------------
1 | using GS.Server.Helpers;
2 | using System;
3 | using System.Linq;
4 | using System.Runtime.InteropServices;
5 | using System.Windows;
6 | using System.Windows.Forms;
7 |
8 | namespace GS.Server.Main
9 | {
10 | ///
11 | /// Interaction logic for MainWindow.xaml
12 | ///
13 | [ComVisible(false)]
14 | public partial class MainWindow
15 | {
16 | public MainWindow()
17 | {
18 | InitializeComponent();
19 | StartOnTop();
20 | }
21 |
22 | private void MainWindow_OnClosed(object sender, EventArgs e)
23 | {
24 | GSServer.SaveAllAppSettings();
25 | }
26 |
27 | private void StartOnTop()
28 | {
29 | // Topmost = true;
30 | }
31 |
32 | private void MainWindow_OnContentRendered(object sender, EventArgs e)
33 | {
34 | Memory.FlushMemory();
35 | SetOnScreen(this);
36 | MouseLeftButtonDown += delegate { DragMove(); };
37 | }
38 |
39 | protected override void OnStateChanged(EventArgs e)
40 | {
41 | base.OnStateChanged(e);
42 | InvalidateMeasure();
43 | }
44 |
45 |
46 | ///
47 | /// Make sure startup window is within the visible screen area
48 | ///
49 | ///
50 | /// https://stackoverflow.com/questions/987018/determining-if-a-form-is-completely-off-screen/987090
51 | public void SetOnScreen(Window win)
52 | {
53 | if (win == null) return;
54 | var windowRect = new System.Drawing.Rectangle((int)win.Left, (int)win.Top, (int)win.Width, (int)win.Height);
55 |
56 | if (Screen.AllScreens.Any(s => s.WorkingArea.IntersectsWith(windowRect))) return;
57 | win.Top = 10;
58 | win.Left = 10;
59 | win.Height = 510;
60 | win.Width = 850;
61 | win.WindowState = WindowState.Normal;
62 | }
63 | }
64 | }
65 |
--------------------------------------------------------------------------------
/GS.Server/Model3D/Model3DV.xaml.cs:
--------------------------------------------------------------------------------
1 | using System.Runtime.InteropServices;
2 |
3 | namespace GS.Server.Model3D
4 | {
5 | ///
6 | /// Interaction logic for FocuserView.xaml
7 | ///
8 | [ComVisible(false)]
9 | public partial class Model3DV
10 | {
11 | public Model3DV()
12 | {
13 | InitializeComponent();
14 | }
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/GS.Server/Models/compassN.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rmorgan001/GSServer/6d156bb0755f231859aee11ea85b1f9f51d3cf66/GS.Server/Models/compassN.png
--------------------------------------------------------------------------------
/GS.Server/Models/compassS.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rmorgan001/GSServer/6d156bb0755f231859aee11ea85b1f9f51d3cf66/GS.Server/Models/compassS.png
--------------------------------------------------------------------------------
/GS.Server/Pec/PecV.xaml.cs:
--------------------------------------------------------------------------------
1 | using System.Runtime.InteropServices;
2 |
3 | namespace GS.Server.Pec
4 | {
5 | ///
6 | /// Interaction logic for FocuserView.xaml
7 | ///
8 | [ComVisible(false)]
9 | public partial class PecV
10 | {
11 | public PecV()
12 | {
13 | InitializeComponent();
14 | }
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/GS.Server/Plot/PlotV.xaml.cs:
--------------------------------------------------------------------------------
1 | using System.Runtime.InteropServices;
2 |
3 | namespace GS.Server.Plot
4 | {
5 | ///
6 | /// Interaction logic for FocuserView.xaml
7 | ///
8 | [ComVisible(false)]
9 | public partial class PlotV
10 | {
11 | public PlotV()
12 | {
13 | InitializeComponent();
14 | }
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/GS.Server/PoleLocator/PoleLocatorV.xaml.cs:
--------------------------------------------------------------------------------
1 | using System.Runtime.InteropServices;
2 |
3 | namespace GS.Server.PoleLocator
4 | {
5 | ///
6 | /// Interaction logic for FocuserView.xaml
7 | ///
8 | [ComVisible(false)]
9 | public partial class PoleLocatorV
10 | {
11 | public PoleLocatorV()
12 | {
13 | InitializeComponent();
14 | }
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/GS.Server/Properties/Alignment.settings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | False
7 |
8 |
9 | 0.27777777
10 |
11 |
12 | False
13 |
14 |
15 | 0
16 |
17 |
18 | 0
19 |
20 |
21 | 0
22 |
23 |
24 | 0
25 |
26 |
27 | 2
28 |
29 |
30 |
--------------------------------------------------------------------------------
/GS.Server/Properties/Focuser.settings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 | 10
10 |
11 |
12 | 2
13 |
14 |
15 |
16 |
17 |
18 | False
19 |
20 |
21 |
--------------------------------------------------------------------------------
/GS.Server/Properties/launchSettings.json:
--------------------------------------------------------------------------------
1 | {
2 | "profiles": {
3 | "GS.Server": {
4 | "commandName": "Project"
5 | }
6 | }
7 | }
--------------------------------------------------------------------------------
/GS.Server/Pulses/PulsesV.xaml.cs:
--------------------------------------------------------------------------------
1 | using System.Runtime.InteropServices;
2 |
3 | namespace GS.Server.Pulses
4 | {
5 | ///
6 | /// Interaction logic for PulsesView.xaml
7 | ///
8 | [ComVisible(false)]
9 | public partial class PulsesV
10 | {
11 | public PulsesV()
12 | {
13 | InitializeComponent();
14 | }
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/GS.Server/Resources/ASCOM.snk:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rmorgan001/GSServer/6d156bb0755f231859aee11ea85b1f9f51d3cf66/GS.Server/Resources/ASCOM.snk
--------------------------------------------------------------------------------
/GS.Server/Resources/Horsehead.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rmorgan001/GSServer/6d156bb0755f231859aee11ea85b1f9f51d3cf66/GS.Server/Resources/Horsehead.png
--------------------------------------------------------------------------------
/GS.Server/Resources/IC1396.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rmorgan001/GSServer/6d156bb0755f231859aee11ea85b1f9f51d3cf66/GS.Server/Resources/IC1396.png
--------------------------------------------------------------------------------
/GS.Server/Resources/M33.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rmorgan001/GSServer/6d156bb0755f231859aee11ea85b1f9f51d3cf66/GS.Server/Resources/M33.png
--------------------------------------------------------------------------------
/GS.Server/Resources/NGC6992.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rmorgan001/GSServer/6d156bb0755f231859aee11ea85b1f9f51d3cf66/GS.Server/Resources/NGC6992.png
--------------------------------------------------------------------------------
/GS.Server/Resources/Orion.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rmorgan001/GSServer/6d156bb0755f231859aee11ea85b1f9f51d3cf66/GS.Server/Resources/Orion.png
--------------------------------------------------------------------------------
/GS.Server/Resources/Vectors.xaml:
--------------------------------------------------------------------------------
1 |
3 | M9,7H13A2,2 0 0,1 15,9V11A2,2 0 0,1 13,13H11V17H9V7M11,9V11H13V9H11M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z
4 |
--------------------------------------------------------------------------------
/GS.Server/Resources/greenswamp1.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rmorgan001/GSServer/6d156bb0755f231859aee11ea85b1f9f51d3cf66/GS.Server/Resources/greenswamp1.ico
--------------------------------------------------------------------------------
/GS.Server/Settings/SettingsV.xaml.cs:
--------------------------------------------------------------------------------
1 | using System.Runtime.InteropServices;
2 |
3 | namespace GS.Server.Settings
4 | {
5 | ///
6 | /// Interaction logic for SettingsV.xaml
7 | ///
8 | [ComVisible(false)]
9 | public partial class SettingsV
10 | {
11 | public SettingsV()
12 | {
13 | InitializeComponent();
14 | }
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/GS.Server/SkyTelescope/AxesRateOfChange.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Windows;
3 |
4 | namespace GS.Server.SkyTelescope
5 | {
6 | ///
7 | ///
8 | ///
9 | internal static class AxesRateOfChange
10 | {
11 | ///
12 | ///
13 | ///
14 | static AxesRateOfChange()
15 | {
16 | Reset();
17 | }
18 |
19 | private static Vector _currentAxisAngles;
20 |
21 | private static Vector _previousAxisAngles;
22 |
23 | private static long _currentTicks;
24 |
25 | private static long _previousTicks;
26 |
27 | ///
28 | ///
29 | ///
30 | public static Vector AxisVelocity
31 | {
32 | get
33 | {
34 | if (_previousTicks > 0 && _currentTicks > _previousTicks)
35 | {
36 | var deltaTime = (double)(_currentTicks - _previousTicks) / TimeSpan.TicksPerSecond;
37 | return (_currentAxisAngles - _previousAxisAngles) / deltaTime;
38 | }
39 | return new Vector(999, 999);
40 | }
41 | }
42 |
43 | ///
44 | ///
45 | ///
46 | ///
47 | ///
48 | ///
49 | public static void Update(double xAxis, double yAxis, DateTime time)
50 | {
51 | _previousAxisAngles = _currentAxisAngles;
52 | _currentAxisAngles = new Vector(xAxis, yAxis);
53 | _previousTicks = _currentTicks;
54 | _currentTicks = time.Ticks;
55 | }
56 |
57 | ///
58 | ///
59 | ///
60 | public static void Reset()
61 | {
62 | _currentAxisAngles = new Vector(0.0, 0.0);
63 | _previousAxisAngles = new Vector(0.0, 0.0);
64 | _currentTicks = 0;
65 | _previousTicks = 0;
66 | }
67 | }
68 | }
69 |
--------------------------------------------------------------------------------
/GS.Server/SkyTelescope/HcLastMove.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace GS.Server.SkyTelescope
4 | {
5 | class HcPrevMove
6 | {
7 | public DateTime StartDate { get; set; }
8 | public SlewDirection Direction { get; set; }
9 | public double Delta { get; set; }
10 | public double? StepStart { get; set; }
11 | public double? StepEnd { get; set; }
12 | public double StepDiff { get; set; }
13 |
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/GS.Server/SkyTelescope/ParkPosition.cs:
--------------------------------------------------------------------------------
1 | /* Copyright(C) 2019-2025 Rob Morgan (robert.morgan.e@gmail.com)
2 |
3 | This program is free software: you can redistribute it and/or modify
4 | it under the terms of the GNU General Public License as published
5 | by the Free Software Foundation, either version 3 of the License, or
6 | (at your option) any later version.
7 |
8 | This program is distributed in the hope that it will be useful,
9 | but WITHOUT ANY WARRANTY; without even the implied warranty of
10 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 | GNU General Public License for more details.
12 |
13 | You should have received a copy of the GNU General Public License
14 | along with this program. If not, see .
15 | */
16 | using ASCOM.DeviceInterface;
17 |
18 | namespace GS.Server.SkyTelescope
19 | {
20 | public class ParkPosition
21 | {
22 | public string Name { get; set; } = "Blank";
23 | public double X { get; set; } = (SkySettings.AlignmentMode == AlignmentModes.algAltAz) ? 0 : 90;
24 | public double Y { get; set; } = (SkySettings.AlignmentMode == AlignmentModes.algAltAz) ? 0 : 90;
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/GS.Server/SkyTelescope/SkyTelescopeV.xaml.cs:
--------------------------------------------------------------------------------
1 | using System.Runtime.InteropServices;
2 | using System.Windows;
3 | using System.Windows.Data;
4 | using System.Windows.Input;
5 |
6 | namespace GS.Server.SkyTelescope
7 | {
8 | ///
9 | /// Interaction logic for TelescopeView.xaml
10 | ///
11 | [ComVisible(false)]
12 | public partial class SkyTelescopeV
13 | {
14 | public SkyTelescopeV()
15 | {
16 | InitializeComponent();
17 | }
18 |
19 | private void GoToDialog_OnMouseRightButtonDown(object sender, MouseButtonEventArgs e)
20 | {
21 | var name = ((FrameworkElement)sender).Name;
22 | switch (name)
23 | {
24 | case "RaDecGoTo":
25 | SkyTelescopeVm.ASkyTelescopeVm.RaDecDialogActive = false;
26 | SkyTelescopeVm.ASkyTelescopeVm.AltAzDialogActive = true;
27 | break;
28 | case "AltAzGoTo":
29 | SkyTelescopeVm.ASkyTelescopeVm.RaDecDialogActive = true;
30 | SkyTelescopeVm.ASkyTelescopeVm.AltAzDialogActive = false;
31 | break;
32 | }
33 | }
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/GS.Server/Snap/SnapV.xaml.cs:
--------------------------------------------------------------------------------
1 | using System.Runtime.InteropServices;
2 |
3 | namespace GS.Server.Snap
4 | {
5 | ///
6 | /// Interaction logic for SnapView.xaml
7 | ///
8 | [ComVisible(false)]
9 | public partial class SnapV
10 | {
11 | public SnapV()
12 | {
13 | InitializeComponent();
14 | }
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/GS.Server/Windows/ButtonsControlV.xaml.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace GS.Server.Windows
4 | {
5 | ///
6 | /// Interaction logic for Window1.xaml
7 | ///
8 | public partial class ButtonsControlV
9 | {
10 | public ButtonsControlV()
11 | {
12 | DataContext = new ButtonsControlVM();
13 | InitializeComponent();
14 | }
15 |
16 | private void MainWindow_OnContentRendered(object sender, EventArgs e)
17 | {
18 | MouseLeftButtonDown += delegate { DragMove(); };
19 | }
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/GS.Server/Windows/HandControlV.xaml:
--------------------------------------------------------------------------------
1 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
--------------------------------------------------------------------------------
/GS.Server/Windows/HandControlV.xaml.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace GS.Server.Windows
4 | {
5 | ///
6 | /// Interaction logic for Window1.xaml
7 | ///
8 | public partial class HandControlV
9 | {
10 | public HandControlV()
11 | {
12 | DataContext = new HandControlVm();
13 | InitializeComponent();
14 | }
15 |
16 | private void MainWindow_OnContentRendered(object sender, EventArgs e)
17 | {
18 | MouseLeftButtonDown += delegate { DragMove(); };
19 | }
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/GS.Server/Windows/HcPulseGuidesV.xaml.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace GS.Server.Windows
4 | {
5 | ///
6 | /// Interaction logic for Window1.xaml
7 | ///
8 | public partial class HcPulseGuidesV
9 | {
10 | public HcPulseGuidesV()
11 | {
12 | DataContext = new HcPulseGuidesVm();
13 | InitializeComponent();
14 | }
15 |
16 | private void MainWindow_OnContentRendered(object sender, EventArgs e)
17 | {
18 | MouseLeftButtonDown += delegate { DragMove(); };
19 | }
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/GS.Server/Windows/MessageControlV.xaml:
--------------------------------------------------------------------------------
1 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
--------------------------------------------------------------------------------
/GS.Server/Windows/MessageControlV.xaml.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace GS.Server.Windows
4 | {
5 | ///
6 | /// Interaction logic for Window1.xaml
7 | ///
8 | public partial class MessageControlV
9 | {
10 | public MessageControlV(string caption, string msg)
11 | {
12 | DataContext = new MessageControlVM(caption, msg);
13 | InitializeComponent();
14 | }
15 |
16 | private void MainWindow_OnContentRendered(object sender, EventArgs e)
17 | {
18 | MouseLeftButtonDown += delegate { DragMove(); };
19 | }
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/GS.Server/Windows/ModelV.xaml.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace GS.Server.Windows
4 | {
5 | ///
6 | /// Interaction logic for Window1.xaml
7 | ///
8 | public partial class ModelV
9 | {
10 | public ModelV()
11 | {
12 | DataContext = new ModelVM();
13 | InitializeComponent();
14 | }
15 |
16 | private void MainWindow_OnContentRendered(object sender, EventArgs e)
17 | {
18 | MouseLeftButtonDown += delegate { DragMove(); };
19 | }
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/GS.Server/Windows/SpiralV.xaml.cs:
--------------------------------------------------------------------------------
1 |
2 |
3 | using System;
4 | using System.Collections.Generic;
5 | using System.Windows;
6 | using System.Windows.Media;
7 | using MaterialDesignThemes.Wpf;
8 |
9 | namespace GS.Server.Windows
10 | {
11 | ///
12 | /// Interaction logic for Window1.xaml
13 | ///
14 | public partial class SpiralV
15 | {
16 | public SpiralV()
17 | {
18 | DataContext = new SpiralVM();
19 | InitializeComponent();
20 | }
21 |
22 | private void MainWindow_OnContentRendered(object sender, EventArgs e)
23 | {
24 | MouseLeftButtonDown += delegate { DragMove(); };
25 | }
26 |
27 | private void LoadPoints()
28 | {
29 | var icons = new List
30 | {
31 | C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18, C19, C20, C21, C22,
32 | C23, C24, C25, C26, C27, C28, C29, C30, C31, C32, C33, C34, C35, C36, C37, C38, C39, C40, C41, C42, C43,
33 | C44, C45, C46, C47, C48
34 | };
35 |
36 | var points = new PointCollection();
37 | foreach (var p in icons)
38 | {
39 | var x = Convert.ToInt32(p.ActualHeight / 2);
40 | var y = Convert.ToInt32(p.ActualWidth / 2);
41 | points.Add(p.TransformToAncestor(SpiralGrid).Transform(new Point(x, y)));
42 | }
43 | SpiralLine.Points = points;
44 | }
45 |
46 | private void SpiralV_OnLoaded(object sender, RoutedEventArgs e)
47 | {
48 | LoadPoints();
49 | }
50 |
51 | private void SpiralV_OnSizeChanged(object sender, SizeChangedEventArgs e)
52 | {
53 | LoadPoints();
54 | }
55 | }
56 | }
57 |
--------------------------------------------------------------------------------
/GS.Server/greenswamp1.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rmorgan001/GSServer/6d156bb0755f231859aee11ea85b1f9f51d3cf66/GS.Server/greenswamp1.ico
--------------------------------------------------------------------------------
/GS.Shared/Comparer.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using System.Linq;
3 |
4 | namespace GS.Shared
5 | {
6 | public class Comparer : IComparer
7 | {
8 | public int Compare(string a, string b)
9 | {
10 | if (string.IsNullOrEmpty(a) || string.IsNullOrEmpty(b)){return 1;}
11 | return a.Split('.').Zip(b.Split('.'),
12 | (x, y) => int.Parse(x).CompareTo(int.Parse(y)))
13 | .FirstOrDefault(i => i != 0);
14 | }
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/GS.Shared/Domain/DebugConverter .cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Diagnostics;
3 | using System.Globalization;
4 | using System.Windows.Data;
5 | using System.Windows.Markup;
6 |
7 | namespace GS.Shared.Domain
8 | {
9 | //Property="{Binding Value, Converter={namespace:DebugExtension}}"
10 | public class DebugConverter : IValueConverter
11 | {
12 | public static readonly DebugConverter Instance = new DebugConverter();
13 | private DebugConverter() { }
14 |
15 | #region IValueConverter Members
16 |
17 | public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
18 | {
19 | Debugger.Break();
20 | return value; //Binding.DoNothing;
21 | }
22 |
23 | public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
24 | {
25 | Debugger.Break();
26 | return value; //Binding.DoNothing;
27 | }
28 |
29 | #endregion
30 | }
31 |
32 | public class DebugExtension : MarkupExtension
33 | {
34 | public override object ProvideValue(IServiceProvider serviceProvider)
35 | {
36 | return DebugConverter.Instance;
37 | }
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/GS.Shared/Domain/EnumUtils.cs:
--------------------------------------------------------------------------------
1 | /* Copyright(C) 2019-2025 Rob Morgan (robert.morgan.e@gmail.com)
2 |
3 | This program is free software: you can redistribute it and/or modify
4 | it under the terms of the GNU General Public License as published
5 | by the Free Software Foundation, either version 3 of the License, or
6 | (at your option) any later version.
7 |
8 | This program is distributed in the hope that it will be useful,
9 | but WITHOUT ANY WARRANTY; without even the implied warranty of
10 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 | GNU General Public License for more details.
12 |
13 | You should have received a copy of the GNU General Public License
14 | along with this program. If not, see .
15 | */
16 |
17 | using System;
18 | using System.Collections.Generic;
19 | using System.Linq;
20 | using System.Reflection;
21 |
22 | namespace GS.Shared.Domain
23 | {
24 | internal static class EnumUtils
25 | {
26 | public static bool TryGetField(object value, out FieldInfo field)
27 | {
28 |
29 | var type = value.GetType();
30 | if (!type.IsEnum)
31 | {
32 | field = null;
33 | return false;
34 | }
35 | field = type.GetField(value.ToString());
36 | return field != null;
37 | }
38 |
39 | public static IEnumerable GetAttributes(FieldInfo field)
40 | where TAttribute : Attribute => field.GetCustomAttributes(typeof(TAttribute), true).Cast();
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/GS.Shared/Domain/NotEmptyValidationRule.cs:
--------------------------------------------------------------------------------
1 | /* Copyright(C) 2019-2025 Rob Morgan (robert.morgan.e@gmail.com)
2 |
3 | This program is free software: you can redistribute it and/or modify
4 | it under the terms of the GNU General Public License as published
5 | by the Free Software Foundation, either version 3 of the License, or
6 | (at your option) any later version.
7 |
8 | This program is distributed in the hope that it will be useful,
9 | but WITHOUT ANY WARRANTY; without even the implied warranty of
10 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 | GNU General Public License for more details.
12 |
13 | You should have received a copy of the GNU General Public License
14 | along with this program. If not, see .
15 | */
16 |
17 | using System.Globalization;
18 | using System.Runtime.InteropServices;
19 | using System.Windows;
20 | using System.Windows.Controls;
21 |
22 | namespace GS.Shared.Domain
23 | {
24 | [ComVisible(false)]
25 | public class NotEmptyValidationRule : ValidationRule
26 | {
27 | public override ValidationResult Validate(object value, CultureInfo cultureInfo)
28 | {
29 | return string.IsNullOrWhiteSpace((value ?? "").ToString())
30 | ? new ValidationResult(false, Application.Current.Resources["cvtRequired"].ToString())
31 | : ValidationResult.ValidResult;
32 | }
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/GS.Shared/Domain/NotifyPropertyChangedExtension.cs:
--------------------------------------------------------------------------------
1 | /* Copyright(C) 2019-2025 Rob Morgan (robert.morgan.e@gmail.com)
2 |
3 | This program is free software: you can redistribute it and/or modify
4 | it under the terms of the GNU General Public License as published
5 | by the Free Software Foundation, either version 3 of the License, or
6 | (at your option) any later version.
7 |
8 | This program is distributed in the hope that it will be useful,
9 | but WITHOUT ANY WARRANTY; without even the implied warranty of
10 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 | GNU General Public License for more details.
12 |
13 | You should have received a copy of the GNU General Public License
14 | along with this program. If not, see .
15 | */
16 |
17 | using System;
18 | using System.Collections.Generic;
19 | using System.ComponentModel;
20 | using System.Runtime.CompilerServices;
21 | using System.Runtime.InteropServices;
22 |
23 | namespace GS.Shared.Domain
24 | {
25 | [ComVisible(false)]
26 | public static class NotifyPropertyChangedExtension
27 | {
28 | #pragma warning disable IDE0060 // Remove unused parameter
29 | public static void MutateVerbose(this INotifyPropertyChanged instance, ref TField field, TField newValue,
30 | #pragma warning restore IDE0060 // Remove unused parameter
31 | Action raise, [CallerMemberName] string propertyName = null)
32 | {
33 | if (EqualityComparer.Default.Equals(field, newValue)) return;
34 | field = newValue;
35 | raise?.Invoke(new PropertyChangedEventArgs(propertyName));
36 | }
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/GS.Shared/Domain/NullImageConverter.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Globalization;
3 | using System.Windows;
4 | using System.Windows.Data;
5 |
6 | namespace GS.Shared.Domain
7 | {
8 | public class NullImageConverter : IValueConverter
9 | {
10 | public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
11 | {
12 | return value ?? DependencyProperty.UnsetValue;
13 | }
14 |
15 | public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
16 | {
17 | return Binding.DoNothing;
18 | }
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/GS.Shared/Domain/OrdinalConverter.cs:
--------------------------------------------------------------------------------
1 | using System.Windows.Controls;
2 | using System.Windows.Data;
3 |
4 | namespace GS.Shared.Domain
5 | {
6 | public class OrdinalConverter : IValueConverter
7 | {
8 | public object Convert(object value, System.Type targetType, object parameter, System.Globalization.CultureInfo culture)
9 | {
10 |
11 | var lvi = value as DataGridRow;
12 | var ordinal = 0;
13 |
14 | if (lvi != null)
15 | {
16 | if (ItemsControl.ItemsControlFromItemContainer(lvi) is DataGrid lv) ordinal = lv.ItemContainerGenerator.IndexFromContainer(lvi) + 1;
17 | }
18 |
19 | return ordinal;
20 |
21 | }
22 |
23 | public object ConvertBack(object value, System.Type targetType, object parameter, System.Globalization.CultureInfo culture)
24 | {
25 | // This converter does not provide conversion back from ordinal position to list view item
26 | throw new System.InvalidOperationException();
27 | }
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/GS.Shared/Enums.cs:
--------------------------------------------------------------------------------
1 | /* Copyright(C) 2019-2025 Rob Morgan (robert.morgan.e@gmail.com)
2 |
3 | This program is free software: you can redistribute it and/or modify
4 | it under the terms of the GNU General Public License as published
5 | by the Free Software Foundation, either version 3 of the License, or
6 | (at your option) any later version.
7 |
8 | This program is distributed in the hope that it will be useful,
9 | but WITHOUT ANY WARRANTY; without even the implied warranty of
10 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 | GNU General Public License for more details.
12 |
13 | You should have received a copy of the GNU General Public License
14 | along with this program. If not, see .
15 | */
16 | using System;
17 | using System.Collections.Generic;
18 | using System.Linq;
19 |
20 | namespace GS.Shared
21 | {
22 | public static class Enums
23 | {
24 | public static IEnumerable GetFlags(Enum input)
25 | {
26 | return Enum.GetValues(input.GetType()).Cast().Where(input.HasFlag);
27 | }
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/GS.Shared/GSColors.cs:
--------------------------------------------------------------------------------
1 | /* Copyright(C) 2019-2025 Rob Morgan (robert.morgan.e@gmail.com)
2 |
3 | This program is free software: you can redistribute it and/or modify
4 | it under the terms of the GNU General Public License as published
5 | by the Free Software Foundation, either version 3 of the License, or
6 | (at your option) any later version.
7 |
8 | This program is distributed in the hope that it will be useful,
9 | but WITHOUT ANY WARRANTY; without even the implied warranty of
10 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 | GNU General Public License for more details.
12 |
13 | You should have received a copy of the GNU General Public License
14 | along with this program. If not, see .
15 | */
16 |
17 | using System.Windows.Media;
18 | using Color = System.Drawing.Color;
19 |
20 | namespace GS.Shared
21 | {
22 | public class GSColors
23 | {
24 | public Brush DrawingColorToBrush(Color color)
25 | {
26 | Brush ret = null;
27 | var m = new BrushConverter();
28 | var s = "#" + color.ToArgb().ToString("X8");
29 | if (m.CanConvertFrom(typeof(string)))
30 | {
31 | ret = (Brush)m.ConvertFromString(s);
32 | }
33 | return ret;
34 | }
35 |
36 | public Brush ToBrush(Color color)
37 | {
38 | return new SolidColorBrush(System.Windows.Media.Color.FromArgb(color.A, color.R, color.G, color.B));
39 | }
40 |
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/GS.Shared/GssAttribute.cs:
--------------------------------------------------------------------------------
1 | /* Copyright(C) 2019-2025 Rob Morgan (robert.morgan.e@gmail.com)
2 |
3 | This program is free software: you can redistribute it and/or modify
4 | it under the terms of the GNU General Public License as published
5 | by the Free Software Foundation, either version 3 of the License, or
6 | (at your option) any later version.
7 |
8 | This program is distributed in the hope that it will be useful,
9 | but WITHOUT ANY WARRANTY; without even the implied warranty of
10 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 | GNU General Public License for more details.
12 |
13 | You should have received a copy of the GNU General Public License
14 | along with this program. If not, see .
15 | */
16 | using System;
17 |
18 | namespace GS.Shared
19 | {
20 | ///
21 | /// Specific GS Server attribute that is check when a driver assembly loads
22 | ///
23 | [AttributeUsage(AttributeTargets.Class, Inherited = false)]
24 | public sealed class GssAttribute : Attribute
25 | {
26 | ///
27 | /// Initializes a new instance of the class.
28 | ///
29 | /// The 'friendly name' of the served class.
30 | public GssAttribute(string name)
31 | {
32 | DisplayName = name;
33 | }
34 |
35 | ///
36 | /// Gets or sets the 'friendly name' of the served class, as registered with the AsCom Chooser.
37 | ///
38 | /// The 'friendly name' of the served class.
39 | public string DisplayName { get; }
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/GS.Shared/Resources/ASCOM.snk:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rmorgan001/GSServer/6d156bb0755f231859aee11ea85b1f9f51d3cf66/GS.Shared/Resources/ASCOM.snk
--------------------------------------------------------------------------------
/GS.Shared/Transport/DiscoveryState.cs:
--------------------------------------------------------------------------------
1 | using System.Net;
2 | using System.Threading;
3 |
4 | namespace GS.Shared.Transport
5 | {
6 | public class DiscoveryState
7 | {
8 | public DiscoveryState(IPAddress interfaceAddress, CancellationTokenSource cts)
9 | {
10 | InterfaceAddress = interfaceAddress;
11 | Cts = cts;
12 | }
13 |
14 | public IPAddress InterfaceAddress { get; }
15 |
16 | public CancellationTokenSource Cts { get; }
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/GS.Shared/Transport/GSSerialPort.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.IO.Ports;
3 |
4 | namespace GS.Shared.Transport
5 | {
6 | [Flags]
7 | public enum SerialOptions
8 | {
9 | None = 0,
10 | DtrEnable = 1,
11 | RtsEnable = 1 << 1,
12 | DiscardNull = 1 << 2
13 | }
14 |
15 | public sealed class GSSerialPort : SerialPort, ISerialPort
16 | {
17 | public GSSerialPort(
18 | string portName,
19 | int baudRate,
20 | TimeSpan readTimeout,
21 | Handshake handshake,
22 | Parity parity,
23 | StopBits stopBits,
24 | int dataBits,
25 | SerialOptions options
26 | )
27 | {
28 | Encoding = System.Text.Encoding.ASCII;
29 | PortName = portName;
30 | BaudRate = baudRate;
31 | ReadTimeout = (int)readTimeout.TotalMilliseconds;
32 | StopBits = stopBits;
33 | DataBits = dataBits;
34 | Handshake = handshake;
35 | Parity = parity;
36 | DtrEnable = options.HasFlag(SerialOptions.DtrEnable);
37 | RtsEnable = options.HasFlag(SerialOptions.RtsEnable);
38 | DiscardNull = options.HasFlag(SerialOptions.DiscardNull);
39 | }
40 | }
41 | }
42 |
43 |
--------------------------------------------------------------------------------
/GS.Shared/Transport/ISerialPort.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace GS.Shared.Transport
4 | {
5 | public interface ISerialPort : IDisposable
6 | {
7 | ///
8 | /// Read timeout in milliseconds
9 | ///
10 | int ReadTimeout { get; }
11 |
12 | bool IsOpen { get; }
13 |
14 | void Open();
15 |
16 | void Write(string data);
17 |
18 | string ReadExisting();
19 |
20 | void DiscardInBuffer();
21 |
22 | void DiscardOutBuffer();
23 | }
24 | }
--------------------------------------------------------------------------------
/GS.Simulator/AxisStatus.cs:
--------------------------------------------------------------------------------
1 | /* Copyright(C) 2019-2025 Rob Morgan (robert.morgan.e@gmail.com)
2 |
3 | This program is free software: you can redistribute it and/or modify
4 | it under the terms of the GNU General Public License as published
5 | by the Free Software Foundation, either version 3 of the License, or
6 | (at your option) any later version.
7 |
8 | This program is distributed in the hope that it will be useful,
9 | but WITHOUT ANY WARRANTY; without even the implied warranty of
10 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 | GNU General Public License for more details.
12 |
13 | You should have received a copy of the GNU General Public License
14 | along with this program. If not, see .
15 | */
16 | namespace GS.Simulator
17 | {
18 | public struct AxisStatus
19 | {
20 | //public Axis Axis { get; set; }
21 | public bool Slewing { get; set; }
22 | public bool Stopped { get; set; }
23 | //public bool Tracking { get; set; }
24 | //public bool Rate { get; set; }
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/GS.Simulator/GS.Simulator.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 | GS.Simulator
4 | GS.Simulator
5 | GS.Simulator
6 | {E463EC96-56DA-447B-8719-F68C33771185}
7 | net472
8 | ..\Builds\$(Configuration)\
9 | true
10 | true
11 | false
12 | false
13 |
14 |
15 | pdbonly
16 |
17 |
18 | true
19 |
20 |
21 | Resources\ASCOM.snk
22 |
23 |
24 | x86
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 | false
35 |
36 |
37 | false
38 |
39 |
40 |
41 |
42 | runtime
43 |
44 |
45 |
46 |
47 |
48 |
--------------------------------------------------------------------------------
/GS.Simulator/MountInfo.cs:
--------------------------------------------------------------------------------
1 | /* Copyright(C) 2019-2025 Rob Morgan (robert.morgan.e@gmail.com)
2 |
3 | This program is free software: you can redistribute it and/or modify
4 | it under the terms of the GNU General Public License as published
5 | by the Free Software Foundation, either version 3 of the License, or
6 | (at your option) any later version.
7 |
8 | This program is distributed in the hope that it will be useful,
9 | but WITHOUT ANY WARRANTY; without even the implied warranty of
10 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 | GNU General Public License for more details.
12 |
13 | You should have received a copy of the GNU General Public License
14 | along with this program. If not, see .
15 | */
16 | namespace GS.Simulator
17 | {
18 | public struct MountInfo
19 | {
20 | //public bool CanAxisSlewsIndependent { get; set; }
21 | //public bool CanAzEq { get; set; }
22 | //public bool CanDualEncoders { get; set; }
23 | //public bool CanHalfTrack { get; set; }
24 | public bool CanHomeSensors { get; set; }
25 | //public bool CanPolarLed { get; set; }
26 | //public bool CanPPec { get; set; }
27 | //public bool CanWifi { get; set; }
28 | //public string MountName { get; set; }
29 | //public string MountVersion { get; set; }
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/GS.Simulator/Resources/ASCOM.snk:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rmorgan001/GSServer/6d156bb0755f231859aee11ea85b1f9f51d3cf66/GS.Simulator/Resources/ASCOM.snk
--------------------------------------------------------------------------------
/GS.SkyApi/Resources/ASCOM.snk:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rmorgan001/GSServer/6d156bb0755f231859aee11ea85b1f9f51d3cf66/GS.SkyApi/Resources/ASCOM.snk
--------------------------------------------------------------------------------
/GS.SkyApi/SkyScripts/Basic.ps1:
--------------------------------------------------------------------------------
1 | #Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Bypass -Force;
2 | #Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Unrestricted -Force;
3 |
4 | #Necessary - Create a new instance of the GS.Sky.Api.dll
5 | $GS = New-Object -COMObject "GS.SkyApi"
6 |
7 | # Necessary - Turn off GSS from processing ascom movements
8 | # from other sources
9 | $GS.AscomOn = $false;
10 |
11 | For ($i=0; $i -le 10; $i++) {
12 | $GS.AxisStop(1)
13 | $GS.AxisStop(2)
14 | }
15 |
16 | # Is Axis stopped
17 | Write-Host "Stopped:" $GS.IsFullStop(1)
18 | #is ASCOM on
19 | Write-Host "ASCOM on:" $GS.AscomOn
20 |
21 | #move 10 degrees in positive direction
22 | $GS.AxisGoToTarget(1,10)
23 | DO{
24 | $axis1Stoppped = $GS.IsFullStop(1)
25 | Write-Host $GS.GetAxisPosition(1)
26 |
27 | } while ($axis1Stoppped -eq $false)
28 |
29 | #move to 0 degrees
30 | $GS.AxisGoToTarget(1,0)
31 | DO{
32 | $axis1Stoppped = $GS.IsFullStop(1)
33 | Write-Host $GS.GetAxisPosition(1)
34 |
35 | } while ($axis1Stoppped -eq $false)
36 |
37 |
38 | #Necessary - Relese the Com Object
39 | [System.Runtime.Interopservices.Marshal]::ReleaseComObject($GS)
40 | Remove-Variable GS
--------------------------------------------------------------------------------
/GS.SkyApi/SkyScripts/Capabilities.ps1:
--------------------------------------------------------------------------------
1 | # Clear the console pane
2 | Clear-Host
3 |
4 | #Necessary - Create a new instance of the GS.Sky.Api.dll
5 | $GS = New-Object -COMObject "GS.SkyApi"
6 |
7 | Write-Host "PPEC On:" $GS.IsPpecOn
8 | Write-Host "PPEC Training On:" $GS.IsPpecInTrainingOn
9 | Write-Host "Support for Az/Eq:" $GS.CanAzEq
10 | Write-Host "Support for Dual Encoders:" $GS.CanDualEncoders
11 | Write-Host "Support for track at half speed:" $GS.CanHalfTrack
12 | Write-Host "Support for polar LED:" $GS.CanPolarLed
13 | Write-Host "Support for PPEC:" $GS.CanPpec
14 | Write-Host "Support for CanWifi:" $GS.CanWifi
15 |
16 |
17 |
18 | # Necessary - Relese the Com Object
19 | [System.Runtime.Interopservices.Marshal]::ReleaseComObject($GS)
20 | Remove-Variable GS
--------------------------------------------------------------------------------
/GS.SkyApi/SkyScripts/MemberList.ps1:
--------------------------------------------------------------------------------
1 | # Clear the console pane
2 | Clear-Host
3 |
4 | # GSS must be already running and connected to the mount
5 | #Necessary - Create a new instance of the GS.Sky.Api.dll
6 | $GS = New-Object -COMObject "GS.SkyApi"
7 |
8 | # Show the memeber list, which is a list of commands
9 | # available to execute
10 | $GS | Get-Member
11 |
12 | # Necessary - Relese the Com Object
13 | [System.Runtime.Interopservices.Marshal]::ReleaseComObject($GS)
14 | Remove-Variable GS
--------------------------------------------------------------------------------
/GS.SkyApi/SkyScripts/MotionMode.ps1:
--------------------------------------------------------------------------------
1 | # Clear the console pane
2 | Clear-Host
3 |
4 | # GSS must be already running and connected to the mount
5 | #Necessary - Create a new instance of the GS.Sky.Api.dll
6 | $GS = New-Object -COMObject "GS.SkyApi"
7 |
8 | $GS.AxisStop(1)
9 |
10 | $GS.SetMotionMode(1,1,1) #G
11 | $GS.SetGotoTargetIncrement(1,3) #H
12 | $GS.SetStepSpeed(1,4)
13 | $GS.StartMotion(1)
14 |
15 | DO{
16 | $axis1SlewingTo = $GS.IsSlewing(1)
17 | Write-Host "Axis1 Position:" $GS.GetAxisPosition(1)
18 |
19 | } while ($axis1SlewingTo -eq $true)
20 |
21 | $GS.AxisStop(1)
22 |
23 | # Write out position
24 | Write-Host "Axis1 Position:" $GS.GetAxisPosition(1)
25 |
26 | # Necessary - Relese the Com Object
27 | [System.Runtime.Interopservices.Marshal]::ReleaseComObject($GS)
28 | Remove-Variable GS
--------------------------------------------------------------------------------
/GS.SkyApi/SkyScripts/Move10Degrees.ps1:
--------------------------------------------------------------------------------
1 | # Clear the console pane
2 | Clear-Host
3 |
4 | # GSS must be already running and connected to the mount
5 | #Necessary - Create a new instance of the GS.Sky.Api.dll
6 | $GS = New-Object -COMObject "GS.SkyApi"
7 |
8 | # Necessary - Turn off GSS from processing ascom movements
9 | # from other sources
10 | $GS.AscomOn = $false;
11 |
12 | # Stop both axis
13 | $GS.AxisStop(1)
14 | $GS.AxisStop(2)
15 |
16 | # Write to console if bothe axis have stopped
17 | Write-Host "Axis1 Stopped:" $GS.IsFullStop(1)
18 | Write-Host "Axis2 Stopped:" $GS.IsFullStop(2)
19 |
20 | # Write current positions of both axis
21 | Write-Host "Axis1 Position:" $GS.GetAxisPosition(1)
22 | Write-Host "Axis2 Position:" $GS.GetAxisPosition(2)
23 |
24 | # Move axis1 to 10 degrees in positive direction
25 | $GS.AxisGoToTarget(1,10)
26 | DO{
27 | $axis1Stoppped = $GS.IsFullStop(1)
28 |
29 | } while ($axis1Stoppped -eq $false)
30 |
31 | # Write out position
32 | Write-Host "Axis1 Position:" $GS.GetAxisPosition(1)
33 |
34 | # Move axis1 to -10 degrees in negative direction
35 | $GS.AxisGoToTarget(1,-10)
36 | DO{
37 | $axis1Stoppped = $GS.IsFullStop(1)
38 |
39 | } while ($axis1Stoppped -eq $false)
40 |
41 | # Write out position
42 | Write-Host "Axis1 Position:" $GS.GetAxisPosition(1)
43 |
44 | # Move axis1 back to 0
45 | $GS.AxisGoToTarget(1,0)
46 | DO{
47 | $axis1Stoppped = $GS.IsFullStop(1)
48 |
49 | } while ($axis1Stoppped -eq $false)
50 |
51 | # Write out position
52 | Write-Host "Axis1 Position:" $GS.GetAxisPosition(1)
53 |
54 | # Necessary - Relese the Com Object
55 | [System.Runtime.Interopservices.Marshal]::ReleaseComObject($GS)
56 | Remove-Variable GS
--------------------------------------------------------------------------------
/GS.SkyApi/SkyScripts/Move10Seconds.ps1:
--------------------------------------------------------------------------------
1 | # Clear the console pane
2 | Clear-Host
3 |
4 | # GSS must be already running and connected to the mount
5 | #Necessary - Create a new instance of the GS.Sky.Api.dll
6 | $GS = New-Object -COMObject "GS.SkyApi"
7 |
8 | # Necessary - Turn off GSS from processing ascom movements
9 | # from other sources
10 | $GS.AscomOn = $false;
11 |
12 | # Stop Axis 1
13 | $GS.AxisStop(1)
14 |
15 | # Move axis1 at a rate of 1 degree for 10 seconds
16 | $GS.AxisSlew(1,1)
17 | $timeout = new-timespan -Seconds 10
18 | $sw = [diagnostics.stopwatch]::StartNew()
19 | while ($sw.elapsed -lt $timeout){
20 |
21 | Write-Host "Axis1 Moving Position:" $GS.GetAxisPosition(1)
22 |
23 | start-sleep -seconds 1
24 | }
25 |
26 | # Stop axis
27 | $GS.AxisStop(1)
28 |
29 | # Wait a second to stop. Must be stopped before issuing another move
30 | start-sleep -seconds 1
31 |
32 | # Write out position
33 | Write-Host "Axis1 Finished Position:" $GS.GetAxisPosition(1)
34 |
35 | # Move axis1 back to 0
36 | $GS.AxisGoToTarget(1,0)
37 | DO{
38 | $axis1Stoppped = $GS.IsFullStop(1)
39 |
40 | } while ($axis1Stoppped -eq $false)
41 |
42 | # Write out position
43 | Write-Host "Axis1 Home Position:" $GS.GetAxisPosition(1)
44 |
45 | # Necessary - Relese the Com Object
46 | [System.Runtime.Interopservices.Marshal]::ReleaseComObject($GS)
47 | Remove-Variable GS
--------------------------------------------------------------------------------
/GS.SkyApi/SkyScripts/Park.ps1:
--------------------------------------------------------------------------------
1 | # Clear the console pane
2 | Clear-Host
3 |
4 | #Necessary - Create a new instance of the GS.Sky.Api.dll
5 | $GS = New-Object -COMObject "GS.SkyApi"
6 |
7 | $GS.SetSimGotoSpeed(15)
8 |
9 | Write-Host "Done"
10 |
11 |
12 | # Necessary - Relese the Com Object
13 | [System.Runtime.Interopservices.Marshal]::ReleaseComObject($GS)
14 | Remove-Variable GS
--------------------------------------------------------------------------------
/GS.SkyApi/SkyScripts/SimGotoSpeed.ps1:
--------------------------------------------------------------------------------
1 | # Clear the console pane
2 | Clear-Host
3 |
4 | #Necessary - Create a new instance of the GS.Sky.Api.dll
5 | $GS = New-Object -COMObject "GS.SkyApi"
6 |
7 | $GS.SetSimGotoSpeed(15)
8 |
9 | Write-Host "Done"
10 |
11 |
12 | # Necessary - Relese the Com Object
13 | [System.Runtime.Interopservices.Marshal]::ReleaseComObject($GS)
14 | Remove-Variable GS
--------------------------------------------------------------------------------
/GS.SkyApi/SkyScripts/Versions.ps1:
--------------------------------------------------------------------------------
1 | # Clear the console pane
2 | Clear-Host
3 |
4 | # GSS must be already running and connected to the mount
5 | #Necessary - Create a new instance of the GS.Sky.Api.dll
6 | $GS = New-Object -COMObject "GS.SkyApi"
7 |
8 | # Necessary - Turn off GSS from processing ascom movements
9 | # from other sources
10 | $GS.AscomOn = $false;
11 |
12 | # Show the memeber list, which is a list of commands
13 | # available to execute
14 | $GS | Get-Member
15 |
16 | # String array versions
17 | Write-Host "Axis String Versions:"
18 | $versions = $GS.GetAxisStringVersions()
19 | Write-Host "Axis 1 Version:" $versions[0]
20 | Write-Host "Axis 2 Version:" $versions[1]
21 |
22 | #`0 Null
23 | #`a Alert
24 | #`b Backspace
25 | #`f Form feed
26 | #`n New line
27 | #`r Carriage return
28 | #`t Horizontal tab
29 | #`v Vertical tab
30 | write-host "`n"
31 | write-host "`r"
32 |
33 | #Integer array versions
34 | Write-Host "Axis Integer Versions:"
35 | $versions = $GS.GetAxisVersions()
36 | Write-Host "Axis 1 Version:" $versions[0]
37 | Write-Host "Axis 2 Version:" $versions[1]
38 |
39 | # Necessary - Relese the Com Object
40 | [System.Runtime.Interopservices.Marshal]::ReleaseComObject($GS)
41 | Remove-Variable GS
--------------------------------------------------------------------------------
/GS.SkyApi/app.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/GS.SkyWatcher/Resources/ASCOM.snk:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rmorgan001/GSServer/6d156bb0755f231859aee11ea85b1f9f51d3cf66/GS.SkyWatcher/Resources/ASCOM.snk
--------------------------------------------------------------------------------
/GS.Utilities/App.xaml:
--------------------------------------------------------------------------------
1 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/GS.Utilities/Controls/Dialogs/DelFilesDialog.xaml:
--------------------------------------------------------------------------------
1 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/GS.Utilities/Controls/Dialogs/DelFilesDialog.xaml.cs:
--------------------------------------------------------------------------------
1 | using System.Runtime.InteropServices;
2 |
3 | namespace GS.Utilities.Controls.Dialogs
4 | {
5 | ///
6 | /// Interaction logic for Window1.xaml
7 | ///
8 | [ComVisible(false)]
9 | public partial class DelFilesDialog
10 | {
11 | public DelFilesDialog()
12 | {
13 | InitializeComponent();
14 | }
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/GS.Utilities/Controls/Dialogs/Dialog.xaml:
--------------------------------------------------------------------------------
1 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
16 |
20 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/GS.Utilities/Controls/Dialogs/Dialog.xaml.cs:
--------------------------------------------------------------------------------
1 | using System.Runtime.InteropServices;
2 |
3 | namespace GS.Utilities.Controls.Dialogs
4 | {
5 | ///
6 | /// Interaction logic for Window1.xaml
7 | ///
8 | [ComVisible(false)]
9 | public partial class Dialog
10 | {
11 | public Dialog()
12 | {
13 | InitializeComponent();
14 | }
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/GS.Utilities/Controls/Dialogs/ErrorMessageDialog.xaml:
--------------------------------------------------------------------------------
1 |
9 |
10 |
11 |
12 |
13 |
14 |
17 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/GS.Utilities/Controls/Dialogs/ErrorMessageDialog.xaml.cs:
--------------------------------------------------------------------------------
1 | using System.Runtime.InteropServices;
2 |
3 | namespace GS.Utilities.Controls.Dialogs
4 | {
5 | ///
6 | /// Interaction logic for ErrorMessageDialog.xaml
7 | ///
8 | [ComVisible(false)]
9 | public partial class ErrorMessageDialog
10 | {
11 | public ErrorMessageDialog()
12 | {
13 | InitializeComponent();
14 | }
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/GS.Utilities/Controls/Dialogs/ErrorMessageDialogVM.cs:
--------------------------------------------------------------------------------
1 | /* Copyright(C) 2019-2025 Rob Morgan (robert.morgan.e@gmail.com)
2 |
3 | This program is free software: you can redistribute it and/or modify
4 | it under the terms of the GNU General Public License as published
5 | by the Free Software Foundation, either version 3 of the License, or
6 | (at your option) any later version.
7 |
8 | This program is distributed in the hope that it will be useful,
9 | but WITHOUT ANY WARRANTY; without even the implied warranty of
10 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 | GNU General Public License for more details.
12 |
13 | You should have received a copy of the GNU General Public License
14 | along with this program. If not, see .
15 | */
16 |
17 | using System;
18 | using System.ComponentModel;
19 | using GS.Shared.Domain;
20 |
21 | namespace GS.Utilities.Controls.Dialogs
22 | {
23 | class ErrorMessageDialogVM : INotifyPropertyChanged
24 | {
25 | private string _name;
26 | public string Name
27 | {
28 | get => _name;
29 | set => this.MutateVerbose(ref _name, value, RaisePropertyChanged());
30 | }
31 |
32 | public event PropertyChangedEventHandler PropertyChanged;
33 |
34 | private Action RaisePropertyChanged()
35 | {
36 | return args => PropertyChanged?.Invoke(this, args);
37 | }
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/GS.Utilities/Controls/Dialogs/TwoButtonMessageDialog.xaml:
--------------------------------------------------------------------------------
1 |
8 |
9 |
10 |
11 |
12 |
17 |
24 |
25 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/GS.Utilities/Controls/Dialogs/TwoButtonMessageDialog.xaml.cs:
--------------------------------------------------------------------------------
1 | using System.Runtime.InteropServices;
2 |
3 | namespace GS.Utilities.Controls.Dialogs
4 | {
5 | [ComVisible(false)]
6 | public partial class TwoButtonMessageDialog
7 | {
8 | private TwoButtonMessageDialog()
9 | {
10 | InitializeComponent();
11 | }
12 | public TwoButtonMessageDialog(TwoButtonMessageDialogVM viewModel) : this()
13 | {
14 | this.DataContext = viewModel;
15 | }
16 |
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/GS.Utilities/Controls/WindowTitleBar.xaml.cs:
--------------------------------------------------------------------------------
1 | using System.Runtime.InteropServices;
2 |
3 | namespace GS.Utilities.Controls
4 | {
5 | ///
6 | /// Interaction logic for TopCoordsBar.xaml
7 | ///
8 | [ComVisible(false)]
9 | public partial class WindowTitleBar
10 | {
11 | public WindowTitleBar()
12 | {
13 | InitializeComponent();
14 | }
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/GS.Utilities/Main/MainWindowV.xaml.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using GS.Utilities.Helpers;
3 |
4 | namespace GS.Utilities.Main
5 | {
6 | ///
7 | /// Interaction logic for MainWindow.xaml
8 | ///
9 | public partial class MainWindowV
10 | {
11 | public MainWindowV()
12 | {
13 | InitializeComponent();
14 | DataContext = new MainWindowVM();
15 | }
16 |
17 | private void MainWindow_OnClosed(object sender, EventArgs e)
18 | {
19 | Settings.Save();
20 | }
21 |
22 | public void Dispose()
23 | {
24 | // var vm = (MainWindowVM)DataContext;
25 |
26 | }
27 |
28 | private void MainWindow_OnContentRendered(object sender, EventArgs e)
29 | {
30 | MouseLeftButtonDown += delegate { DragMove(); };
31 | }
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/GS.Utilities/Properties/Utilities.settings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Normal
7 |
8 |
9 | 800
10 |
11 |
12 | 500
13 |
14 |
15 | 0
16 |
17 |
18 | 0
19 |
20 |
21 |
22 |
23 |
24 | en-US
25 |
26 |
27 |
--------------------------------------------------------------------------------
/GS.Utilities/Resources/ASCOM.snk:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rmorgan001/GSServer/6d156bb0755f231859aee11ea85b1f9f51d3cf66/GS.Utilities/Resources/ASCOM.snk
--------------------------------------------------------------------------------
/GS.Utilities/Resources/GSS Cleaner.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rmorgan001/GSServer/6d156bb0755f231859aee11ea85b1f9f51d3cf66/GS.Utilities/Resources/GSS Cleaner.jpg
--------------------------------------------------------------------------------
/GS.Utilities/Resources/greenswamp1.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rmorgan001/GSServer/6d156bb0755f231859aee11ea85b1f9f51d3cf66/GS.Utilities/Resources/greenswamp1.ico
--------------------------------------------------------------------------------
/GS.Utilities/greenswamp1.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rmorgan001/GSServer/6d156bb0755f231859aee11ea85b1f9f51d3cf66/GS.Utilities/greenswamp1.ico
--------------------------------------------------------------------------------
/GSResharper.DotSettings:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/GSSolution.sln.DotSettings:
--------------------------------------------------------------------------------
1 |
2 | C:\Users\Rob\source\repos\GSSolution\GSResharper.DotSettings
3 | ..\GSResharper.DotSettings
4 | True
5 | True
6 | 1
7 | True
--------------------------------------------------------------------------------
/NINA/Model/MyFocuser/AscomFocuserProvider.cs:
--------------------------------------------------------------------------------
1 | #region "copyright"
2 |
3 | /*
4 | Copyright © 2016 - 2021 Stefan Berg and the N.I.N.A. contributors
5 |
6 | This file is part of N.I.N.A. - Nighttime Imaging 'N' Astronomy.
7 |
8 | This Source Code Form is subject to the terms of the Mozilla Public
9 | License, v. 2.0. If a copy of the MPL was not distributed with this
10 | file, You can obtain one at http://mozilla.org/MPL/2.0/.
11 | */
12 |
13 | #endregion "copyright"
14 |
15 | using ASCOM.DriverAccess;
16 |
17 | namespace NINA.Model.MyFocuser
18 | {
19 | public class AscomFocuserProvider : IAscomFocuserProvider
20 | {
21 |
22 | public IFocuserV3Ex GetFocuser(string focuserId, bool connect)
23 | {
24 | var ascomFocuser = new ASCOM.DriverAccess.Focuser(focuserId);
25 | if (connect)
26 | {
27 | ascomFocuser.Connected = true;
28 | }
29 | if (ascomFocuser.Absolute)
30 | {
31 | // Logger.Debug($"Absolute ASCOM Focuser detected {focuserId}");
32 | return new AbsoluteAscomFocuser(ascomFocuser);
33 | }
34 | else
35 | {
36 | // Logger.Debug($"Relative ASCOM Focuser detected {focuserId}");
37 | return new RelativeAscomFocuser(ascomFocuser);
38 | }
39 | }
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/NINA/Model/MyFocuser/IAscomFocuserProvider.cs:
--------------------------------------------------------------------------------
1 | #region "copyright"
2 |
3 | /*
4 | Copyright © 2016 - 2021 Stefan Berg and the N.I.N.A. contributors
5 |
6 | This file is part of N.I.N.A. - Nighttime Imaging 'N' Astronomy.
7 |
8 | This Source Code Form is subject to the terms of the Mozilla Public
9 | License, v. 2.0. If a copy of the MPL was not distributed with this
10 | file, You can obtain one at http://mozilla.org/MPL/2.0/.
11 | */
12 |
13 | #endregion "copyright"
14 |
15 | namespace NINA.Model.MyFocuser
16 | {
17 | public interface IAscomFocuserProvider
18 | {
19 |
20 | IFocuserV3Ex GetFocuser(string focuserId, bool connect);
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/NINA/Model/MyFocuser/IFocuser.cs:
--------------------------------------------------------------------------------
1 | #region "copyright"
2 |
3 | /*
4 | Copyright © 2016 - 2021 Stefan Berg and the N.I.N.A. contributors
5 |
6 | This file is part of N.I.N.A. - Nighttime Imaging 'N' Astronomy.
7 |
8 | This Source Code Form is subject to the terms of the Mozilla Public
9 | License, v. 2.0. If a copy of the MPL was not distributed with this
10 | file, You can obtain one at http://mozilla.org/MPL/2.0/.
11 | */
12 |
13 | #endregion "copyright"
14 |
15 | using System.Threading;
16 | using System.Threading.Tasks;
17 |
18 | namespace NINA.Model.MyFocuser
19 | {
20 | public interface IFocuser : IDevice
21 | {
22 | bool IsMoving { get; }
23 | int MaxIncrement { get; }
24 | int MaxStep { get; }
25 | int Position { get; }
26 | double StepSize { get; }
27 | bool TempCompAvailable { get; }
28 | bool TempComp { get; set; }
29 | double Temperature { get; }
30 |
31 | Task Move(int position, CancellationToken ct);
32 |
33 | void Halt();
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/NINA/Model/MyFocuser/IFocuserV3Ex.cs:
--------------------------------------------------------------------------------
1 | #region "copyright"
2 |
3 | /*
4 | Copyright © 2016 - 2021 Stefan Berg and the N.I.N.A. contributors
5 |
6 | This file is part of N.I.N.A. - Nighttime Imaging 'N' Astronomy.
7 |
8 | This Source Code Form is subject to the terms of the Mozilla Public
9 | License, v. 2.0. If a copy of the MPL was not distributed with this
10 | file, You can obtain one at http://mozilla.org/MPL/2.0/.
11 | */
12 |
13 | #endregion "copyright"
14 |
15 | using ASCOM.DeviceInterface;
16 | using System.Threading;
17 | using System.Threading.Tasks;
18 |
19 | namespace NINA.Model.MyFocuser
20 | {
21 | public interface IFocuserV3Ex : IFocuserV3
22 | {
23 | Task MoveAsync(int position, CancellationToken ct);
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/NINA/Resources/ASCOM.snk:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rmorgan001/GSServer/6d156bb0755f231859aee11ea85b1f9f51d3cf66/NINA/Resources/ASCOM.snk
--------------------------------------------------------------------------------
/NStarAlignment/DataTypes/AlignmentStar.cs:
--------------------------------------------------------------------------------
1 | /* Copyright(C) 2019-2022 Rob Morgan (robert.morgan.e@gmail.com),
2 | Phil Crompton (phil@unitysoftware.co.uk)
3 |
4 | This program is free software: you can redistribute it and/or modify
5 | it under the terms of the GNU General Public License as published
6 | by the Free Software Foundation, either version 3 of the License, or
7 | (at your option) any later version.
8 |
9 | This program is distributed in the hope that it will be useful,
10 | but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | GNU General Public License for more details.
13 |
14 | You should have received a copy of the GNU General Public License
15 | along with this program. If not, see .
16 | */
17 | namespace NStarAlignment.DataTypes
18 | {
19 | public class AlignmentStar
20 | {
21 | public string CommonName { get; set; }
22 | public string AlternateName { get; set; }
23 | public double Ra { get; set; }
24 | public double Dec { get; set; }
25 |
26 | public double Mag { get; set; }
27 |
28 | public AlignmentStar(string commonName, string alternateName, double ra, double dec, double mag)
29 | {
30 | CommonName = commonName;
31 | AlternateName = alternateName;
32 | Ra = ra;
33 | Dec = dec;
34 | Mag = mag;
35 | }
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/NStarAlignment/DataTypes/SphericalCoordinate.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace NStarAlignment.DataTypes
4 | {
5 | [Serializable]
6 | public struct SphericalCoordinate
7 | {
8 | public Angle X;
9 | public Angle Y;
10 | public bool WeightsDown;
11 |
12 | #region Operator overloads ...
13 | ///
14 | /// Compares the two specified sets of Axis positions.
15 | ///
16 | public static bool operator ==(SphericalCoordinate pos1, SphericalCoordinate pos2)
17 | {
18 | return (pos1.X == pos2.X && pos1.Y == pos2.Y && pos1.WeightsDown == pos2.WeightsDown);
19 | }
20 |
21 | public static bool operator !=(SphericalCoordinate pos1, SphericalCoordinate pos2)
22 | {
23 | return !(pos1 == pos2);
24 | }
25 |
26 | public override int GetHashCode()
27 | {
28 | unchecked // Overflow is fine, just wrap
29 | {
30 | int hash = 17;
31 | int wd = (WeightsDown ? 1 : 0);
32 | // Suitable nullity checks etc, of course :)
33 | hash = hash * 23 + X.GetHashCode();
34 | hash = hash * 23 + Y.GetHashCode();
35 | hash = hash * 23 + wd.GetHashCode();
36 | return hash;
37 | }
38 | }
39 |
40 | public override bool Equals(object obj)
41 | {
42 | return (obj is SphericalCoordinate coordinate
43 | && this == coordinate);
44 | }
45 | #endregion
46 | }
47 | }
48 |
--------------------------------------------------------------------------------
/NStarAlignment/DataTypes/TimeRecord.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace NStarAlignment.DataTypes
4 | {
5 | [Serializable]
6 | public struct TimeRecord
7 | {
8 | public DateTime UtcTime { get; private set; }
9 | public double LocalSiderealTime { get; private set; }
10 |
11 | public TimeRecord(DateTime utcTime, double localSiderealTime)
12 | {
13 | UtcTime = utcTime;
14 | LocalSiderealTime = localSiderealTime;
15 | }
16 | }
17 |
18 | }
19 |
--------------------------------------------------------------------------------
/NStarAlignment/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.InteropServices;
3 |
4 | // General Information about an assembly is controlled through the following
5 | // set of attributes. Change these attribute values to modify the information
6 | // associated with an assembly.
7 | [assembly: AssemblyTitle("NStarAlignment")]
8 | [assembly: AssemblyDescription("")]
9 | [assembly: AssemblyConfiguration("")]
10 | [assembly: AssemblyCompany("")]
11 | [assembly: AssemblyProduct("NStarAlignment")]
12 | [assembly: AssemblyCopyright("Copyright © 2022")]
13 | [assembly: AssemblyTrademark("")]
14 | [assembly: AssemblyCulture("")]
15 |
16 | // Setting ComVisible to false makes the types in this assembly not visible
17 | // to COM components. If you need to access a type in this assembly from
18 | // COM, set the ComVisible attribute to true on that type.
19 | [assembly: ComVisible(false)]
20 |
21 | // The following GUID is for the ID of the typelib if this project is exposed to COM
22 | [assembly: Guid("1d17f8ba-f10f-493e-a7b5-941510a59679")]
23 |
24 | // Version information for an assembly consists of the following four values:
25 | //
26 | // Major Version
27 | // Minor Version
28 | // Build Number
29 | // Revision
30 | //
31 | // You can specify all the values or you can default the Build and Revision Numbers
32 | // by using the '*' as shown below:
33 | // [assembly: AssemblyVersion("1.0.*")]
34 | [assembly: AssemblyVersion("1.0.0.0")]
35 | [assembly: AssemblyFileVersion("1.0.0.0")]
36 |
--------------------------------------------------------------------------------
/NStarAlignment/Resources/ASCOM.snk:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rmorgan001/GSServer/6d156bb0755f231859aee11ea85b1f9f51d3cf66/NStarAlignment/Resources/ASCOM.snk
--------------------------------------------------------------------------------
/Resources/Installer/GreenSwampSetup.iss:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rmorgan001/GSServer/6d156bb0755f231859aee11ea85b1f9f51d3cf66/Resources/Installer/GreenSwampSetup.iss
--------------------------------------------------------------------------------
/Resources/Installer/WizardImage.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rmorgan001/GSServer/6d156bb0755f231859aee11ea85b1f9f51d3cf66/Resources/Installer/WizardImage.bmp
--------------------------------------------------------------------------------
/Resources/Installer/WizardImage1.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rmorgan001/GSServer/6d156bb0755f231859aee11ea85b1f9f51d3cf66/Resources/Installer/WizardImage1.bmp
--------------------------------------------------------------------------------
/Resources/Installer/greenswamp2.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rmorgan001/GSServer/6d156bb0755f231859aee11ea85b1f9f51d3cf66/Resources/Installer/greenswamp2.ico
--------------------------------------------------------------------------------
/Resources/Manuals/GSS Manual.docx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rmorgan001/GSServer/6d156bb0755f231859aee11ea85b1f9f51d3cf66/Resources/Manuals/GSS Manual.docx
--------------------------------------------------------------------------------
/Resources/Manuals/GSS Manual.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rmorgan001/GSServer/6d156bb0755f231859aee11ea85b1f9f51d3cf66/Resources/Manuals/GSS Manual.pdf
--------------------------------------------------------------------------------
/Resources/Manuals/Graphics/3d.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rmorgan001/GSServer/6d156bb0755f231859aee11ea85b1f9f51d3cf66/Resources/Manuals/Graphics/3d.jpg
--------------------------------------------------------------------------------
/Resources/Manuals/Graphics/CableToMount.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rmorgan001/GSServer/6d156bb0755f231859aee11ea85b1f9f51d3cf66/Resources/Manuals/Graphics/CableToMount.jpg
--------------------------------------------------------------------------------
/Resources/Manuals/Graphics/GamePad.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rmorgan001/GSServer/6d156bb0755f231859aee11ea85b1f9f51d3cf66/Resources/Manuals/Graphics/GamePad.jpg
--------------------------------------------------------------------------------
/Resources/Manuals/Graphics/MainWindow.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rmorgan001/GSServer/6d156bb0755f231859aee11ea85b1f9f51d3cf66/Resources/Manuals/Graphics/MainWindow.jpg
--------------------------------------------------------------------------------
/Resources/Manuals/Graphics/MainWindow.pdn:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rmorgan001/GSServer/6d156bb0755f231859aee11ea85b1f9f51d3cf66/Resources/Manuals/Graphics/MainWindow.pdn
--------------------------------------------------------------------------------
/Resources/Manuals/Graphics/Monitor.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rmorgan001/GSServer/6d156bb0755f231859aee11ea85b1f9f51d3cf66/Resources/Manuals/Graphics/Monitor.jpg
--------------------------------------------------------------------------------
/Resources/Manuals/Graphics/Notes.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rmorgan001/GSServer/6d156bb0755f231859aee11ea85b1f9f51d3cf66/Resources/Manuals/Graphics/Notes.jpg
--------------------------------------------------------------------------------
/Resources/Manuals/Graphics/Options.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rmorgan001/GSServer/6d156bb0755f231859aee11ea85b1f9f51d3cf66/Resources/Manuals/Graphics/Options.jpg
--------------------------------------------------------------------------------
/Resources/Manuals/Graphics/Options1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rmorgan001/GSServer/6d156bb0755f231859aee11ea85b1f9f51d3cf66/Resources/Manuals/Graphics/Options1.jpg
--------------------------------------------------------------------------------
/Resources/Manuals/Graphics/Pulses.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rmorgan001/GSServer/6d156bb0755f231859aee11ea85b1f9f51d3cf66/Resources/Manuals/Graphics/Pulses.jpg
--------------------------------------------------------------------------------
/Resources/Manuals/Graphics/PulsesSettings.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rmorgan001/GSServer/6d156bb0755f231859aee11ea85b1f9f51d3cf66/Resources/Manuals/Graphics/PulsesSettings.jpg
--------------------------------------------------------------------------------
/Resources/Manuals/Graphics/Settings.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rmorgan001/GSServer/6d156bb0755f231859aee11ea85b1f9f51d3cf66/Resources/Manuals/Graphics/Settings.jpg
--------------------------------------------------------------------------------
/Resources/Manuals/Graphics/SettingsPanel.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rmorgan001/GSServer/6d156bb0755f231859aee11ea85b1f9f51d3cf66/Resources/Manuals/Graphics/SettingsPanel.jpg
--------------------------------------------------------------------------------
/Resources/Manuals/Swamp Witch.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rmorgan001/GSServer/6d156bb0755f231859aee11ea85b1f9f51d3cf66/Resources/Manuals/Swamp Witch.ttf
--------------------------------------------------------------------------------
/XInputDotNetPure/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.InteropServices;
3 |
4 | // General Information about an assembly is controlled through the following
5 | // set of attributes. Change these attribute values to modify the information
6 | // associated with an assembly.
7 | [assembly: AssemblyTitle("XInputDotNetPure")]
8 | [assembly: AssemblyDescription("")]
9 | [assembly: AssemblyConfiguration("")]
10 | [assembly: AssemblyCompany("Microsoft")]
11 | [assembly: AssemblyProduct("XInputDotNetPure")]
12 | [assembly: AssemblyCopyright("Copyright © Microsoft 2009")]
13 | [assembly: AssemblyTrademark("")]
14 | [assembly: AssemblyCulture("")]
15 |
16 | // Setting ComVisible to false makes the types in this assembly not visible
17 | // to COM components. If you need to access a type in this assembly from
18 | // COM, set the ComVisible attribute to true on that type.
19 | [assembly: ComVisible(false)]
20 |
21 | // The following GUID is for the ID of the typelib if this project is exposed to COM
22 | [assembly: Guid("1fee853a-0e42-4b62-8463-910b7ec4f726")]
23 |
24 | // Version information for an assembly consists of the following four values:
25 | //
26 | // Major Version
27 | // Minor Version
28 | // Build Number
29 | // Revision
30 | //
31 | // You can specify all the values or you can default the Build and Revision Numbers
32 | // by using the '*' as shown below:
33 | // [assembly: AssemblyVersion("1.0.*")]
34 | [assembly: AssemblyVersion("1.0.0.0")]
35 | [assembly: AssemblyFileVersion("1.0.0.0")]
36 |
--------------------------------------------------------------------------------
/XInputInterface/Common.h:
--------------------------------------------------------------------------------
1 | /* The MIT License
2 |
3 | Copyright(c) 2009 Remi Gillig
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files(the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and /or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions :
11 |
12 | The above copyright notice and this permission notice shall be included in
13 | all copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21 | THE SOFTWARE.
22 |
23 | https://github.com/speps/XInputDotNet
24 | */
25 | #ifndef _XINPUT_INTERFACE_COMMON_H
26 | #define _XINPUT_INTERFACE_COMMON_H
27 |
28 | #ifdef XI_EXPORTS
29 | #define XI_EXPORT __declspec(dllexport)
30 | #else
31 | #define XI_EXPORT __declspec(dllimport)
32 | #endif
33 |
34 | #endif
--------------------------------------------------------------------------------
/XInputInterface/GamePad.h:
--------------------------------------------------------------------------------
1 | /* The MIT License
2 |
3 | Copyright(c) 2009 Remi Gillig
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files(the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and /or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions :
11 |
12 | The above copyright notice and this permission notice shall be included in
13 | all copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21 | THE SOFTWARE.
22 |
23 | https://github.com/speps/XInputDotNet
24 | */
25 | #ifndef _XINPUT_INTERFACE_GAMEPAD_H
26 | #define _XINPUT_INTERFACE_GAMEPAD_H
27 |
28 | #include "Common.h"
29 |
30 | #include
31 | #include
32 |
33 | extern "C"
34 | {
35 |
36 | XI_EXPORT DWORD XInputGamePadGetState(DWORD dwUserIndex, XINPUT_STATE *pState);
37 | XI_EXPORT void XInputGamePadSetState(DWORD dwUserIndex, float leftMotor, float rightMotor);
38 |
39 | }
40 |
41 | #endif
--------------------------------------------------------------------------------