├── .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 | 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 | 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 |