├── .editorconfig ├── .gitattributes ├── .gitignore ├── .gitmodules ├── CloudflareBasicAuthWorker └── CloudflareBasicAuthWorker.js ├── DevNotes.md ├── Directory.Build.props ├── PointlessWaymarks.CloudBackupData ├── Batch │ ├── CloudBackupLocalDirectory.cs │ ├── CloudTransfer.cs │ ├── CloudTransferBatchInformation.cs │ ├── CloudTransferRunInformation.cs │ ├── CreationTools.cs │ ├── FileListAndChangeData.cs │ ├── S3CopyInformation.cs │ └── S3FileSystemFileAndMetadataWithCloudKey.cs ├── CloudBackupContext.cs ├── DataNotifications.cs ├── FileLocationHelpers.cs ├── Migrations │ └── DefaultMigration.cs ├── Models │ ├── BackupJob.cs │ ├── CloudCacheFile.cs │ ├── CloudCopy.cs │ ├── CloudDelete.cs │ ├── CloudFile.cs │ ├── CloudTransferBatch.cs │ ├── CloudUpload.cs │ ├── ExcludedDirectory.cs │ ├── ExcludedDirectoryNamePattern.cs │ ├── ExcludedFileNamePattern.cs │ └── FileSystemFile.cs ├── PointlessWaymarks.CloudBackupData.csproj └── Reports │ ├── BatchCloudFilesToExcel.cs │ ├── BatchCopiesToExcel.cs │ ├── BatchDeletesToExcel.cs │ ├── BatchLocalFilesToExcel.cs │ ├── BatchReportToExcel.cs │ ├── BatchStatistics.cs │ ├── BatchUploadsToExcel.cs │ ├── CloudCacheFilesToExcel.cs │ ├── ExcelHelper.cs │ └── IncludedAndExcludedFilesToExcel.cs ├── PointlessWaymarks.CloudBackupGui ├── App.xaml ├── App.xaml.cs ├── AssemblyInfo.cs ├── CloudBackupGuiSettingTools.cs ├── CloudBackupGuiSettings.cs ├── CloudBackupInstallerLeftImage.bmp ├── CloudBackupInstallerLeftImage.psd ├── CloudBackupInstallerTopRightImage.bmp ├── CloudBackupInstallerTopRightImage.psd ├── Controls │ ├── AppSettingsContext.cs │ ├── AppSettingsControl.xaml │ ├── AppSettingsControl.xaml.cs │ ├── BatchListContext.cs │ ├── BatchListControl.xaml │ ├── BatchListControl.xaml.cs │ ├── BatchListListItem.cs │ ├── BatchListWindow.xaml │ ├── BatchListWindow.xaml.cs │ ├── JobEditorContext.cs │ ├── JobEditorControl.xaml │ ├── JobEditorControl.xaml.cs │ ├── JobEditorWindow.xaml │ ├── JobEditorWindow.xaml.cs │ ├── JobListContext.cs │ ├── JobListControl.xaml │ ├── JobListControl.xaml.cs │ ├── JobListListItem.cs │ ├── ProgressTrackerContext.cs │ ├── ProgressTrackerControl.xaml │ ├── ProgressTrackerControl.xaml.cs │ ├── ProgressTrackerListItem.cs │ ├── ProgressTrackerWindow.xaml │ └── ProgressTrackerWindow.xaml.cs ├── JotServices.cs ├── MainWindow.xaml ├── MainWindow.xaml.cs ├── PointlessWaymarks.CloudBackupGui.csproj ├── PointlessWaymarksCloudBackupIcon.bmp ├── PointlessWaymarksCloudBackupIcon.ico ├── Properties │ ├── PublishProfiles │ │ └── FolderProfile.pubxml │ └── launchSettings.json ├── README.md └── app.manifest ├── PointlessWaymarks.CloudBackupRunner ├── ConsoleAndDataNotificationProgress.cs ├── PointlessWaymarks.CloudBackupRunner.csproj ├── PointlessWaymarksCmsAutomationIcon.ico ├── Program.cs ├── Properties │ └── PublishProfiles │ │ └── FolderProfile.pubxml └── README.md ├── PointlessWaymarks.CloudBackupScreenShots ├── Pointless-Waymarks-Cloud-Backup-Batch-List-Window.jpg ├── Pointless-Waymarks-Cloud-Backup-Command-Line-Runner-Progress.jpg ├── Pointless-Waymarks-Cloud-Backup-Completion-Notification.jpg ├── Pointless-Waymarks-Cloud-Backup-Help-Screen.jpg ├── Pointless-Waymarks-Cloud-Backup-Job-Editor-Window.jpg ├── Pointless-Waymarks-Cloud-Backup-Main-Window.jpg └── Pointless-Waymarks-Cloud-Backup-Progress-Window.jpg ├── PointlessWaymarks.CloudBackupTests ├── DatabaseBatchesAndUploadSeries.cs ├── Helpers.cs ├── LocalDirectoryIntegrationSeries.cs ├── LocalFileIntegrationSeries.cs ├── PointlessWaymarks.CloudBackupTests.csproj ├── S3LocalAccountInformation.cs └── Usings.cs ├── PointlessWaymarks.CmsData ├── BracketCodes │ ├── BracketCodeCommon.cs │ ├── BracketCodeDailyPhotoPage.cs │ ├── BracketCodeFileDownloads.cs │ ├── BracketCodeFileEmbed.cs │ ├── BracketCodeFileImageLink.cs │ ├── BracketCodeFileUrl.cs │ ├── BracketCodeFiles.cs │ ├── BracketCodeGeoJson.cs │ ├── BracketCodeGeoJsonImageLink.cs │ ├── BracketCodeGeoJsonLinks.cs │ ├── BracketCodeImageLinks.cs │ ├── BracketCodeImages.cs │ ├── BracketCodeLineElevationCharts.cs │ ├── BracketCodeLineImageLink.cs │ ├── BracketCodeLineLinks.cs │ ├── BracketCodeLineStats.cs │ ├── BracketCodeLineTextStats.cs │ ├── BracketCodeLines.cs │ ├── BracketCodeMapComponents.cs │ ├── BracketCodeNotes.cs │ ├── BracketCodePhotoLinks.cs │ ├── BracketCodePhotos.cs │ ├── BracketCodePhotosWithDetails.cs │ ├── BracketCodePointDetails.cs │ ├── BracketCodePointExternalDirectionLinks.cs │ ├── BracketCodePointGoogleMapsLinks.cs │ ├── BracketCodePointImageLink.cs │ ├── BracketCodePointLinks.cs │ ├── BracketCodePoints.cs │ ├── BracketCodePostImageLink.cs │ ├── BracketCodePosts.cs │ ├── BracketCodeSnippet.cs │ ├── BracketCodeSpecialPages.cs │ ├── BracketCodeTrailTextStats.cs │ ├── BracketCodeTrails.cs │ ├── BracketCodeVideoEmbed.cs │ ├── BracketCodeVideoImageLink.cs │ ├── BracketCodeVideoLinks.cs │ ├── GalleryBracketCodePictures.cs │ └── _ReadMe.md ├── CommonContentValidation.cs ├── CommonHtml │ ├── BodyContentReferences.cs │ ├── ContentCompact.cs │ ├── ContentProcessing.cs │ ├── Footer.cs │ ├── HeaderContentBasedAdditions.cs │ ├── HeaderContentForCodeHighlighting.cs │ ├── HeaderContentForPictureGallery.cs │ ├── HeaderContentForSpatialContent.cs │ ├── HorizontalRule.cs │ ├── HtmlEmail.cs │ ├── IHeaderContentBasedAdditions.cs │ ├── PictureAsset.cs │ ├── PictureAssetProcessing.cs │ ├── PictureFile.cs │ ├── PictureSiteInformation.cs │ ├── PictureZoom.cs │ ├── RelatedContentReferenceHelpers.cs │ ├── SiteGeneration.cs │ ├── SiteGenerationAllContent.cs │ ├── SiteGenerationChangedContent.cs │ ├── SlugUtility.cs │ └── Tags.cs ├── ContentGeneration │ ├── FileGenerator.cs │ ├── GeoJsonGenerator.cs │ ├── ImageGenerator.cs │ ├── LineGenerator.cs │ ├── LinkGenerator.cs │ ├── MapComponentGenerator.cs │ ├── MapIconGenerator.cs │ ├── NoteGenerator.cs │ ├── PhotoGenerator.cs │ ├── PointGenerator.cs │ ├── PostGenerator.cs │ ├── SnippetGenerator.cs │ ├── TagExclusionGenerator.cs │ ├── TrailGenerator.cs │ ├── VideoGenerator.cs │ └── _ReadMe.md ├── ContentHtml │ ├── ContentGalleryHtml │ │ ├── ContentGalleryPage.cs │ │ ├── ContentGalleryPage.tt │ │ ├── ContentGalleryPageCode.cs │ │ └── ContentGalleryPageGenerators.cs │ ├── ErrorHtml │ │ ├── ErrorPage.cs │ │ ├── ErrorPage.tt │ │ └── ErrorPageCode.cs │ ├── FileHtml │ │ ├── Email.cs │ │ ├── FileParts.cs │ │ ├── SingleFileDiv.cs │ │ ├── SingleFileDiv.tt │ │ ├── SingleFileDivCode.cs │ │ ├── SingleFilePage.cs │ │ ├── SingleFilePage.tt │ │ └── SingleFilePageCode.cs │ ├── GeoJsonHtml │ │ ├── GeoJsonParts.cs │ │ ├── SingleGeoJsonDiv.cs │ │ ├── SingleGeoJsonDiv.tt │ │ ├── SingleGeoJsonDivCode.cs │ │ ├── SingleGeoJsonPage.cs │ │ ├── SingleGeoJsonPage.tt │ │ └── SingleGeoJsonPageCode.cs │ ├── ImageHtml │ │ ├── Email.cs │ │ ├── ImageParts.cs │ │ ├── SingleImageDiv.cs │ │ ├── SingleImageDiv.tt │ │ ├── SingleImageDivCode.cs │ │ ├── SingleImagePage.cs │ │ ├── SingleImagePage.tt │ │ └── SingleImagePageCode.cs │ ├── IndexHtml │ │ ├── IndexPage.cs │ │ ├── IndexPage.tt │ │ └── IndexPageCode.cs │ ├── LineHtml │ │ ├── LineData.cs │ │ ├── LineParts.cs │ │ ├── SingleLineDiv.cs │ │ ├── SingleLineDiv.tt │ │ ├── SingleLineDivCode.cs │ │ ├── SingleLinePage.cs │ │ ├── SingleLinePage.tt │ │ └── SingleLinePageCode.cs │ ├── LineMonthlyActivitySummaryHtml │ │ ├── LineMonthlyActivitySummaryPage.cs │ │ ├── LineMonthlyActivitySummaryPage.tt │ │ └── LineMonthlyActivitySummaryPageCode.cs │ ├── LinkListHtml │ │ ├── LinkListPage.cs │ │ ├── LinkListPage.tt │ │ └── LinkListPageCode.cs │ ├── MapComponentData │ │ └── MapParts.cs │ ├── NoteHtml │ │ ├── Email.cs │ │ ├── NoteParts.cs │ │ ├── SingleNoteDiv.cs │ │ ├── SingleNoteDiv.tt │ │ ├── SingleNoteDivCode.cs │ │ ├── SingleNotePage.cs │ │ ├── SingleNotePage.tt │ │ └── SingleNotePageCode.cs │ ├── PhotoGalleryHtml │ │ ├── CameraRollGalleryPage.cs │ │ ├── CameraRollGalleryPage.tt │ │ ├── CameraRollGalleryPageCode.cs │ │ ├── CameraRollGalleryPageGenerator.cs │ │ ├── DailyPhotoPageGenerators.cs │ │ ├── DailyPhotosPage.cs │ │ ├── DailyPhotosPage.tt │ │ ├── DailyPhotosPageCode.cs │ │ └── DailyPhotosPageParts.cs │ ├── PhotoHtml │ │ ├── Email.cs │ │ ├── PhotoParts.cs │ │ ├── SinglePhotoDiv.cs │ │ ├── SinglePhotoDiv.tt │ │ ├── SinglePhotoDivCode.cs │ │ ├── SinglePhotoPage.cs │ │ ├── SinglePhotoPage.tt │ │ └── SinglePhotoPageCode.cs │ ├── PointHtml │ │ ├── PointData.cs │ │ ├── PointParts.cs │ │ ├── SinglePointDiv.cs │ │ ├── SinglePointDiv.tt │ │ ├── SinglePointDivCode.cs │ │ ├── SinglePointPage.cs │ │ ├── SinglePointPage.tt │ │ └── SinglePointPageCode.cs │ ├── PostHtml │ │ ├── Email.cs │ │ ├── PostParts.cs │ │ ├── SinglePostDiv.cs │ │ ├── SinglePostDiv.tt │ │ ├── SinglePostDivCode.cs │ │ ├── SinglePostPage.cs │ │ ├── SinglePostPage.tt │ │ └── SinglePostPageCode.cs │ ├── SearchListHtml │ │ ├── SearchListPage.cs │ │ ├── SearchListPage.tt │ │ ├── SearchListPageCode.cs │ │ └── SearchListPageGenerators.cs │ ├── TagListHtml │ │ ├── TagListPage.cs │ │ ├── TagListPage.tt │ │ └── TagListPageCode.cs │ ├── TrailHtml │ │ ├── Email.cs │ │ ├── SingleTrailDiv.cs │ │ ├── SingleTrailDiv.tt │ │ ├── SingleTrailDivCode.cs │ │ ├── SingleTrailPage.cs │ │ ├── SingleTrailPage.tt │ │ ├── SingleTrailPageCode.cs │ │ └── TrailParts.cs │ └── VideoHtml │ │ ├── Email.cs │ │ ├── SingleVideoDiv.cs │ │ ├── SingleVideoDiv.tt │ │ ├── SingleVideoDivCode.cs │ │ ├── SingleVideoPage.cs │ │ ├── SingleVideoPage.tt │ │ ├── SingleVideoPageCode.cs │ │ └── VideoParts.cs ├── DataNotifications.cs ├── Database │ ├── ContentFormats.cs │ ├── Db.cs │ ├── Migrations │ │ ├── AddFeedOnAndIsDraft.cs │ │ ├── AddFileImagePostVideoContentLatitudeLongitudeElevationShowLocation.cs │ │ ├── AddHistoricPointDetailsAndMapComponentElements.cs │ │ ├── AddLineActivityLog.cs │ │ ├── AddLineRecordedOns.cs │ │ ├── AddMapElementLinksTo.cs │ │ ├── AddMapIconContentVersion.cs │ │ ├── AddPhotoContentLatitudeLongitudeElevation.cs │ │ ├── AddPhotoDirection.cs │ │ ├── AddPointMarkerIconAndColor.cs │ │ ├── AddPointTextMarkerText.cs │ │ ├── AddPublicDownloadLinkTo.cs │ │ ├── AddShowImageSizes.cs │ │ ├── AddShowInSearchFields.cs │ │ ├── AddShowPhotoSizes.cs │ │ ├── AddTrailContentTables.cs │ │ ├── ElevationFeetToMetersConversion.cs │ │ ├── FileUserMainImage.cs │ │ ├── MapIconTables.cs │ │ ├── ModifyTrailFeeDogBikeColumnTypes.cs │ │ ├── PhotoContentShowsPosition.cs │ │ ├── SnippetTables.cs │ │ ├── UpdateMapIconToMapIconName.cs │ │ ├── UtcToPhotosAndLines.cs │ │ └── VideoContentTables.cs │ ├── Models │ │ ├── ContentCommonShell.cs │ │ ├── FileContent.cs │ │ ├── GenerationChangedContentId.cs │ │ ├── GenerationDailyPhotoLog.cs │ │ ├── GenerationFileTransferScriptLog.cs │ │ ├── GenerationFileWriteLog.cs │ │ ├── GenerationLog.cs │ │ ├── GenerationRelatedContent.cs │ │ ├── GenerationTagLog.cs │ │ ├── GeoJsonContent.cs │ │ ├── HistoricFileContent.cs │ │ ├── HistoricGeoJsonContent.cs │ │ ├── HistoricImageContent.cs │ │ ├── HistoricLineContent.cs │ │ ├── HistoricLinkContent.cs │ │ ├── HistoricMapComponent.cs │ │ ├── HistoricMapElement.cs │ │ ├── HistoricMapIcon.cs │ │ ├── HistoricNoteContent.cs │ │ ├── HistoricPhotoContent.cs │ │ ├── HistoricPointContent.cs │ │ ├── HistoricPointDetail.cs │ │ ├── HistoricPostContent.cs │ │ ├── HistoricSnippet.cs │ │ ├── HistoricTrailContent.cs │ │ ├── HistoricVideoContent.cs │ │ ├── IBodyContent.cs │ │ ├── IContentCommon.cs │ │ ├── IContentId.cs │ │ ├── ICreatedAndLastUpdateOnAndBy.cs │ │ ├── IMainImage.cs │ │ ├── IMainSiteFeed.cs │ │ ├── IOptionalLocation.cs │ │ ├── IShowInSearch.cs │ │ ├── ITags.cs │ │ ├── ITitle.cs │ │ ├── ITitleSummarySlugFolder.cs │ │ ├── IUpdateNotes.cs │ │ ├── ImageContent.cs │ │ ├── ImageMetadata.cs │ │ ├── LineContent.cs │ │ ├── LinkContent.cs │ │ ├── MapComponent.cs │ │ ├── MapComponentDto.cs │ │ ├── MapElement.cs │ │ ├── MapIcon.cs │ │ ├── MenuLink.cs │ │ ├── NoteContent.cs │ │ ├── OptionalLocationExtensions.cs │ │ ├── PhotoContent.cs │ │ ├── PhotoMetadata.cs │ │ ├── PointContent.cs │ │ ├── PointContentDto.cs │ │ ├── PointDetail.cs │ │ ├── PostContent.cs │ │ ├── Snippet.cs │ │ ├── TagExclusion.cs │ │ ├── TrailContent.cs │ │ └── VideoContent.cs │ ├── NewContentModels.cs │ ├── PointDetailDataModels │ │ ├── Campground.cs │ │ ├── DrivingDirections.cs │ │ ├── Feature.cs │ │ ├── Fee.cs │ │ ├── IPointDetailData.cs │ │ ├── Parking.cs │ │ ├── Peak.cs │ │ ├── PointDetailUtilities.cs │ │ ├── Restroom.cs │ │ ├── TrailJunction.cs │ │ └── VehicleAccess.cs │ └── PointlessWaymarksContext.cs ├── ExcelImport │ ├── ContentImport.cs │ ├── ContentImportColumn.cs │ ├── ContentImportHeaderRow.cs │ └── ContentImportValueParse.cs ├── FileManagement.cs ├── GenerationReturn.cs ├── ImageHelpers │ ├── ExifHelpers.cs │ ├── IPictureResizer.cs │ ├── MagicScalerImageResizer.cs │ └── PictureResizing.cs ├── Json │ ├── DbImport.cs │ ├── DbImport.tt │ ├── DbImportExtended.cs │ ├── Export.cs │ ├── FileDataJson.cs │ └── Import.cs ├── PointlessWaymarks.CmsData.csproj ├── PointlessWaymarksLogTools.cs ├── Properties │ └── launchSettings.json ├── Rss │ └── RssBuilder.cs ├── S3 │ ├── CloudCredentials.cs │ └── S3CmsTools.cs ├── SiteResources │ ├── JaroWinkler.js │ ├── L.Control.Locate.min.css │ ├── L.Control.Locate.min.css.map │ ├── L.Control.Locate.min.js │ ├── L.Control.Locate.min.js.map │ ├── chart.min.js │ ├── default.min.css │ ├── gsap.min.js │ ├── highlight.min.js │ ├── images │ │ ├── layers-2x.png │ │ ├── layers.png │ │ ├── marker-icon-2x.png │ │ ├── marker-icon.png │ │ ├── marker-shadow.png │ │ ├── markers-matte.png │ │ ├── markers-matte@2x.png │ │ ├── markers-plain.png │ │ ├── markers-shadow.png │ │ ├── markers-shadow@2x.png │ │ ├── markers-soft.png │ │ └── markers-soft@2x.png │ ├── jquery-3.7.1.min.js │ ├── jquery.justifiedGallery.js │ ├── justifiedGallery.css │ ├── leaflet-gesture-handling.min.css │ ├── leaflet-gesture-handling.min.js │ ├── leaflet-gesture-handling.min.js.map │ ├── leaflet.awesome-svg-markers.css │ ├── leaflet.awesome-svg-markers.js │ ├── leaflet.css │ ├── leaflet.js │ ├── leaflet.js.map │ ├── location-arrow-solid.svg │ ├── photoswipe-lightbox.esm.js │ ├── photoswipe-lightbox.esm.js.map │ ├── photoswipe-lightbox.esm.min.js │ ├── photoswipe.css │ ├── photoswipe.esm.js │ ├── photoswipe.esm.js.map │ ├── photoswipe.esm.min.js │ ├── pointless-waymarks-camera-roll-gallery.js │ ├── pointless-waymarks-content-gallery.js │ ├── pointless-waymarks-content-list-search.js │ ├── pointless-waymarks-spatial-common.js │ └── spinner-solid.svg ├── Spatial │ ├── GeoNamesApiCredentials.cs │ ├── SpatialConverters.cs │ └── SpatialHelpers.cs ├── UserSettings.cs ├── UserSettingsGenerationValues.cs ├── UserSettingsSingleton.cs ├── UserSettingsUtilities.cs ├── favicon.ico └── style.css ├── PointlessWaymarks.CmsGui ├── App.xaml ├── App.xaml.cs ├── CmsInstallerLeftImage.bmp ├── CmsInstallerLeftImage.psd ├── CmsInstallerTopRightImage.bmp ├── CmsInstallerTopRightImage.psd ├── JotServices.cs ├── MainWindow.xaml ├── MainWindow.xaml.cs ├── PointlessWaymarks.CmsGui.csproj ├── PointlessWaymarksCmsIcon.bmp ├── PointlessWaymarksCmsIcon.ico ├── Properties │ ├── PublishProfiles │ │ └── FolderProfile.pubxml │ └── launchSettings.json ├── SettingsFileChooserControl.xaml ├── SettingsFileChooserControl.xaml.cs ├── SettingsFileChooserControlContext.cs ├── SettingsFileListItem.cs └── app.manifest ├── PointlessWaymarks.CmsScreenShots ├── AllContentList.jpg ├── ContentMapList.jpg ├── FeatureIntersectionsTagsExample.jpg ├── FileEditorShowingValidationAndChangeIndicators.jpg ├── GeoJsonContentEditor.jpg ├── ImageEditor.jpg ├── LaunchScreen.jpg ├── LineEditorMapTab.jpg ├── ListSearchBuilder.jpg ├── MainListWithProgramUpdateNotice.jpg ├── MemoriesEmail.jpg ├── MenuLinksEditor.jpg ├── PhotoEditor-ShowingFileAndPhotoMetadata.jpg ├── PhotoList.jpg ├── PointEditor.jpg ├── PostEditorWithPreview.jpg ├── PostsList.jpg ├── S3Uploader.jpg ├── TagList.jpg └── WrittenFilesList.jpg ├── PointlessWaymarks.CmsTask.GarminConnectGpxImport ├── GarminConnectGpxImportSettings.cs ├── GarminConnectGpxImportSettingsSample.json ├── GpxTrackImport.cs ├── PointlessWaymarks.CmsTask.GarminConnectGpxImport.csproj ├── PointlessWaymarksCmsAutomationIcon.ico ├── Program.cs ├── Properties │ └── PublishProfiles │ │ └── FolderProfile.pubxml └── README.md ├── PointlessWaymarks.CmsTask.MemoriesEmail ├── Helpers.cs ├── MemoriesSmtpEmailFromWeb.cs ├── MemoriesSmtpEmailFromWebSettings.cs ├── MemoriesSmtpEmailFromWebSettingsSample.json ├── PointlessWaymarks.CmsTask.MemoriesEmail.csproj ├── PointlessWaymarksCmsAutomationIcon.ico ├── Program.cs ├── Properties │ └── PublishProfiles │ │ └── FolderProfile.pubxml └── README.md ├── PointlessWaymarks.CmsTask.PhotoPickup ├── PhotoPickup.cs ├── PhotoPickupSettings.cs ├── PhotoPickupSettingsSample.json ├── PointlessWaymarks.CmsTask.PhotoPickup.csproj ├── PointlessWaymarksCmsAutomationIcon.ico ├── Program.cs ├── Properties │ └── PublishProfiles │ │ └── FolderProfile.pubxml └── README.md ├── PointlessWaymarks.CmsTask.PublishSiteToS3 ├── PointlessWaymarks.CmsTask.PublishSiteToS3.csproj ├── PointlessWaymarksCmsAutomationIcon.ico ├── Program.cs ├── Properties │ └── PublishProfiles │ │ └── FolderProfile.pubxml ├── PublishToS3.cs ├── PublishToS3Settings.cs ├── PublishToS3SettingsSample.json └── README.md ├── PointlessWaymarks.CmsTests ├── BracketCodeTests.cs ├── CreatedAndUpdatedStringTests.cs ├── DebugTrackers.cs ├── ElevationServiceAndGpxTests.cs ├── FolderFileUtilityTests.cs ├── GrandCanyonPointInfo.cs ├── IronwoodHtmlHelpers.cs ├── IronwoodImageInfo.cs ├── IronwoodNoteInfo.cs ├── IronwoodPhotoInfo.cs ├── IronwoodPostInfo.cs ├── IronwoodVideoInfo.cs ├── ListSearchFilterTests.cs ├── PointlessWaymarks.CmsTests.csproj ├── StaTaskScheduler.cs ├── TestFileInfo.cs ├── TestMedia │ ├── 1705-Ironwood-02.jpg │ ├── 1808-Agua-Blanca-Ranch-Sign-at-the-Manville-Road-Entrance-to-the-Ironwood-Forest-National-Monument.jpg │ ├── 2020-05-A-Quarry-in-Ironwood-Forest-National-Monument.jpg │ ├── 2020-05-Fire-Barrel-Cactus.jpg │ ├── 2020-05-Ironwood-Pod.jpg │ ├── 2020-06-Disappearing-into-the-Flower.jpg │ ├── AZ_IronwoodForest_NM_map-CoverPage.jpg │ ├── AZ_IronwoodForest_NM_map.pdf │ ├── Blue-Sky-and-Clouds-Video.mp4 │ ├── GrandCanyonHistoricWildfireGeoJson.geojson │ ├── GrandCanyonHorseShoeMesaEastSideLoop.gpx │ ├── GrandCanyonPointsImport.xlsx │ ├── GrandviewTrail'sIllegalName.pdf │ ├── GrandviewTrail.pdf │ ├── HermitsRestDuplicateSlugImport.xlsx │ ├── Mt-Lemmon-Trail-Small-Trailhead-Sign-1312.jpg │ ├── TwoTrackGpxNearTheSanPedro.gpx │ ├── YumaPointImport.xlsx │ └── ironwood_proc.pdf ├── TestSeries01Ironwood.cs ├── TestSeries02GrandCanyonPoints.cs ├── TestSeries03TrailInfoGuiContextTest.cs └── UtilityHelpers.cs ├── PointlessWaymarks.CmsWpfControls ├── AllContentList │ ├── AllContentItemsWithActionsControl.xaml │ ├── AllContentItemsWithActionsControl.xaml.cs │ ├── AllContentListLoader.cs │ ├── AllContentListWindow.xaml │ ├── AllContentListWindow.xaml.cs │ └── AllContentListWithActionsContext.cs ├── AssemblyInfo.cs ├── BodyContentEditor │ ├── BodyContentEditorContext.cs │ ├── BodyContentEditorControl.xaml │ ├── BodyContentEditorControl.xaml.cs │ ├── BodyContentEditorHorizontalControl.xaml │ └── BodyContentEditorHorizontalControl.xaml.cs ├── ContentDropdownDataEntry │ ├── ContentDropdownDataChoice.cs │ ├── ContentDropdownDataEntryContext.cs │ ├── ContentDropdownDataEntryControl.xaml │ ├── ContentDropdownDataEntryControl.xaml.cs │ └── ContentDropdownDataEntryLoaders.cs ├── ContentFormat │ ├── ContentFormatChooserContext.cs │ ├── ContentFormatChooserControl.xaml │ └── ContentFormatChooserControl.xaml.cs ├── ContentHistoryView │ ├── ContentViewHistoryPage.cs │ ├── ContentViewHistoryPage.tt │ └── ContentViewHistoryPageCode.cs ├── ContentIdViewer │ ├── ContentIdViewerControl.xaml │ ├── ContentIdViewerControl.xaml.cs │ └── ContentIdViewerControlContext.cs ├── ContentList │ ├── CmsCommonCommands.cs │ ├── ContentListContext.cs │ ├── ContentListControl.xaml │ ├── ContentListControl.xaml.cs │ ├── ContentListDataTemplateSelector.cs │ ├── ContentListLoaderBase.cs │ ├── ContentListLoaderReport.cs │ ├── ContentListSearch.cs │ ├── ContentListSearchFunctions.cs │ ├── IContentActions.cs │ ├── IContentListImage.cs │ ├── IContentListItem.cs │ └── IContentListLoader.cs ├── ContentMap │ ├── ContentMapContext.cs │ ├── ContentMapControl.xaml │ ├── ContentMapControl.xaml.cs │ ├── ContentMapListLoader.cs │ ├── ContentMapMapSelection.cs │ ├── ContentMapWindow.xaml │ └── ContentMapWindow.xaml.cs ├── ContentSiteFeedAndIsDraft │ ├── ContentSiteFeedAndIsDraftContext.cs │ ├── ContentSiteFeedAndIsDraftControl.xaml │ └── ContentSiteFeedAndIsDraftControl.xaml.cs ├── CreatedAndUpdatedByAndOnDisplay │ ├── CreatedAndUpdatedByAndOnDisplayContext.cs │ ├── CreatedAndUpdatedByAndOnDisplayControl.xaml │ └── CreatedAndUpdatedByAndOnDisplayControl.xaml.cs ├── DataEntry │ ├── BoolDataEntryTypes.cs │ ├── ConversionDataEntryTypes.cs │ └── StringDataEntryTypes.cs ├── Diagnostics │ └── Reports.cs ├── DropdownDataEntry │ ├── ContentMapIconContext.cs │ ├── ContentMapIconDataEntryControl.xaml │ ├── ContentMapIconDataEntryControl.xaml.cs │ ├── ContentMapMarkerColorContext.cs │ ├── ContentMapMarkerColorDataEntryControl.xaml │ ├── ContentMapMarkerColorDataEntryControl.xaml.cs │ └── IDropdownDataEntryContext.cs ├── FileContentEditor │ ├── FileContentEditorContext.cs │ ├── FileContentEditorControl.xaml │ ├── FileContentEditorControl.xaml.cs │ ├── FileContentEditorWindow.xaml │ └── FileContentEditorWindow.xaml.cs ├── FileList │ ├── FileContentActions.cs │ ├── FileListListItem.cs │ ├── FileListLoader.cs │ ├── FileListWindow.xaml │ ├── FileListWindow.xaml.cs │ ├── FileListWithActionsContext.cs │ ├── FileListWithActionsControl.xaml │ └── FileListWithActionsControl.xaml.cs ├── FilesWrittenLogList │ ├── FileWrittenLogListDateTimeFilterChoice.cs │ ├── FilesWrittenLogListContext.cs │ ├── FilesWrittenLogListControl.xaml │ ├── FilesWrittenLogListControl.xaml.cs │ └── FilesWrittenLogListListItem.cs ├── GeoJsonContentEditor │ ├── GeoJsonContentEditorContext.cs │ ├── GeoJsonContentEditorControl.xaml │ ├── GeoJsonContentEditorControl.xaml.cs │ ├── GeoJsonContentEditorWindow.xaml │ └── GeoJsonContentEditorWindow.xaml.cs ├── GeoJsonList │ ├── GeoJsonContentActions.cs │ ├── GeoJsonListListItem.cs │ ├── GeoJsonListLoader.cs │ ├── GeoJsonListWindow.xaml │ ├── GeoJsonListWindow.xaml.cs │ ├── GeoJsonListWithActionsContext.cs │ ├── GeoJsonListWithActionsControl.xaml │ └── GeoJsonListWithActionsControl.xaml.cs ├── GeoSearch │ ├── GeoSearchContext.cs │ ├── GeoSearchControl.xaml │ └── GeoSearchControl.xaml.cs ├── GpxImport │ ├── GpxImportContext.cs │ ├── GpxImportControl.xaml │ ├── GpxImportControl.xaml.cs │ ├── GpxImportDataTemplateSelector.cs │ ├── GpxImportRoute.cs │ ├── GpxImportTrack.cs │ ├── GpxImportWaypoint.cs │ ├── GpxImportWindow.xaml │ ├── GpxImportWindow.xaml.cs │ └── IGpxImportListItem.cs ├── HelpDisplay │ ├── BracketCodeHelpMarkdown.cs │ ├── CommonFields.cs │ ├── GeoJsonContentHelpMarkdown.cs │ ├── MenuLinksHelpMarkdown.cs │ ├── SearchHelpMarkdown.cs │ └── TagExclusionHelpMarkdown.cs ├── ImageContentEditor │ ├── ImageContentEditorContext.cs │ ├── ImageContentEditorControl.xaml │ ├── ImageContentEditorControl.xaml.cs │ ├── ImageContentEditorWindow.xaml │ └── ImageContentEditorWindow.xaml.cs ├── ImageList │ ├── ImageContentActions.cs │ ├── ImageListListItem.cs │ ├── ImageListLoader.cs │ ├── ImageListWindow.xaml │ ├── ImageListWindow.xaml.cs │ ├── ImageListWithActionsContext.cs │ ├── ImageListWithActionsControl.xaml │ └── ImageListWithActionsControl.xaml.cs ├── LineContentEditor │ ├── LineContentEditorContext.cs │ ├── LineContentEditorControl.xaml │ ├── LineContentEditorControl.xaml.cs │ ├── LineContentEditorWindow.xaml │ └── LineContentEditorWindow.xaml.cs ├── LineList │ ├── ActivityLogMonthlyStatRow.cs │ ├── ActivityLogMonthlySummaryWindow.xaml │ ├── ActivityLogMonthlySummaryWindow.xaml.cs │ ├── ExactMatchContentFilter.cs │ ├── ExactMatchContentFilterFactory.cs │ ├── LineContentActions.cs │ ├── LineHasRecordedOnVisibilityConverter.cs │ ├── LineListListItem.cs │ ├── LineListLoader.cs │ ├── LineListWindow.xaml │ ├── LineListWindow.xaml.cs │ ├── LineListWithActionsContext.cs │ ├── LineListWithActionsControl.xaml │ ├── LineListWithActionsControl.xaml.cs │ ├── LineRecordedOnSearchLabelConverter.cs │ └── LineRecordedOnToStringConverter.cs ├── LinkContentEditor │ ├── LinkContentEditorContext.cs │ ├── LinkContentEditorControl.xaml │ ├── LinkContentEditorControl.xaml.cs │ ├── LinkContentEditorWindow.xaml │ └── LinkContentEditorWindow.xaml.cs ├── LinkList │ ├── LinkContentActions.cs │ ├── LinkListListItem.cs │ ├── LinkListLoader.cs │ ├── LinkListWindow.xaml │ ├── LinkListWindow.xaml.cs │ ├── LinkListWithActionsContext.cs │ ├── LinkListWithActionsControl.xaml │ └── LinkListWithActionsControl.xaml.cs ├── ListFilterBuilder │ ├── BooleanListFilterFieldBuilder.cs │ ├── BoundsListFilterFieldBuilder.cs │ ├── ContentIdListFilterFieldBuilder.cs │ ├── ContentTypeChoice.cs │ ├── ContentTypeFilterBuilder.cs │ ├── DateTimeListFilterFieldBuilder.cs │ ├── ListFilterBuilderContext.cs │ ├── ListFilterBuilderControl.xaml │ ├── ListFilterBuilderControl.xaml.cs │ ├── ListFilterBuilderFilterAdd.cs │ ├── ListFilterBuilderWindow.xaml │ ├── ListFilterBuilderWindow.xaml.cs │ ├── ListFilterTemplateSelector.cs │ ├── LocationBoundsChooserContext.cs │ ├── LocationBoundsChooserWindow.xaml │ ├── LocationBoundsChooserWindow.xaml.cs │ ├── NumericListFilterFieldBuilder.cs │ └── TextListFilterFieldBuilder.cs ├── MapComponentEditor │ ├── IMapElementListItem.cs │ ├── MapComponentEditorContext.cs │ ├── MapComponentEditorControl.xaml │ ├── MapComponentEditorControl.xaml.cs │ ├── MapComponentEditorWindow.xaml │ ├── MapComponentEditorWindow.xaml.cs │ ├── MapElementDataTemplateSelector.cs │ ├── MapElementListFileItem.cs │ ├── MapElementListGeoJsonItem.cs │ ├── MapElementListImageItem.cs │ ├── MapElementListLineItem.cs │ ├── MapElementListPhotoItem.cs │ ├── MapElementListPointItem.cs │ ├── MapElementListPostItem.cs │ ├── MapElementListVideoItem.cs │ └── MapElementSettings.cs ├── MapComponentList │ ├── MapComponentContentActions.cs │ ├── MapComponentListListItem.cs │ ├── MapComponentListLoader.cs │ ├── MapComponentListWindow.xaml │ ├── MapComponentListWindow.xaml.cs │ ├── MapComponentListWithActionsContext.cs │ ├── MapComponentListWithActionsControl.xaml │ └── MapComponentListWithActionsControl.xaml.cs ├── MapIconList │ ├── MapIconDefaultLibrary.cs │ ├── MapIconListContext.cs │ ├── MapIconListControl.xaml │ ├── MapIconListControl.xaml.cs │ ├── MapIconListListItem.cs │ ├── MapIconListWindow.xaml │ └── MapIconListWindow.xaml.cs ├── MarkdownViewer │ ├── MarkdownViewerWindow.xaml │ └── MarkdownViewerWindow.xaml.cs ├── MenuLinkEditor │ ├── MenuLinkEditorContext.cs │ ├── MenuLinkEditorControl.xaml │ ├── MenuLinkEditorControl.xaml.cs │ └── MenuLinkListItem.cs ├── NoteContentEditor │ ├── NoteContentEditorContext.cs │ ├── NoteContentEditorControl.xaml │ ├── NoteContentEditorControl.xaml.cs │ ├── NoteContentEditorWindow.xaml │ └── NoteContentEditorWindow.xaml.cs ├── NoteList │ ├── NoteContentActions.cs │ ├── NoteListListItem.cs │ ├── NoteListLoader.cs │ ├── NoteListWindow.xaml │ ├── NoteListWindow.xaml.cs │ ├── NoteListWithActionsContext.cs │ ├── NoteListWithActionsControl.xaml │ └── NoteListWithActionsControl.xaml.cs ├── OptionalLocationEntry │ ├── HasValidLatLongVisibilityConverter.cs │ ├── LocationChooserContext.cs │ ├── LocationChooserWindow.xaml │ ├── LocationChooserWindow.xaml.cs │ ├── OptionalLocationActionsControl.xaml │ ├── OptionalLocationActionsControl.xaml.cs │ ├── OptionalLocationEntryContext.cs │ ├── OptionalLocationEntryControl.xaml │ └── OptionalLocationEntryControl.xaml.cs ├── PhotoContentEditor │ ├── PhotoContentEditorContext.cs │ ├── PhotoContentEditorControl.xaml │ ├── PhotoContentEditorControl.xaml.cs │ ├── PhotoContentEditorWindow.xaml │ └── PhotoContentEditorWindow.xaml.cs ├── PhotoList │ ├── PhotoContentActions.cs │ ├── PhotoListListItem.cs │ ├── PhotoListLoader.cs │ ├── PhotoListWindow.xaml │ ├── PhotoListWindow.xaml.cs │ ├── PhotoListWithActionsContext.cs │ ├── PhotoListWithActionsControl.xaml │ └── PhotoListWithActionsControl.xaml.cs ├── PicturesViewer │ ├── PicturesViewerWindow.xaml │ └── PicturesViewerWindow.xaml.cs ├── PointContentEditor │ ├── ElevationGuiHelper.cs │ ├── PointContentEditorContext.cs │ ├── PointContentEditorControl.xaml │ ├── PointContentEditorControl.xaml.cs │ ├── PointContentEditorWindow.xaml │ ├── PointContentEditorWindow.xaml.cs │ └── PointLatitudeLongitudeChange.cs ├── PointDetailEditor │ ├── CampgroundPointDetailContext.cs │ ├── CampgroundPointDetailControl.xaml │ ├── CampgroundPointDetailControl.xaml.cs │ ├── DrivingDirectionsContext.cs │ ├── DrivingDirectionsPointDetailControl.xaml │ ├── DrivingDirectionsPointDetailControl.xaml.cs │ ├── FeaturePointDetailContext.cs │ ├── FeaturePointDetailControl.xaml │ ├── FeaturePointDetailControl.xaml.cs │ ├── FeePointDetailContext.cs │ ├── FeePointDetailControl.xaml │ ├── FeePointDetailControl.xaml.cs │ ├── IPointDetailEditor.cs │ ├── ParkingPointDetailContext.cs │ ├── ParkingPointDetailControl.xaml │ ├── ParkingPointDetailControl.xaml.cs │ ├── PeakPointDetailContext.cs │ ├── PeakPointDetailControl.xaml │ ├── PeakPointDetailControl.xaml.cs │ ├── PointDetailListContext.cs │ ├── PointDetailListControl.xaml │ ├── PointDetailListControl.xaml.cs │ ├── PointDetailListControlDataTemplateSelector.cs │ ├── RestRoomPointDetailContext.cs │ ├── RestRoomPointDetailControl.xaml │ ├── RestRoomPointDetailControl.xaml.cs │ ├── TrailJunctionDetailContext.cs │ ├── TrailJunctionPointDetailControl.xaml │ ├── TrailJunctionPointDetailControl.xaml.cs │ ├── VehicleAccessPointDetailContext.cs │ ├── VehicleAccessPointDetailControl.xaml │ └── VehicleAccessPointDetailControl.xaml.cs ├── PointList │ ├── MapMarkerColorConverter.cs │ ├── PointContentActions.cs │ ├── PointListListItem.cs │ ├── PointListLoader.cs │ ├── PointListWindow.xaml │ ├── PointListWindow.xaml.cs │ ├── PointListWithActionsContext.cs │ ├── PointListWithActionsControl.xaml │ └── PointListWithActionsControl.xaml.cs ├── PointlessWaymarks.CmsWpfControls.csproj ├── PointlessWaymarksCmsIcons │ ├── IconNotes.md │ ├── android-chrome-192x192.png │ ├── android-chrome-512x512.png │ ├── apple-touch-icon.png │ ├── favicon-16x16.png │ ├── favicon-32x32.png │ ├── favicon.ico │ ├── github.png │ └── site.webmanifest ├── PostContentEditor │ ├── PostContentEditorContext.cs │ ├── PostContentEditorControl.xaml │ ├── PostContentEditorControl.xaml.cs │ ├── PostContentEditorWindow.xaml │ └── PostContentEditorWindow.xaml.cs ├── PostList │ ├── PostContentActions.cs │ ├── PostListListItem.cs │ ├── PostListLoader.cs │ ├── PostListWindow.xaml │ ├── PostListWindow.xaml.cs │ ├── PostListWithActionsContext.cs │ ├── PostListWithActionsControl.xaml │ └── PostListWithActionsControl.xaml.cs ├── S3Uploads │ └── S3UploadHelpers.cs ├── Server │ ├── PartialContentPreviewServer.cs │ ├── PreviewServer.cs │ └── ServerPreviewPage.cs ├── SitePictureSizesEditor │ ├── SitePictureSizesEditorContext.cs │ ├── SitePictureSizesEditorControl.xaml │ ├── SitePictureSizesEditorControl.xaml.cs │ ├── SitePictureSizesEditorItem.cs │ ├── SitePictureSizesEditorWindow.xaml │ └── SitePictureSizesEditorWindow.xaml.cs ├── SitePreview │ ├── SiteOnDiskPreviewWindow.xaml │ ├── SiteOnDiskPreviewWindow.xaml.cs │ ├── SitePreviewContext.cs │ ├── SitePreviewControl.xaml │ ├── SitePreviewControl.xaml.cs │ └── SitePreviewMenuNavigationItem.cs ├── SnippetEditor │ ├── SnippetEditorContext.cs │ ├── SnippetEditorControl.xaml │ ├── SnippetEditorControl.xaml.cs │ ├── SnippetEditorWindow.xaml │ └── SnippetEditorWindow.xaml.cs ├── SnippetList │ ├── SnippetListContext.cs │ ├── SnippetListControl.xaml │ ├── SnippetListControl.xaml.cs │ ├── SnippetListListItem.cs │ ├── SnippetListWindow.xaml │ └── SnippetListWindow.xaml.cs ├── StringWithDropdownDataEntry │ ├── ActivityTypeContext.cs │ ├── ContentFolderContext.cs │ ├── IStringWithDropdownDataEntryContext.cs │ ├── StringWithDropdownDataEntryControl.xaml │ └── StringWithDropdownDataEntryControl.xaml.cs ├── TagExclusionEditor │ ├── TagExclusionEditorContext.cs │ ├── TagExclusionEditorControl.xaml │ ├── TagExclusionEditorControl.xaml.cs │ └── TagExclusionEditorListItem.cs ├── TagList │ ├── TagItemContentInformation.cs │ ├── TagListContext.cs │ ├── TagListControl.xaml │ ├── TagListControl.xaml.cs │ └── TagListListItem.cs ├── TagsEditor │ ├── TagsEditorContext.cs │ ├── TagsEditorControl.xaml │ └── TagsEditorControl.xaml.cs ├── TitleSummarySlugFolderEditor │ ├── TitleSummarySlugEditorContext.cs │ ├── TitleSummarySlugEditorControl.xaml │ └── TitleSummarySlugEditorControl.xaml.cs ├── TrailContentEditor │ ├── TrailContentEditorContext.cs │ ├── TrailContentEditorControl.xaml │ ├── TrailContentEditorControl.xaml.cs │ ├── TrailContentEditorWindow.xaml │ └── TrailContentEditorWindow.xaml.cs ├── TrailList │ ├── TrailContentActions.cs │ ├── TrailListListItem.cs │ ├── TrailListLoader.cs │ ├── TrailListWindow.xaml │ ├── TrailListWindow.xaml.cs │ ├── TrailListWithActionsContext.cs │ ├── TrailListWithActionsControl.xaml │ └── TrailListWithActionsControl.xaml.cs ├── UpdateNotesEditor │ ├── UpdateNotesEditorContext.cs │ ├── UpdateNotesEditorHorizontalControl.xaml │ ├── UpdateNotesEditorHorizontalControl.xaml.cs │ ├── UpdateNotesEditorVerticalControl.xaml │ └── UpdateNotesEditorVerticalControl.xaml.cs ├── UserSettingsEditor │ ├── UserSettingsEditorContext.cs │ ├── UserSettingsEditorControl.xaml │ └── UserSettingsEditorControl.xaml.cs ├── Utility │ ├── Excel │ │ ├── ExcelHelpers.cs │ │ ├── GeoJsonContentForExcel.cs │ │ ├── LineContentForExcel.cs │ │ └── PointContentForExcel.cs │ ├── FileHelpers.cs │ ├── GenerationHelpers.cs │ ├── ImageExtractionHelpers.cs │ ├── LinkExtraction.cs │ ├── ListItemTypeToReadableNameConverter.cs │ └── S3 │ │ ├── S3GeneratedSiteComparisonForAdditionsAndChanges.cs │ │ ├── S3GeneratedSiteComparisonForDeletions.cs │ │ └── S3GeneratedSiteComparisonWithHashesForAdditionsAndChanges.cs ├── VideoContentEditor │ ├── VideoContentEditorContext.cs │ ├── VideoContentEditorControl.xaml │ ├── VideoContentEditorControl.xaml.cs │ ├── VideoContentEditorWindow.xaml │ └── VideoContentEditorWindow.xaml.cs ├── VideoList │ ├── VideoContentActions.cs │ ├── VideoListListItem.cs │ ├── VideoListLoader.cs │ ├── VideoListWindow.xaml │ ├── VideoListWindow.xaml.cs │ ├── VideoListWithActionsContext.cs │ ├── VideoListWithActionsControl.xaml │ └── VideoListWithActionsControl.xaml.cs ├── WordPressXmlImport │ ├── WordPressXmlImportContext.cs │ ├── WordPressXmlImportControl.xaml │ ├── WordPressXmlImportControl.xaml.cs │ ├── WordPressXmlImportListItem.cs │ ├── WordPressXmlImportWindow.xaml │ └── WordPressXmlImportWindow.xaml.cs ├── WpfCmsHtml │ ├── MapCmsJson.cs │ └── WebViewHtmlPostLocalPreviewBehavior.cs ├── WpfControlsResourceDictionary.xaml └── WpfHelpers │ └── DbEntryHasLocationToCollapsedVisibilityConverter.cs ├── PointlessWaymarks.ExcelInteropExtensions ├── ApplicationExtensionMethods.cs ├── NativeMethods.cs ├── PointlessWaymarks.ExcelInteropExtensions.csproj ├── ProcessExtensionMethods.cs ├── README.md ├── Session.cs └── Utility.cs ├── PointlessWaymarks.FeatureIntersectionTags ├── Intersection.cs ├── Models │ ├── FeatureFile.cs │ ├── IntersectFileTaggingResult.cs │ ├── IntersectResult.cs │ └── IntersectSettings.cs ├── PointlessWaymarks.FeatureIntersectionTags.csproj ├── Properties │ └── launchSettings.json └── README.md ├── PointlessWaymarks.FeedReader.Tests ├── FeedReader-Tests-LICENSE ├── Feeds │ ├── AtomAdobe.xml │ ├── AtomBattleNet.xml │ ├── AtomSpecialCharacters.xml │ ├── AtomTheVerge.xml │ ├── AtomVergeAllPosts.xml │ ├── AtomWiganwarriors.xml │ ├── AtomYoutubeInvestmentPunk.xml │ ├── Rss091FullSample.xml │ ├── Rss091Stadtfeuerwehr.xml │ ├── Rss092FullSample.xml │ ├── Rss10FeedWebResourceSample.xml │ ├── Rss10Minutos20.xml │ ├── Rss10Minutos20Catalans.xml │ ├── Rss10OrfAt.xml │ ├── Rss20BreakingNews.xml │ ├── Rss20CTVNews.xml │ ├── Rss20CityDog.xml │ ├── Rss20CodeHollowCom.xml │ ├── Rss20ContentWindCom.xml │ ├── Rss20DaStandardAt.xml │ ├── Rss20DailyMail.xml │ ├── Rss20DerBrutkasten.xml │ ├── Rss20FazNet.xml │ ├── Rss20FeedWebResourceSample.xml │ ├── Rss20FinanzenNet.xml │ ├── Rss20HubSpot.xml │ ├── Rss20ISO88591Intranet30.xml │ ├── Rss20IndianExpress.xml │ ├── Rss20ItunesSample.xml │ ├── Rss20JapanTimes.xml │ ├── Rss20JapanToday.xml │ ├── Rss20JungeGruender.xml │ ├── Rss20LeFigaro.xml │ ├── Rss20LeFil.xml │ ├── Rss20LeMonde.xml │ ├── Rss20LeParisien.xml │ ├── Rss20MassaNews.xml │ ├── Rss20MicrosoftBotFranework.xml │ ├── Rss20MoscowTimes.xml │ ├── Rss20NYTimes.xml │ ├── Rss20NuusInAfrikaans.xml │ ├── Rss20Reuters.xml │ ├── Rss20RomaNews.xml │ ├── Rss20RomaToday.xml │ ├── Rss20Spiegel.xml │ ├── Rss20TheMirror.xml │ ├── Rss20ThomasMaurer.xml │ ├── Rss20TrendingTopics.xml │ ├── Rss20YandexRussia.xml │ └── UndeclaredEntityMattPaynePhoto.xml ├── FullParseTest.cs ├── HelpersTest.cs ├── Html │ ├── codehollow.html │ ├── heise.html │ ├── japantimes.html │ ├── orf.html │ ├── stackoverflow.html │ ├── stadtfeuerwehrweiz.html │ └── theverge.html ├── ItunesTest.cs ├── PointlessWaymarks.FeedReader.Tests.csproj ├── README.MD └── ReaderTest.cs ├── PointlessWaymarks.FeedReader ├── Extensions.cs ├── Feed.cs ├── FeedItem.cs ├── FeedReader-LICENSE ├── FeedType.cs ├── Feeds │ ├── 0.91 │ │ ├── Rss091Feed.cs │ │ ├── Rss091FeedImage.cs │ │ └── Rss091FeedItem.cs │ ├── 0.92 │ │ ├── Rss092Feed.cs │ │ ├── Rss092FeedImage.cs │ │ └── Rss092FeedItem.cs │ ├── 1.0 │ │ ├── Rss10Feed.cs │ │ ├── Rss10FeedImage.cs │ │ ├── Rss10FeedItem.cs │ │ └── Rss10FeedTextInput.cs │ ├── 2.0 │ │ ├── Rss20Feed.cs │ │ ├── Rss20FeedImage.cs │ │ └── Rss20FeedItem.cs │ ├── Atom │ │ ├── AtomFeed.cs │ │ ├── AtomFeedItem.cs │ │ ├── AtomLink.cs │ │ └── AtomPerson.cs │ ├── Base │ │ ├── BaseFeed.cs │ │ ├── BaseFeedItem.cs │ │ ├── FeedCloud.cs │ │ ├── FeedImage.cs │ │ ├── FeedItemEnclosure.cs │ │ ├── FeedItemSource.cs │ │ └── FeedTextInput.cs │ ├── DublinCore.cs │ ├── Itunes │ │ ├── ItunesCategory.cs │ │ ├── ItunesChannel.cs │ │ ├── ItunesExtensions.cs │ │ ├── ItunesImage.cs │ │ ├── ItunesItem.cs │ │ └── ItunesOwner.cs │ ├── MediaRSS │ │ ├── Media.cs │ │ ├── MediaGroup.cs │ │ ├── MediaRssFeed.cs │ │ ├── MediaRssFeedImage.cs │ │ ├── MediaRssFeedItem.cs │ │ ├── Medium.cs │ │ └── Thumbnail.cs │ └── Syndication.cs ├── Helpers.cs ├── HtmlFeedLink.cs ├── Parser │ ├── AbstractXmlFeedParser.cs │ ├── AtomParser.cs │ ├── Exceptions │ │ ├── FeedTypeNotSupportedException.cs │ │ └── InvalidFeedLinkException.cs │ ├── Factory.cs │ ├── FeedParser.cs │ ├── IFeedParser.cs │ ├── MediaRssParser.cs │ ├── Rss091Parser.cs │ ├── Rss092Parser.cs │ ├── Rss10Parser.cs │ └── Rss20Parser.cs ├── PointlessWaymarks.FeedReader.csproj ├── README.MD ├── Reader.cs └── UrlNotFoundException.cs ├── PointlessWaymarks.FeedReaderData ├── DataNotifications.cs ├── FeedContext.cs ├── FeedQueries.cs ├── FeedReaderEncryption.cs ├── FileLocationHelpers.cs ├── Migrations │ ├── AddAutoMarkReadMigration.cs │ ├── AddAutoMarkReadMoreThanItemsMigration.cs │ ├── AddBasicAuthMigration.cs │ ├── AddKeyValueTableMigration.cs │ └── DefaultMigration.cs ├── Models │ ├── HistoricReaderFeed.cs │ ├── HistoricReaderFeedItem.cs │ ├── HistoricSavedFeedItem.cs │ ├── ReaderFeed.cs │ ├── ReaderFeedItem.cs │ ├── ReaderKeyValue.cs │ └── SavedFeedItem.cs └── PointlessWaymarks.FeedReaderData.csproj ├── PointlessWaymarks.FeedReaderGui ├── App.xaml ├── App.xaml.cs ├── AssemblyInfo.cs ├── Controls │ ├── AppSettingsContext.cs │ ├── AppSettingsControl.xaml │ ├── AppSettingsControl.xaml.cs │ ├── FeedEditorContext.cs │ ├── FeedEditorControl.xaml │ ├── FeedEditorControl.xaml.cs │ ├── FeedEditorWindow.xaml │ ├── FeedEditorWindow.xaml.cs │ ├── FeedItemListContext.cs │ ├── FeedItemListControl.xaml │ ├── FeedItemListControl.xaml.cs │ ├── FeedItemListListItem.cs │ ├── FeedItemListWindow.xaml │ ├── FeedItemListWindow.xaml.cs │ ├── FeedListContext.cs │ ├── FeedListControl.xaml │ ├── FeedListControl.xaml.cs │ ├── FeedListListItem.cs │ ├── FeedListWindow.xaml │ ├── FeedListWindow.xaml.cs │ ├── SavedFeedItemListContext.cs │ ├── SavedFeedItemListControl.xaml │ ├── SavedFeedItemListControl.xaml.cs │ └── SavedFeedItemListListItem.cs ├── FeedReaderEncryptionHelper.cs ├── FeedReaderGuiSettingTools.cs ├── FeedReaderGuiSettings.cs ├── FeedReaderInstallerLeftImage.bmp ├── FeedReaderInstallerLeftImage.psd ├── FeedReaderInstallerTopRightImage.bmp ├── FeedReaderInstallerTopRightImage.psd ├── JotServices.cs ├── MainWindow.xaml ├── MainWindow.xaml.cs ├── PointlessWaymarks.FeedReaderGui.csproj ├── PointlessWaymarksFeedReaderIcon.bmp ├── PointlessWaymarksFeedReaderIcon.ico ├── Properties │ ├── PublishProfiles │ │ └── FolderProfile.pubxml │ └── launchSettings.json ├── README.MD └── app.manifest ├── PointlessWaymarks.FeedReaderScreenShots └── FeedReaderItems.jpg ├── PointlessWaymarks.GeoTaggingService ├── DirectoryGpxService.cs ├── FileListGpxService.cs ├── GarminConnectGpxService.cs ├── GeoTag.cs ├── IGpxService.cs ├── PointlessWaymarks.GeoTaggingService.csproj └── WaypointAndSource.cs ├── PointlessWaymarks.GeoToolsGui ├── App.xaml ├── App.xaml.cs ├── AssemblyInfo.cs ├── Controls │ ├── AppSettingsContext.cs │ ├── AppSettingsControl.xaml │ ├── AppSettingsControl.xaml.cs │ ├── ConnectBasedGeoTaggerContext.cs │ ├── ConnectBasedGeoTaggerControl.xaml │ ├── ConnectBasedGeoTaggerControl.xaml.cs │ ├── ConnectDownloadContext.cs │ ├── ConnectDownloadControl.xaml │ ├── ConnectDownloadControl.xaml.cs │ ├── ExifFilePicker.cs │ ├── FeatureFileEditorContext.cs │ ├── FeatureFileEditorControl.xaml │ ├── FeatureFileEditorControl.xaml.cs │ ├── FeatureIntersectTaggerContext.cs │ ├── FeatureIntersectTaggerControl.xaml │ ├── FeatureIntersectTaggerControl.xaml.cs │ ├── FileBasedGeoTaggerContext.cs │ ├── FileBasedGeoTaggerControl.xaml │ └── FileBasedGeoTaggerControl.xaml.cs ├── GeoToolsGuiSettingTools.cs ├── GeoToolsGuiSettings.cs ├── GeoToolsInstallerLeftImage.bmp ├── GeoToolsInstallerLeftImage.psd ├── GeoToolsInstallerTopRightImage.bmp ├── GeoToolsInstallerTopRightImage.psd ├── JotServices.cs ├── MainWindow.xaml ├── MainWindow.xaml.cs ├── Messages │ ├── ArchiveDirectoryUpdateMessage.cs │ └── ExifToolSettingsUpdateMessage.cs ├── Models │ ├── FeatureFileContext.cs │ └── FeatureFileEditorEndEditCondition.cs ├── PointlessWaymarks.GeoToolsGui.csproj ├── PointlessWaymarksGeoToolsIcon.bmp ├── PointlessWaymarksGeoToolsIcon.ico ├── Properties │ ├── PublishProfiles │ │ └── FolderProfile.pubxml │ └── launchSettings.json ├── README.md ├── Settings │ ├── ConnectBasedGeoTagFilesToTagSettings.cs │ ├── ConnectBasedGeoTaggerSettingTools.cs │ ├── ConnectBasedGeoTaggerSettings.cs │ ├── ConnectDownloadSettingTools.cs │ ├── ConnectDownloadSettings.cs │ ├── FeatureIntersectTaggerFilesToTagSettings.cs │ ├── FeatureIntersectTaggerSettingTools.cs │ ├── FeatureIntersectTaggerSettings.cs │ ├── FileBasedGeoTaggerFilesToTagSettings.cs │ ├── FileBasedGeoTaggerGpxFilesSettings.cs │ ├── FileBasedGeoTaggerSettingTools.cs │ ├── FileBasedGeoTaggerSettings.cs │ └── GarminConnectCredentialTools.cs └── app.manifest ├── PointlessWaymarks.GeoToolsScreenShots ├── ConnectDownload.jpg ├── ConnectGeoTaggingFilesToTag.jpg ├── ConnectGeoTaggingPreview.jpg ├── ConnectGeoTaggingSettings.jpg ├── FeatureIntersectGeoJsonFileSettings.jpg ├── FeatureIntersectNewTags.jpg └── FeatureIntersectPadUsSettings.jpg ├── PointlessWaymarks.Graphics ├── PointlessWaymarksCmsAutomationCircularLogo.png ├── PointlessWaymarksCmsAutomationCircularLogo.psd ├── PointlessWaymarksCmsAutomationErrorCircularLogo.png ├── PointlessWaymarksCmsAutomationIcon.ico ├── PointlessWaymarksCmsAutomationSquareLogo.png ├── PointlessWaymarksCmsAutomationSquareLogo.psd ├── PointlessWaymarksCmsIcon.ico ├── PointlessWaymarksCmsInstallerIcon.ico ├── PointlessWaymarksCmsSquareLogo.png ├── PointlessWaymarksCmsSquareLogo.psd ├── PointlessWaymarksGeoToolsIcon.ico ├── PointlessWaymarksGeoToolsInstallerIcon.ico ├── PointlessWaymarksGeoToolsSquareLogo.png ├── PointlessWaymarksGeoToolsSquareLogo.psd ├── PointlessWaymarksSiteViewerIcon.ico ├── PointlessWaymarksSiteViewerInstallerIcon.ico ├── PointlessWaymarksSiteViewerSquareLogo.png ├── PointlessWaymarksSiteViewerSquareLogo.psd ├── PointlessWaymarksSoftwareBadge.png └── PointlessWaymarksSoftwareBadge.psd ├── PointlessWaymarks.PowershellRunnerData ├── CustomScriptRunExecution.cs ├── DataNotifications.cs ├── FileLocationHelpers.cs ├── JobScriptRunExecution.cs ├── Migrations │ ├── AddDeleteScriptJobRunsAfterMonthsMigration.cs │ ├── AddRunTotalSecondsMigration.cs │ ├── AddScriptTypeMigration.cs │ ├── AllowSimultaneousRunsMigration.cs │ └── DefaultMigration.cs ├── Models │ ├── PowerShellRunnerSetting.cs │ ├── ScriptJob.cs │ └── ScriptJobRun.cs ├── ObfuscationKeyHelpers.cs ├── PointlessWaymarks - Backup (1).PowerShellRunnerData.csproj ├── PointlessWaymarks - Backup.PowerShellRunnerData.csproj ├── PointlessWaymarks.PowershellRunnerData.csproj ├── PowerShellRunner.cs ├── PowerShellRunnerDbContext.cs ├── PowerShellRunnerDbQuery.cs ├── PowerShellRunsOrphanCleanUp.cs └── ScriptKind.cs ├── PointlessWaymarks.PowershellRunnerGui ├── App.xaml ├── App.xaml.cs ├── AssemblyInfo.cs ├── Controls │ ├── AppSettingsContext.cs │ ├── AppSettingsControl.xaml │ ├── AppSettingsControl.xaml.cs │ ├── CsCustomScriptRunnerControl.xaml │ ├── CsCustomScriptRunnerControl.xaml.cs │ ├── CsScriptJobEditorControl.xaml │ ├── CsScriptJobEditorControl.xaml.cs │ ├── CsScriptJobEditorWindow.xaml │ ├── CsScriptJobEditorWindow.xaml.cs │ ├── CsScriptViewControl.xaml │ ├── CsScriptViewControl.xaml.cs │ ├── CsScriptViewWindow.xaml │ ├── CsScriptViewWindow.xaml.cs │ ├── CustomScriptRunnerContext.cs │ ├── CustomScriptRunnerControl.xaml │ ├── CustomScriptRunnerControl.xaml.cs │ ├── DateTimeMaxValueToNullConverter.cs │ ├── IScriptMessageItem.cs │ ├── LengthInSecondsToHumanReadableConverter.cs │ ├── ProgressDataTemplateSelector.cs │ ├── ScriptJobEditorContext.cs │ ├── ScriptJobEditorControl.xaml │ ├── ScriptJobEditorControl.xaml.cs │ ├── ScriptJobEditorLauncher.cs │ ├── ScriptJobEditorWindow.xaml │ ├── ScriptJobEditorWindow.xaml.cs │ ├── ScriptJobListContext.cs │ ├── ScriptJobListControl.xaml │ ├── ScriptJobListControl.xaml.cs │ ├── ScriptJobListListItem.cs │ ├── ScriptJobRunGuiView.cs │ ├── ScriptJobRunListContext.cs │ ├── ScriptJobRunListControl.xaml │ ├── ScriptJobRunListControl.xaml.cs │ ├── ScriptJobRunListWindow.xaml │ ├── ScriptJobRunListWindow.xaml.cs │ ├── ScriptJobRunOutputDiffContext.cs │ ├── ScriptJobRunOutputDiffControl.xaml │ ├── ScriptJobRunOutputDiffControl.xaml.cs │ ├── ScriptJobRunOutputDiffWindow.xaml │ ├── ScriptJobRunOutputDiffWindow.xaml.cs │ ├── ScriptJobRunViewerContext.cs │ ├── ScriptJobRunViewerControl.xaml │ ├── ScriptJobRunViewerControl.xaml.cs │ ├── ScriptJobRunViewerEditorTemplateSelector.cs │ ├── ScriptJobRunViewerWindow.xaml │ ├── ScriptJobRunViewerWindow.xaml.cs │ ├── ScriptMessageItemError.cs │ ├── ScriptMessageItemProgress.cs │ ├── ScriptMessageItemState.cs │ ├── ScriptProgressContext.cs │ ├── ScriptProgressControl.xaml │ ├── ScriptProgressControl.xaml.cs │ ├── ScriptProgressWindow.xaml │ ├── ScriptProgressWindow.xaml.cs │ ├── ScriptViewContext.cs │ ├── ScriptViewControl.xaml │ ├── ScriptViewControl.xaml.cs │ ├── ScriptViewWindow.xaml │ ├── ScriptViewWindow.xaml.cs │ └── UtcTimeToLocalTimeConverter.cs ├── CsEditor │ ├── CodeActionsConverter.cs │ ├── CsEditorControl.xaml │ └── CsEditorControl.xaml.cs ├── JotServices.cs ├── MainWindow.xaml ├── MainWindow.xaml.cs ├── NotificationCatcher.cs ├── ObfuscationKeyGuiHelpers.cs ├── PointlessWaymarks.PowershellRunnerGui.csproj ├── PointlessWaymarksPowerShellRunnerIcon.bmp ├── PointlessWaymarksPowerShellRunnerIcon.ico ├── PowerShellEditor │ ├── AvalonEditRenderedStringBindingBehaviour.cs │ ├── BraceFoldingStrategy.cs │ ├── CompletionData.cs │ ├── ControlSpaceBarCommand.cs │ ├── PSConsolePowerShell.cs │ ├── PowerShell.xshd │ ├── PowerShellEditorControl.xaml │ ├── PowerShellEditorControl.xaml.cs │ ├── TextEditorUtilities.cs │ ├── TextMarker.cs │ ├── TextMarkerService.cs │ └── TextMarkerType.cs ├── PowerShellRunnerGuiSettingTools.cs ├── PowerShellRunnerGuiSettings.cs ├── PowerShellRunnerInstallerTopRightImage.bmp ├── PowerShellRunnerInstallerTopRightImage.psd ├── PowerShellRunnerLeftInstallerImage.bmp ├── PowerShellRunnerLeftInstallerImage.psd ├── Properties │ └── PublishProfiles │ │ └── FolderProfile.pubxml ├── README.md └── app.manifest ├── PointlessWaymarks.PowershellRunnerScreenShots ├── PowerShellRunnerJobList.jpg ├── PowerShellRunnerRunDiffView.jpg └── PowerShellRunnerRunList.jpg ├── PointlessWaymarks.PressSharper.UnitTests ├── ParserTests.cs ├── PointlessWaymarks.PressSharper.UnitTests.csproj ├── PressSharper-UnitTests-License.txt └── README.md ├── PointlessWaymarks.PressSharper ├── Attachment.cs ├── Author.cs ├── Blog.cs ├── Category.cs ├── Page.cs ├── PointlessWaymarks.PressSharper.csproj ├── Post.cs ├── PressSharper-License.txt ├── README.md ├── Tag.cs └── license.txt ├── PointlessWaymarks.PublishReadmeHelper ├── PointlessWaymarks.PublishReadmeHelper.csproj ├── Program.cs ├── Properties │ └── PublishProfiles │ │ └── FolderProfile.pubxml └── README.md ├── PointlessWaymarks.ScriptB64Runner ├── PointlessWaymarks.ScriptB64Runner.csproj ├── Program.cs └── Properties │ └── PublishProfiles │ └── FolderProfile.pubxml ├── PointlessWaymarks.SiteViewerGui ├── App.xaml ├── App.xaml.cs ├── AssemblyInfo.cs ├── CommandLineOptions.cs ├── JotServices.cs ├── MainWindow.xaml ├── MainWindow.xaml.cs ├── PointlessWaymarks.SiteViewerGui.csproj ├── PointlessWaymarksSiteViewerIcon.bmp ├── PointlessWaymarksSiteViewerIcon.ico ├── Properties │ ├── PublishProfiles │ │ └── FolderProfile.pubxml │ └── launchSettings.json ├── SiteChooserContext.cs ├── SiteChooserControl.xaml ├── SiteChooserControl.xaml.cs ├── SiteChooserDataTemplateSelector.cs ├── SiteDirectoryListItem.cs ├── SitePreviewTabHeaderControl.xaml ├── SitePreviewTabHeaderControl.xaml.cs ├── SiteSettingsFileListItem.cs ├── SiteViewerGuiSettingTools.cs ├── SiteViewerGuiSettings.cs ├── SiteViewerInstallerLeftImage.bmp ├── SiteViewerInstallerLeftImage.psd ├── SiteViewerInstallerTopRightImage.bmp ├── SiteViewerInstallerTopRightImage.psd └── app.manifest ├── PointlessWaymarks.SiteViewerScreenShots └── LocalSiteViewer.jpg ├── PointlessWaymarks.UtilitarianImage ├── Combiner.cs ├── CombinerOrientation.cs ├── ImageRotation.cs └── PointlessWaymarks.UtilitarianImage.csproj ├── PointlessWaymarks.UtilitarianImageCombiner ├── Options.cs ├── PointlessWaymarks.UtilitarianImageCombiner.csproj └── Program.cs ├── PointlessWaymarks.UtilitarianImageCombinerGui ├── App.xaml ├── App.xaml.cs ├── AssemblyInfo.cs ├── Controls │ ├── AppSettingsContext.cs │ ├── AppSettingsControl.xaml │ ├── AppSettingsControl.xaml.cs │ ├── ColorNameAndSkColor.cs │ ├── CombinerListContext.cs │ ├── CombinerListControl.xaml │ ├── CombinerListControl.xaml.cs │ ├── CombinerListListItem.cs │ ├── WebPageAsJpegWindow.xaml │ ├── WebPageAsJpegWindow.xaml.cs │ └── WebPageAsJpegWindowImageSavedEventArgs.cs ├── ImageCombinerGuiSettingTools.cs ├── ImageCombinerGuiSettings.cs ├── JotServices.cs ├── MainWindow.xaml ├── MainWindow.xaml.cs ├── PointlessWaymarks.UtilitarianImageCombinerGui.csproj ├── Properties │ └── PublishProfiles │ │ └── FolderProfile.pubxml ├── README.md ├── UtilitarianImageCombinerGuiIcon.bmp ├── UtilitarianImageCombinerGuiIcon.ico ├── UtilitarianImageCombinerInstallerLeftImage.bmp ├── UtilitarianImageCombinerInstallerLeftImage.psd ├── UtilitarianImageCombinerInstallerTopRightImage.bmp ├── UtilitarianImageCombinerInstallerTopRightImage.psd └── app.manifest ├── PointlessWaymarks.UtilitarianImageTests ├── CombinerTests.cs ├── PointlessWaymarks.UtilitarianImageTests.csproj └── TestImages │ ├── BlueBottom.png │ ├── BlueTop.jpg │ ├── CactusForestDrive.pdf │ ├── GreenBlueSquare.jpeg │ ├── GreenDownLeftOfCenter.bmp │ ├── GreenDownRightOfCenter.gif │ ├── Result-A-RotatedVertical.jpg │ ├── Result-B-RotatedHorizontal.jpg │ ├── Result-C-GridAutoRowsAndColumns.jpg │ ├── Result-D-GridFourColumns.jpg │ ├── Result-E-GridFiveRows.jpg │ └── Result-F-GridThreeByThree.jpg ├── PointlessWaymarks.sln ├── PointlessWaymarks.sln.DotSettings ├── Publish-All.ps1 ├── Publish-Cms.ps1 ├── Publish-InnoSetupInstaller-CloudBackupGui.iss ├── Publish-InnoSetupInstaller-CmsGui.iss ├── Publish-InnoSetupInstaller-FeedReaderGui.iss ├── Publish-InnoSetupInstaller-GeoToolsGui.iss ├── Publish-InnoSetupInstaller-PowerShellRunnerGui.iss ├── Publish-InnoSetupInstaller-SiteViewerGui.iss ├── Publish-InnoSetupInstaller-UtilitarianImageCombinerGui.iss ├── Publish-ProgramToInnoSetupInstaller.ps1 ├── Publish-ProgramToZip.ps1 ├── README.md ├── Scripts └── GarminConnectGpxWithDataDownload.linq ├── Tools-CopyReadmeToProjectSpecificReadme.ps1 ├── Tools-DeleteAllBinAndObj.ps1 ├── Tools-FormatAllXaml.ps1 ├── Tools-GetNugetLocal.ps1 ├── Tools-InstallGlobalTools.ps1 ├── Tools-UpdateAllTools.ps1 ├── global.json └── license.txt /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "PointlessWaymarksTools"] 2 | path = PointlessWaymarksTools 3 | url = https://github.com/cmiles/PointlessWaymarksTools.git 4 | -------------------------------------------------------------------------------- /Directory.Build.props: -------------------------------------------------------------------------------- 1 | 2 | 3 | 13.0 4 | net9.0-windows10.0.17763.0 5 | win-x64 6 | x64 7 | enable 8 | enable 9 | 10 | 11 | embedded 12 | 13 | -------------------------------------------------------------------------------- /PointlessWaymarks.CloudBackupData/Batch/CloudBackupLocalDirectory.cs: -------------------------------------------------------------------------------- 1 | namespace PointlessWaymarks.CloudBackupData.Batch; 2 | 3 | public class CloudBackupLocalDirectory 4 | { 5 | public required DirectoryInfo Directory { get; set; } 6 | public bool Included { get; set; } 7 | } -------------------------------------------------------------------------------- /PointlessWaymarks.CloudBackupData/Batch/S3CopyInformation.cs: -------------------------------------------------------------------------------- 1 | using PointlessWaymarks.CommonTools.S3; 2 | 3 | namespace PointlessWaymarks.CloudBackupData.Batch; 4 | 5 | public record S3CopyInformation( 6 | S3FileSystemFileAndMetadataWithCloudKey LocalFile, 7 | S3RemoteFileAndMetadata ExistingRemoteFile); -------------------------------------------------------------------------------- /PointlessWaymarks.CloudBackupData/Batch/S3FileSystemFileAndMetadataWithCloudKey.cs: -------------------------------------------------------------------------------- 1 | using PointlessWaymarks.CommonTools.S3; 2 | 3 | namespace PointlessWaymarks.CloudBackupData.Batch; 4 | 5 | public record S3FileSystemFileAndMetadataWithCloudKey( 6 | FileInfo LocalFile, 7 | S3UploadMetadata UploadMetadata, 8 | string CloudKey); -------------------------------------------------------------------------------- /PointlessWaymarks.CloudBackupData/Migrations/DefaultMigration.cs: -------------------------------------------------------------------------------- 1 | using FluentMigrator; 2 | 3 | namespace PointlessWaymarks.CloudBackupData.Migrations; 4 | 5 | [Migration(202307110000)] 6 | public class DefaultMigration : Migration 7 | { 8 | public override void Down() 9 | { 10 | } 11 | 12 | public override void Up() 13 | { 14 | } 15 | } -------------------------------------------------------------------------------- /PointlessWaymarks.CloudBackupData/Models/CloudCacheFile.cs: -------------------------------------------------------------------------------- 1 | namespace PointlessWaymarks.CloudBackupData.Models; 2 | 3 | public class CloudCacheFile 4 | { 5 | public string Bucket { get; set; } = string.Empty; 6 | public string CloudObjectKey { get; set; } = string.Empty; 7 | public string FileHash { get; set; } = string.Empty; 8 | public long FileSize { get; set; } 9 | public string FileSystemDateTime { get; set; } = string.Empty; 10 | public int Id { get; set; } 11 | public virtual BackupJob? Job { get; set; } 12 | public int BackupJobId { get; set; } 13 | public DateTime LastEditOn { get; set; } 14 | public string Note { get; set; } = string.Empty; 15 | } -------------------------------------------------------------------------------- /PointlessWaymarks.CloudBackupData/Models/CloudDelete.cs: -------------------------------------------------------------------------------- 1 | namespace PointlessWaymarks.CloudBackupData.Models; 2 | 3 | public class CloudDelete 4 | { 5 | public string BucketName { get; set; } = string.Empty; 6 | public string CloudObjectKey { get; set; } = string.Empty; 7 | public virtual CloudTransferBatch? CloudTransferBatch { get; set; } 8 | public int CloudTransferBatchId { get; set; } 9 | public DateTime CreatedOn { get; set; } 10 | public bool DeletionCompletedSuccessfully { get; set; } 11 | public string ErrorMessage { get; set; } = string.Empty; 12 | public long FileSize { get; set; } 13 | public int Id { get; set; } 14 | public DateTime LastUpdatedOn { get; set; } 15 | } -------------------------------------------------------------------------------- /PointlessWaymarks.CloudBackupData/Models/CloudFile.cs: -------------------------------------------------------------------------------- 1 | namespace PointlessWaymarks.CloudBackupData.Models; 2 | 3 | public class CloudFile 4 | { 5 | public virtual CloudTransferBatch? CloudTransferBatch { get; set; } 6 | public int CloudTransferBatchId { get; set; } 7 | public DateTime CreatedOn { get; set; } 8 | public string FileHash { get; set; } = string.Empty; 9 | public long FileSize { get; set; } 10 | public string FileSystemDateTime { get; set; } = string.Empty; 11 | public int Id { get; set; } 12 | public string CloudObjectKey { get; set; } = string.Empty; 13 | } -------------------------------------------------------------------------------- /PointlessWaymarks.CloudBackupData/Models/CloudUpload.cs: -------------------------------------------------------------------------------- 1 | namespace PointlessWaymarks.CloudBackupData.Models; 2 | 3 | public class CloudUpload 4 | { 5 | public string BucketName { get; set; } = string.Empty; 6 | public string CloudObjectKey { get; set; } = string.Empty; 7 | public virtual CloudTransferBatch? CloudTransferBatch { get; set; } 8 | public int CloudTransferBatchId { get; set; } 9 | public DateTime CreatedOn { get; set; } 10 | public string ErrorMessage { get; set; } = string.Empty; 11 | public long FileSize { get; set; } 12 | public string FileSystemFile { get; set; } = string.Empty; 13 | public int Id { get; set; } 14 | public DateTime LastUpdatedOn { get; set; } 15 | public bool UploadCompletedSuccessfully { get; set; } 16 | } -------------------------------------------------------------------------------- /PointlessWaymarks.CloudBackupData/Models/ExcludedDirectory.cs: -------------------------------------------------------------------------------- 1 | namespace PointlessWaymarks.CloudBackupData.Models; 2 | 3 | public class ExcludedDirectory 4 | { 5 | public DateTime CreatedOn { get; set; } 6 | public string Directory { get; set; } = string.Empty; 7 | public int Id { get; set; } 8 | public virtual BackupJob? Job { get; set; } 9 | public int BackupJobId { get; set; } 10 | } -------------------------------------------------------------------------------- /PointlessWaymarks.CloudBackupData/Models/ExcludedDirectoryNamePattern.cs: -------------------------------------------------------------------------------- 1 | namespace PointlessWaymarks.CloudBackupData.Models; 2 | 3 | public class ExcludedDirectoryNamePattern 4 | { 5 | public DateTime CreatedOn { get; set; } 6 | public int Id { get; set; } 7 | public virtual BackupJob? Job { get; set; } 8 | public int BackupJobId { get; set; } 9 | public string Pattern { get; set; } = string.Empty; 10 | } -------------------------------------------------------------------------------- /PointlessWaymarks.CloudBackupData/Models/ExcludedFileNamePattern.cs: -------------------------------------------------------------------------------- 1 | namespace PointlessWaymarks.CloudBackupData.Models; 2 | 3 | public class ExcludedFileNamePattern 4 | { 5 | public DateTime CreatedOn { get; set; } 6 | public int Id { get; set; } 7 | public virtual BackupJob? Job { get; set; } 8 | public int BackupJobId { get; set; } 9 | public string Pattern { get; set; } = string.Empty; 10 | } -------------------------------------------------------------------------------- /PointlessWaymarks.CloudBackupData/Models/FileSystemFile.cs: -------------------------------------------------------------------------------- 1 | namespace PointlessWaymarks.CloudBackupData.Models; 2 | 3 | public class FileSystemFile 4 | { 5 | public virtual CloudTransferBatch? CloudTransferBatch { get; set; } 6 | public int CloudTransferBatchId { get; set; } 7 | public DateTime CreatedOn { get; set; } 8 | public string FileHash { get; set; } = string.Empty; 9 | public string FileName { get; set; } = string.Empty; 10 | public long FileSize { get; set; } 11 | public string FileSystemDateTime { get; set; } = string.Empty; 12 | public int Id { get; set; } 13 | } -------------------------------------------------------------------------------- /PointlessWaymarks.CloudBackupGui/App.xaml: -------------------------------------------------------------------------------- 1 |  6 | 7 | 8 | -------------------------------------------------------------------------------- /PointlessWaymarks.CloudBackupGui/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Windows; 2 | 3 | [assembly: ThemeInfo( 4 | ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located 5 | //(used if a resource is not found in the page, 6 | // or application resource dictionaries) 7 | ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located 8 | //(used if a resource is not found in the page, 9 | // app, or any theme specific resource dictionaries) 10 | )] 11 | -------------------------------------------------------------------------------- /PointlessWaymarks.CloudBackupGui/CloudBackupGuiSettings.cs: -------------------------------------------------------------------------------- 1 | using PointlessWaymarks.LlamaAspects; 2 | 3 | namespace PointlessWaymarks.CloudBackupGui; 4 | 5 | [NotifyPropertyChanged] 6 | public partial class CloudBackupGuiSettings 7 | { 8 | public string DatabaseFile { get; set; } = string.Empty; 9 | public string? LastDirectory { get; set; } = string.Empty; 10 | public string ProgramUpdateDirectory { get; set; } = @"https://software.pointlesswaymarks.com/Software/PointlessWaymarksSoftwareList.json"; 11 | } -------------------------------------------------------------------------------- /PointlessWaymarks.CloudBackupGui/CloudBackupInstallerLeftImage.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.CloudBackupGui/CloudBackupInstallerLeftImage.bmp -------------------------------------------------------------------------------- /PointlessWaymarks.CloudBackupGui/CloudBackupInstallerLeftImage.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.CloudBackupGui/CloudBackupInstallerLeftImage.psd -------------------------------------------------------------------------------- /PointlessWaymarks.CloudBackupGui/CloudBackupInstallerTopRightImage.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.CloudBackupGui/CloudBackupInstallerTopRightImage.bmp -------------------------------------------------------------------------------- /PointlessWaymarks.CloudBackupGui/CloudBackupInstallerTopRightImage.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.CloudBackupGui/CloudBackupInstallerTopRightImage.psd -------------------------------------------------------------------------------- /PointlessWaymarks.CloudBackupGui/Controls/AppSettingsControl.xaml.cs: -------------------------------------------------------------------------------- 1 | using System.Windows.Controls; 2 | 3 | namespace PointlessWaymarks.CloudBackupGui.Controls; 4 | 5 | public partial class AppSettingsControl : UserControl 6 | { 7 | public AppSettingsControl() 8 | { 9 | InitializeComponent(); 10 | } 11 | } -------------------------------------------------------------------------------- /PointlessWaymarks.CloudBackupGui/Controls/BatchListControl.xaml.cs: -------------------------------------------------------------------------------- 1 | namespace PointlessWaymarks.CloudBackupGui.Controls; 2 | 3 | /// 4 | /// Interaction logic for BatchListControl.xaml 5 | /// 6 | public partial class BatchListControl 7 | { 8 | public BatchListControl() 9 | { 10 | InitializeComponent(); 11 | } 12 | } -------------------------------------------------------------------------------- /PointlessWaymarks.CloudBackupGui/Controls/JobEditorControl.xaml.cs: -------------------------------------------------------------------------------- 1 | using System.Windows.Controls; 2 | 3 | namespace PointlessWaymarks.CloudBackupGui.Controls 4 | { 5 | /// 6 | /// Interaction logic for JobEditorControl.xaml 7 | /// 8 | public partial class JobEditorControl : UserControl 9 | { 10 | public JobEditorControl() 11 | { 12 | InitializeComponent(); 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /PointlessWaymarks.CloudBackupGui/Controls/JobListControl.xaml.cs: -------------------------------------------------------------------------------- 1 | namespace PointlessWaymarks.CloudBackupGui.Controls; 2 | 3 | /// 4 | /// Interaction logic for JobListControl.xaml 5 | /// 6 | public partial class JobListControl 7 | { 8 | public JobListControl() 9 | { 10 | InitializeComponent(); 11 | } 12 | } -------------------------------------------------------------------------------- /PointlessWaymarks.CloudBackupGui/Controls/ProgressTrackerControl.xaml.cs: -------------------------------------------------------------------------------- 1 | using System.Windows.Controls; 2 | 3 | namespace PointlessWaymarks.CloudBackupGui.Controls; 4 | 5 | public partial class ProgressTrackerControl : UserControl 6 | { 7 | public ProgressTrackerControl() 8 | { 9 | InitializeComponent(); 10 | } 11 | } -------------------------------------------------------------------------------- /PointlessWaymarks.CloudBackupGui/Controls/ProgressTrackerListItem.cs: -------------------------------------------------------------------------------- 1 | using PointlessWaymarks.LlamaAspects; 2 | 3 | namespace PointlessWaymarks.CloudBackupGui.Controls; 4 | 5 | [NotifyPropertyChanged] 6 | public partial class ProgressTrackerListItem 7 | { 8 | public string Message { get; set; } = string.Empty; 9 | public DateTime ReceivedOn { get; set; } 10 | } -------------------------------------------------------------------------------- /PointlessWaymarks.CloudBackupGui/JotServices.cs: -------------------------------------------------------------------------------- 1 | using System.Windows; 2 | using Jot; 3 | using WpfScreenHelper; 4 | 5 | namespace PointlessWaymarks.CloudBackupGui; 6 | 7 | internal static class JotServices 8 | { 9 | public static readonly Tracker Tracker = new(); 10 | 11 | static JotServices() 12 | { 13 | Tracker.Configure().Id(w => w.Name, SystemInformation.VirtualScreen.Size) 14 | .Properties(w => new 15 | { 16 | w.Top, 17 | w.Width, 18 | w.Height, 19 | w.Left, 20 | w.WindowState 21 | }).PersistOn(nameof(Window.Closing)).StopTrackingOn(nameof(Window.Closing)); 22 | } 23 | } -------------------------------------------------------------------------------- /PointlessWaymarks.CloudBackupGui/PointlessWaymarksCloudBackupIcon.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.CloudBackupGui/PointlessWaymarksCloudBackupIcon.bmp -------------------------------------------------------------------------------- /PointlessWaymarks.CloudBackupGui/PointlessWaymarksCloudBackupIcon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.CloudBackupGui/PointlessWaymarksCloudBackupIcon.ico -------------------------------------------------------------------------------- /PointlessWaymarks.CloudBackupGui/Properties/launchSettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "profiles": { 3 | "PointlessWaymarks.CloudBackupGui": { 4 | "commandName": "Project" 5 | } 6 | } 7 | } -------------------------------------------------------------------------------- /PointlessWaymarks.CloudBackupRunner/ConsoleAndDataNotificationProgress.cs: -------------------------------------------------------------------------------- 1 | using PointlessWaymarks.CloudBackupData; 2 | 3 | namespace PointlessWaymarks.CloudBackupRunner; 4 | 5 | public class ConsoleAndDataNotificationProgress(Guid consoleId) : IProgress 6 | { 7 | public readonly Guid _consoleId = consoleId; 8 | 9 | public Guid PersistentId { get; set; } = Guid.Empty; 10 | public int? BatchId { get; set; } 11 | 12 | public void Report(string value) 13 | { 14 | Console.WriteLine(value); 15 | DataNotifications.PublishProgressNotification(_consoleId.ToString(), Environment.ProcessId, value, PersistentId, BatchId); 16 | } 17 | } -------------------------------------------------------------------------------- /PointlessWaymarks.CloudBackupRunner/PointlessWaymarksCmsAutomationIcon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.CloudBackupRunner/PointlessWaymarksCmsAutomationIcon.ico -------------------------------------------------------------------------------- /PointlessWaymarks.CloudBackupScreenShots/Pointless-Waymarks-Cloud-Backup-Batch-List-Window.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.CloudBackupScreenShots/Pointless-Waymarks-Cloud-Backup-Batch-List-Window.jpg -------------------------------------------------------------------------------- /PointlessWaymarks.CloudBackupScreenShots/Pointless-Waymarks-Cloud-Backup-Command-Line-Runner-Progress.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.CloudBackupScreenShots/Pointless-Waymarks-Cloud-Backup-Command-Line-Runner-Progress.jpg -------------------------------------------------------------------------------- /PointlessWaymarks.CloudBackupScreenShots/Pointless-Waymarks-Cloud-Backup-Completion-Notification.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.CloudBackupScreenShots/Pointless-Waymarks-Cloud-Backup-Completion-Notification.jpg -------------------------------------------------------------------------------- /PointlessWaymarks.CloudBackupScreenShots/Pointless-Waymarks-Cloud-Backup-Help-Screen.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.CloudBackupScreenShots/Pointless-Waymarks-Cloud-Backup-Help-Screen.jpg -------------------------------------------------------------------------------- /PointlessWaymarks.CloudBackupScreenShots/Pointless-Waymarks-Cloud-Backup-Job-Editor-Window.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.CloudBackupScreenShots/Pointless-Waymarks-Cloud-Backup-Job-Editor-Window.jpg -------------------------------------------------------------------------------- /PointlessWaymarks.CloudBackupScreenShots/Pointless-Waymarks-Cloud-Backup-Main-Window.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.CloudBackupScreenShots/Pointless-Waymarks-Cloud-Backup-Main-Window.jpg -------------------------------------------------------------------------------- /PointlessWaymarks.CloudBackupScreenShots/Pointless-Waymarks-Cloud-Backup-Progress-Window.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.CloudBackupScreenShots/Pointless-Waymarks-Cloud-Backup-Progress-Window.jpg -------------------------------------------------------------------------------- /PointlessWaymarks.CloudBackupTests/Usings.cs: -------------------------------------------------------------------------------- 1 | global using NUnit.Framework; -------------------------------------------------------------------------------- /PointlessWaymarks.CmsData/CommonHtml/PictureAsset.cs: -------------------------------------------------------------------------------- 1 | namespace PointlessWaymarks.CmsData.CommonHtml; 2 | 3 | public class PictureAsset 4 | { 5 | public object? DbEntry { get; init; } 6 | public PictureFile? DisplayPicture { get; set; } 7 | public PictureFile? LargePicture { get; set; } 8 | public PictureFile? SmallPicture { get; set; } 9 | public List SrcsetImages { get; set; } = []; 10 | 11 | public PictureFile? PictureClosestToByArea(int area) 12 | { 13 | return SrcsetImages.MinBy(x => Math.Abs(x.Width * x.Height - area)); 14 | } 15 | 16 | public string SrcSetString() 17 | { 18 | return string.Join(", ", 19 | SrcsetImages.OrderByDescending(x => x.Width).Select(x => $"{x.SiteUrl} {x.Width}w")); 20 | } 21 | } -------------------------------------------------------------------------------- /PointlessWaymarks.CmsData/CommonHtml/PictureFile.cs: -------------------------------------------------------------------------------- 1 | namespace PointlessWaymarks.CmsData.CommonHtml; 2 | 3 | public class PictureFile 4 | { 5 | public string? AltText { get; init; } 6 | public FileInfo? File { get; init; } 7 | public string? FileName { get; set; } 8 | public int Height { get; init; } 9 | public string? SiteUrl { get; init; } 10 | public int Width { get; init; } 11 | } -------------------------------------------------------------------------------- /PointlessWaymarks.CmsData/ContentHtml/FileHtml/SingleFileDiv.tt: -------------------------------------------------------------------------------- 1 | <#@ template language="C#" #> 2 | <#@ import namespace="CommonHtml" #> 3 | 4 |
" data-contentid="<#= DbEntry.ContentId.ToString() #>"> 5 | <#= Tags.TitleLinkDiv(DbEntry, DbEntry).ToString() #> 6 | <#= Tags.PostCreatedByAndUpdatedOnDiv(DbEntry).ToString() #> 7 | <#= FileParts.EmbedFileTag(DbEntry).Result #> 8 | <#= Tags.PostBodyDiv(DbEntry).Result.ToString() #> 9 | <#= FileParts.DownloadLinkTag(DbEntry) #> 10 | <#= FileParts.FileLocationDiv(DbEntry) #> 11 | <#= BodyContentReferences.CompactContentTag(DbEntry, GenerationVersion).Result #> 12 |
13 | -------------------------------------------------------------------------------- /PointlessWaymarks.CmsData/ContentHtml/FileHtml/SingleFileDivCode.cs: -------------------------------------------------------------------------------- 1 | using PointlessWaymarks.CmsData.Database.Models; 2 | 3 | namespace PointlessWaymarks.CmsData.ContentHtml.FileHtml; 4 | 5 | public partial class SingleFileDiv 6 | { 7 | public SingleFileDiv(FileContent dbEntry) 8 | { 9 | DbEntry = dbEntry; 10 | 11 | var settings = UserSettingsSingleton.CurrentSettings(); 12 | SiteUrl = settings.SiteUrl(); 13 | SiteName = settings.SiteName; 14 | PageUrl = settings.FilePageUrl(DbEntry); 15 | } 16 | 17 | public FileContent DbEntry { get; set; } 18 | public DateTime? GenerationVersion { get; set; } 19 | public string PageUrl { get; set; } 20 | public string SiteName { get; set; } 21 | public string SiteUrl { get; set; } 22 | } -------------------------------------------------------------------------------- /PointlessWaymarks.CmsData/ContentHtml/GeoJsonHtml/SingleGeoJsonDiv.tt: -------------------------------------------------------------------------------- 1 | <#@ template language="C#" #> 2 | <#@ import namespace="CommonHtml" #> 3 | 4 |
" data-contentid="<#= DbEntry.ContentId.ToString() #>"> 5 | <#= Tags.TitleLinkDiv(DbEntry, DbEntry) #> 6 | <#= Tags.PostCreatedByAndUpdatedOnDiv(DbEntry).ToString() #> 7 | <#= GeoJsonParts.GeoJsonDivAndScript(DbEntry) #> 8 | <#= Tags.PostBodyDiv(DbEntry).Result #> 9 | <#= GeoJsonParts.DownloadLinkTag(DbEntry) #> 10 | <#= BodyContentReferences.CompactContentTag(DbEntry, GenerationVersion).Result #> 11 |
-------------------------------------------------------------------------------- /PointlessWaymarks.CmsData/ContentHtml/ImageHtml/SingleImageDiv.tt: -------------------------------------------------------------------------------- 1 | <#@ template language="C#" #> 2 | <#@ import namespace="CommonHtml" #> 3 | 4 |
" data-contentid="<#= DbEntry.ContentId.ToString() #>"> 5 | <#= 6 | PictureInformation.PictureFigureWithCaptionAndLinkToPicturePageTag("100vw") #> 7 | <#= Tags.PostBodyDiv(DbEntry).Result.ToString() #> 8 | <#= ImageParts.ImageLocationDiv(DbEntry) #> 9 | <#= 10 | BodyContentReferences.CompactContentTag(DbEntry, GenerationVersion).Result #> 11 |
12 | -------------------------------------------------------------------------------- /PointlessWaymarks.CmsData/ContentHtml/LineHtml/SingleLineDiv.tt: -------------------------------------------------------------------------------- 1 | <#@ template language="C#" #> 2 | <#@ import namespace="CommonHtml" #> 3 | 4 |
" data-contentid="<#= DbEntry.ContentId.ToString() #>"> 5 | <#= Tags.TitleLinkDiv(DbEntry, DbEntry) #> 6 | <#= Tags.PostCreatedByAndUpdatedOnDiv(DbEntry).ToString() #> 7 | <#= LineParts.LineDivAndScript(DbEntry) #> 8 | <#= LineParts.LineElevationChartDivAndScript(DbEntry) #> 9 | <#= LineParts.LineStatisticsWithContentDiv(DbEntry).ToString() #> 10 | <#= Tags.PostBodyDiv(DbEntry).Result #> 11 | <#= BodyContentReferences.CompactContentTag(DbEntry, GenerationVersion).Result #> 12 |
-------------------------------------------------------------------------------- /PointlessWaymarks.CmsData/ContentHtml/LineHtml/SingleLineDivCode.cs: -------------------------------------------------------------------------------- 1 | using PointlessWaymarks.CmsData.Database.Models; 2 | 3 | namespace PointlessWaymarks.CmsData.ContentHtml.LineHtml; 4 | 5 | public partial class SingleLineDiv 6 | { 7 | public SingleLineDiv(LineContent dbEntry) 8 | { 9 | DbEntry = dbEntry; 10 | 11 | var settings = UserSettingsSingleton.CurrentSettings(); 12 | SiteUrl = settings.SiteUrl(); 13 | SiteName = settings.SiteName; 14 | PageUrl = settings.LinePageUrl(DbEntry); 15 | } 16 | 17 | public LineContent DbEntry { get; set; } 18 | public DateTime? GenerationVersion { get; set; } 19 | public string PageUrl { get; set; } 20 | public string SiteName { get; set; } 21 | public string SiteUrl { get; set; } 22 | } -------------------------------------------------------------------------------- /PointlessWaymarks.CmsData/ContentHtml/NoteHtml/SingleNoteDiv.tt: -------------------------------------------------------------------------------- 1 | <#@ template language="C#" #> 2 | <#@ import namespace="CommonHtml" #> 3 | 4 |
" data-contentid="<#= DbEntry.ContentId.ToString() #>"> 5 | <#= NoteParts.NoteTitleLinkDiv(DbEntry) #> 6 | <#= Tags.PostBodyDiv(DbEntry).Result #> 7 | <#= 8 | BodyContentReferences.CompactContentTag(DbEntry, GenerationVersion).Result #> 9 |
10 | -------------------------------------------------------------------------------- /PointlessWaymarks.CmsData/ContentHtml/NoteHtml/SingleNoteDivCode.cs: -------------------------------------------------------------------------------- 1 | using PointlessWaymarks.CmsData.Database.Models; 2 | 3 | namespace PointlessWaymarks.CmsData.ContentHtml.NoteHtml; 4 | 5 | public partial class SingleNoteDiv 6 | { 7 | public SingleNoteDiv(NoteContent dbEntry) 8 | { 9 | DbEntry = dbEntry; 10 | 11 | var settings = UserSettingsSingleton.CurrentSettings(); 12 | SiteUrl = settings.SiteUrl(); 13 | SiteName = settings.SiteName; 14 | PageUrl = settings.NotePageUrl(DbEntry); 15 | } 16 | 17 | public NoteContent DbEntry { get; set; } 18 | public DateTime? GenerationVersion { get; set; } 19 | public string PageUrl { get; set; } 20 | public string SiteName { get; set; } 21 | public string SiteUrl { get; set; } 22 | } -------------------------------------------------------------------------------- /PointlessWaymarks.CmsData/ContentHtml/PointHtml/SinglePointDiv.tt: -------------------------------------------------------------------------------- 1 | <#@ template language="C#" #> 2 | <#@ import namespace="CommonHtml" #> 3 | 4 |
" data-contentid="<#= DbEntry.ContentId.ToString() #>"> 5 | <#= Tags.TitleLinkDiv(DbEntry, DbEntry) #> 6 | <#= Tags.PostCreatedByAndUpdatedOnDiv(DbEntry).ToString() #> 7 | <#= PointParts.PointDivAndScript(DbEntry.ContentId) #> 8 | <#= PointParts.PointTextInfoDiv(DbEntry) #> 9 | <#= Tags.PostBodyDiv(DbEntry).Result.ToString() #> 10 | <#= PointParts.PointDetailsDiv(DbEntry).Result.ToString() #> 11 | <#= BodyContentReferences.CompactContentTag(DbEntry, GenerationVersion).Result #> 12 |
-------------------------------------------------------------------------------- /PointlessWaymarks.CmsData/ContentHtml/PostHtml/SinglePostDiv.tt: -------------------------------------------------------------------------------- 1 | <#@ template language="C#" #> 2 | <#@ import namespace="CommonHtml" #> 3 | 4 |
" data-contentid="<#= DbEntry.ContentId.ToString() #>"> 5 | <#= Tags.TitleLinkDiv(DbEntry, DbEntry) #> 6 | <#= Tags.PostCreatedByAndUpdatedOnDiv(DbEntry).ToString() #> 7 | <#= Tags.PostBodyDiv(DbEntry).Result #> 8 | <#= PostParts.PostLocationDiv(DbEntry) #> 9 | <#= BodyContentReferences.CompactContentTag(DbEntry, GenerationVersion).Result #> 10 |
-------------------------------------------------------------------------------- /PointlessWaymarks.CmsData/ContentHtml/PostHtml/SinglePostDivCode.cs: -------------------------------------------------------------------------------- 1 | using PointlessWaymarks.CmsData.Database.Models; 2 | 3 | namespace PointlessWaymarks.CmsData.ContentHtml.PostHtml; 4 | 5 | public partial class SinglePostDiv 6 | { 7 | public SinglePostDiv(PostContent dbEntry) 8 | { 9 | DbEntry = dbEntry; 10 | 11 | var settings = UserSettingsSingleton.CurrentSettings(); 12 | SiteUrl = settings.SiteUrl(); 13 | SiteName = settings.SiteName; 14 | PageUrl = settings.PostPageUrl(DbEntry); 15 | } 16 | 17 | public PostContent DbEntry { get; set; } 18 | public DateTime? GenerationVersion { get; set; } 19 | public string PageUrl { get; set; } 20 | public string SiteName { get; set; } 21 | public string SiteUrl { get; set; } 22 | } -------------------------------------------------------------------------------- /PointlessWaymarks.CmsData/ContentHtml/TrailHtml/SingleTrailDiv.tt: -------------------------------------------------------------------------------- 1 | <#@ template language="C#" #> 2 | <#@ import namespace="CommonHtml" #> 3 | 4 |
" data-contentid="<#= DbEntry.ContentId.ToString() #>"> 5 | <#= Tags.TitleLinkDiv(DbEntry, DbEntry) #> 6 | <#= Tags.PostCreatedByAndUpdatedOnDiv(DbEntry).ToString() #> 7 | <#= Tags.PostBodyDiv(DbEntry, null, TrailParts.TrailGeneratedInfo(DbEntry).Result.ToString()).Result #> 8 | <#= BodyContentReferences.CompactContentTag(DbEntry, GenerationVersion).Result #> 9 |
-------------------------------------------------------------------------------- /PointlessWaymarks.CmsData/ContentHtml/VideoHtml/SingleVideoDiv.tt: -------------------------------------------------------------------------------- 1 | <#@ template language="C#" #> 2 | <#@ import namespace="CommonHtml" #> 3 | 4 |
" data-contentid="<#= DbEntry.ContentId.ToString() #>"> 5 | <#= Tags.TitleLinkDiv(DbEntry, DbEntry).ToString() #> 6 | <#= Tags.PostCreatedByAndUpdatedOnDiv(DbEntry).ToString() #> 7 | <#= VideoParts.EmbedVideoTag(DbEntry).Result #> 8 | <#= Tags.PostBodyDiv(DbEntry).Result.ToString() #> 9 | <#= VideoParts.VideoLocationDiv(DbEntry) #> 10 | <#= BodyContentReferences.CompactContentTag(DbEntry, GenerationVersion).Result #> 11 |
12 | -------------------------------------------------------------------------------- /PointlessWaymarks.CmsData/Database/ContentFormats.cs: -------------------------------------------------------------------------------- 1 | namespace PointlessWaymarks.CmsData.Database; 2 | 3 | public static class ContentFormatDefaults 4 | { 5 | public static ContentFormatEnum Content => ContentFormatEnum.MarkdigMarkdown01; 6 | } 7 | 8 | public enum ContentFormatEnum 9 | { 10 | MarkdigMarkdown01, 11 | Html01 12 | } -------------------------------------------------------------------------------- /PointlessWaymarks.CmsData/Database/Models/GenerationChangedContentId.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel.DataAnnotations; 2 | 3 | namespace PointlessWaymarks.CmsData.Database.Models; 4 | 5 | public class GenerationChangedContentId 6 | { 7 | [Key] public Guid ContentId { get; set; } 8 | } -------------------------------------------------------------------------------- /PointlessWaymarks.CmsData/Database/Models/GenerationDailyPhotoLog.cs: -------------------------------------------------------------------------------- 1 | namespace PointlessWaymarks.CmsData.Database.Models; 2 | 3 | public class GenerationDailyPhotoLog 4 | { 5 | public DateTime DailyPhotoDate { get; set; } 6 | public DateTime GenerationVersion { get; set; } 7 | public int Id { get; set; } 8 | public Guid RelatedContentId { get; set; } 9 | } -------------------------------------------------------------------------------- /PointlessWaymarks.CmsData/Database/Models/GenerationFileTransferScriptLog.cs: -------------------------------------------------------------------------------- 1 | namespace PointlessWaymarks.CmsData.Database.Models; 2 | 3 | public class GenerationFileTransferScriptLog 4 | { 5 | public string? FileName { get; set; } 6 | public int Id { get; set; } 7 | public DateTime WrittenOnVersion { get; set; } 8 | } -------------------------------------------------------------------------------- /PointlessWaymarks.CmsData/Database/Models/GenerationFileWriteLog.cs: -------------------------------------------------------------------------------- 1 | namespace PointlessWaymarks.CmsData.Database.Models; 2 | 3 | public class GenerationFileWriteLog 4 | { 5 | public string? FileName { get; set; } 6 | public int Id { get; set; } 7 | public DateTime WrittenOnVersion { get; set; } 8 | } -------------------------------------------------------------------------------- /PointlessWaymarks.CmsData/Database/Models/GenerationLog.cs: -------------------------------------------------------------------------------- 1 | namespace PointlessWaymarks.CmsData.Database.Models; 2 | 3 | public class GenerationLog 4 | { 5 | public string? GenerationSettings { get; set; } 6 | public DateTime GenerationVersion { get; set; } 7 | public int Id { get; set; } 8 | } -------------------------------------------------------------------------------- /PointlessWaymarks.CmsData/Database/Models/GenerationRelatedContent.cs: -------------------------------------------------------------------------------- 1 | namespace PointlessWaymarks.CmsData.Database.Models; 2 | 3 | public class GenerationRelatedContent 4 | { 5 | public Guid ContentOne { get; set; } 6 | public Guid ContentTwo { get; set; } 7 | public DateTime GenerationVersion { get; set; } 8 | public int Id { get; set; } 9 | } -------------------------------------------------------------------------------- /PointlessWaymarks.CmsData/Database/Models/GenerationTagLog.cs: -------------------------------------------------------------------------------- 1 | namespace PointlessWaymarks.CmsData.Database.Models; 2 | 3 | public class GenerationTagLog 4 | { 5 | public DateTime GenerationVersion { get; set; } 6 | public int Id { get; set; } 7 | public Guid RelatedContentId { get; set; } 8 | public bool TagIsExcludedFromSearch { get; set; } 9 | public string? TagSlug { get; set; } 10 | } -------------------------------------------------------------------------------- /PointlessWaymarks.CmsData/Database/Models/HistoricMapElement.cs: -------------------------------------------------------------------------------- 1 | namespace PointlessWaymarks.CmsData.Database.Models; 2 | 3 | public class HistoricMapElement 4 | { 5 | public Guid ElementContentId { get; set; } 6 | public Guid HistoricGroupId { get; set; } 7 | public int Id { get; set; } 8 | public bool IncludeInDefaultView { get; set; } 9 | public bool IsFeaturedElement { get; set; } 10 | public DateTime LastUpdateOn { get; set; } 11 | public string? LinksTo { get; set; } = string.Empty; 12 | public Guid MapComponentContentId { get; set; } 13 | public bool ShowDetailsDefault { get; set; } 14 | } -------------------------------------------------------------------------------- /PointlessWaymarks.CmsData/Database/Models/HistoricMapIcon.cs: -------------------------------------------------------------------------------- 1 | namespace PointlessWaymarks.CmsData.Database.Models; 2 | 3 | public class HistoricMapIcon 4 | { 5 | public required Guid ContentId { get; set; } 6 | public string? IconName { get; set; } 7 | public string? IconSource { get; set; } 8 | public string? IconSvg { get; set; } 9 | public int Id { get; set; } 10 | public string? LastUpdatedBy { get; set; } 11 | public required DateTime LastUpdatedOn { get; set; } 12 | public required DateTime ContentVersion { get; set; } 13 | } -------------------------------------------------------------------------------- /PointlessWaymarks.CmsData/Database/Models/HistoricPointDetail.cs: -------------------------------------------------------------------------------- 1 | namespace PointlessWaymarks.CmsData.Database.Models; 2 | 3 | public class HistoricPointDetail : IContentId 4 | { 5 | public Guid ContentId { get; set; } 6 | public DateTime ContentVersion { get; set; } 7 | public DateTime CreatedOn { get; set; } 8 | public string? DataType { get; set; } 9 | public Guid HistoricGroupId { get; set; } 10 | public int Id { get; set; } 11 | public DateTime? LastUpdatedOn { get; set; } 12 | public Guid PointContentId { get; set; } 13 | public string? StructuredDataAsJson { get; set; } 14 | } -------------------------------------------------------------------------------- /PointlessWaymarks.CmsData/Database/Models/IBodyContent.cs: -------------------------------------------------------------------------------- 1 | namespace PointlessWaymarks.CmsData.Database.Models; 2 | 3 | public interface IBodyContent 4 | { 5 | public string? BodyContent { get; } 6 | public string? BodyContentFormat { get; } 7 | } -------------------------------------------------------------------------------- /PointlessWaymarks.CmsData/Database/Models/IContentCommon.cs: -------------------------------------------------------------------------------- 1 | namespace PointlessWaymarks.CmsData.Database.Models; 2 | 3 | public interface IContentCommon : IContentId, IMainImage, ITag, ITitleSummarySlugFolder, 4 | ICreatedAndLastUpdateOnAndBy, IMainSiteFeed, IBodyContent, IShowInSearch 5 | { 6 | } -------------------------------------------------------------------------------- /PointlessWaymarks.CmsData/Database/Models/IContentId.cs: -------------------------------------------------------------------------------- 1 | namespace PointlessWaymarks.CmsData.Database.Models; 2 | 3 | public interface IContentId 4 | { 5 | public Guid ContentId { get; } 6 | public DateTime ContentVersion { get; } 7 | public int Id { get; } 8 | } -------------------------------------------------------------------------------- /PointlessWaymarks.CmsData/Database/Models/ICreatedAndLastUpdateOnAndBy.cs: -------------------------------------------------------------------------------- 1 | namespace PointlessWaymarks.CmsData.Database.Models; 2 | 3 | public interface ICreatedAndLastUpdateOnAndBy 4 | { 5 | public string? CreatedBy { get; } 6 | public DateTime CreatedOn { get; } 7 | public string? LastUpdatedBy { get; } 8 | public DateTime? LastUpdatedOn { get; } 9 | public DateTime LatestUpdate { get; } 10 | } -------------------------------------------------------------------------------- /PointlessWaymarks.CmsData/Database/Models/IMainImage.cs: -------------------------------------------------------------------------------- 1 | namespace PointlessWaymarks.CmsData.Database.Models; 2 | 3 | public interface IMainImage 4 | { 5 | public Guid? MainPicture { get; } 6 | } -------------------------------------------------------------------------------- /PointlessWaymarks.CmsData/Database/Models/IMainSiteFeed.cs: -------------------------------------------------------------------------------- 1 | namespace PointlessWaymarks.CmsData.Database.Models; 2 | 3 | public interface IMainSiteFeed 4 | { 5 | public DateTime FeedOn { get; set; } 6 | public bool IsDraft { get; set; } 7 | bool ShowInMainSiteFeed { get; } 8 | } -------------------------------------------------------------------------------- /PointlessWaymarks.CmsData/Database/Models/IOptionalLocation.cs: -------------------------------------------------------------------------------- 1 | namespace PointlessWaymarks.CmsData.Database.Models; 2 | 3 | public interface IOptionalLocation 4 | { 5 | public double? Elevation { get; set; } 6 | public double? Latitude { get; set; } 7 | public double? Longitude { get; set; } 8 | public bool ShowLocation { get; set; } 9 | } -------------------------------------------------------------------------------- /PointlessWaymarks.CmsData/Database/Models/IShowInSearch.cs: -------------------------------------------------------------------------------- 1 | namespace PointlessWaymarks.CmsData.Database.Models; 2 | 3 | public interface IShowInSearch 4 | { 5 | bool ShowInSearch { get; } 6 | } -------------------------------------------------------------------------------- /PointlessWaymarks.CmsData/Database/Models/ITags.cs: -------------------------------------------------------------------------------- 1 | namespace PointlessWaymarks.CmsData.Database.Models; 2 | 3 | public interface ITag 4 | { 5 | public string? Tags { get; } 6 | } -------------------------------------------------------------------------------- /PointlessWaymarks.CmsData/Database/Models/ITitle.cs: -------------------------------------------------------------------------------- 1 | namespace PointlessWaymarks.CmsData.Database.Models; 2 | 3 | public interface ITitle 4 | { 5 | public string? Title { get; } 6 | } -------------------------------------------------------------------------------- /PointlessWaymarks.CmsData/Database/Models/ITitleSummarySlugFolder.cs: -------------------------------------------------------------------------------- 1 | namespace PointlessWaymarks.CmsData.Database.Models; 2 | 3 | public interface ITitleSummarySlugFolder : ITitle 4 | { 5 | public string? Folder { get; } 6 | public string? Slug { get; } 7 | public string? Summary { get; } 8 | } -------------------------------------------------------------------------------- /PointlessWaymarks.CmsData/Database/Models/IUpdateNotes.cs: -------------------------------------------------------------------------------- 1 | namespace PointlessWaymarks.CmsData.Database.Models; 2 | 3 | public interface IUpdateNotes 4 | { 5 | public string? UpdateNotes { get; } 6 | public string? UpdateNotesFormat { get; } 7 | } -------------------------------------------------------------------------------- /PointlessWaymarks.CmsData/Database/Models/ImageMetadata.cs: -------------------------------------------------------------------------------- 1 | namespace PointlessWaymarks.CmsData.Database.Models; 2 | 3 | public class ImageMetadata 4 | { 5 | public string? Summary { get; set; } 6 | public string? Tags { get; set; } 7 | public string? Title { get; set; } 8 | } -------------------------------------------------------------------------------- /PointlessWaymarks.CmsData/Database/Models/MenuLink.cs: -------------------------------------------------------------------------------- 1 | namespace PointlessWaymarks.CmsData.Database.Models; 2 | 3 | public class MenuLink 4 | { 5 | public DateTime ContentVersion { get; set; } 6 | public int Id { get; set; } 7 | public string? LinkTag { get; set; } 8 | public int MenuOrder { get; set; } 9 | } -------------------------------------------------------------------------------- /PointlessWaymarks.CmsData/Database/Models/TagExclusion.cs: -------------------------------------------------------------------------------- 1 | namespace PointlessWaymarks.CmsData.Database.Models; 2 | 3 | public class TagExclusion 4 | { 5 | public DateTime ContentVersion { get; set; } 6 | public int Id { get; set; } 7 | public string? Tag { get; set; } 8 | } -------------------------------------------------------------------------------- /PointlessWaymarks.CmsData/Database/PointDetailDataModels/Fee.cs: -------------------------------------------------------------------------------- 1 | using PointlessWaymarks.CommonTools; 2 | 3 | namespace PointlessWaymarks.CmsData.Database.PointDetailDataModels; 4 | 5 | public class Fee : IPointDetailData 6 | { 7 | public string DataTypeIdentifier => "Fee"; 8 | public string? Notes { get; set; } 9 | public string? NotesContentFormat { get; set; } = ContentFormatDefaults.Content.ToString(); 10 | 11 | public async Task Validate() 12 | { 13 | var formatValidation = await CommonContentValidation.ValidateBodyContentFormat(NotesContentFormat); 14 | return !formatValidation.Valid 15 | ? new IsValid(false, formatValidation.Explanation) 16 | : new IsValid(true, string.Empty); 17 | } 18 | } -------------------------------------------------------------------------------- /PointlessWaymarks.CmsData/Database/PointDetailDataModels/IPointDetailData.cs: -------------------------------------------------------------------------------- 1 | using PointlessWaymarks.CommonTools; 2 | 3 | namespace PointlessWaymarks.CmsData.Database.PointDetailDataModels; 4 | 5 | public interface IPointDetailData 6 | { 7 | string DataTypeIdentifier { get; } 8 | public Task Validate(); 9 | } -------------------------------------------------------------------------------- /PointlessWaymarks.CmsData/Database/PointDetailDataModels/Peak.cs: -------------------------------------------------------------------------------- 1 | using PointlessWaymarks.CommonTools; 2 | 3 | namespace PointlessWaymarks.CmsData.Database.PointDetailDataModels; 4 | 5 | public class Peak : IPointDetailData 6 | { 7 | public string DataTypeIdentifier => "Peak"; 8 | public string? Notes { get; set; } 9 | public string NotesContentFormat { get; set; } = ContentFormatDefaults.Content.ToString(); 10 | 11 | public async Task Validate() 12 | { 13 | var formatValidation = await CommonContentValidation.ValidateBodyContentFormat(NotesContentFormat); 14 | return !formatValidation.Valid 15 | ? new IsValid(false, formatValidation.Explanation) 16 | : new IsValid(true, string.Empty); 17 | } 18 | } -------------------------------------------------------------------------------- /PointlessWaymarks.CmsData/Database/PointDetailDataModels/Restroom.cs: -------------------------------------------------------------------------------- 1 | using PointlessWaymarks.CommonTools; 2 | 3 | namespace PointlessWaymarks.CmsData.Database.PointDetailDataModels; 4 | 5 | public class Restroom : IPointDetailData 6 | { 7 | public string DataTypeIdentifier => "Restroom"; 8 | public string? Notes { get; set; } 9 | public string NotesContentFormat { get; set; } = ContentFormatDefaults.Content.ToString(); 10 | 11 | public async Task Validate() 12 | { 13 | var formatValidation = await CommonContentValidation.ValidateBodyContentFormat(NotesContentFormat); 14 | return !formatValidation.Valid 15 | ? new IsValid(false, formatValidation.Explanation) 16 | : new IsValid(true, string.Empty); 17 | } 18 | } -------------------------------------------------------------------------------- /PointlessWaymarks.CmsData/ExcelImport/ContentImportColumn.cs: -------------------------------------------------------------------------------- 1 | namespace PointlessWaymarks.CmsData.ExcelImport; 2 | 3 | public class ContentImportColumn 4 | { 5 | public string? ColumnHeader { get; set; } 6 | public int ColumnNumber { get; set; } 7 | } -------------------------------------------------------------------------------- /PointlessWaymarks.CmsData/ExcelImport/ContentImportValueParse.cs: -------------------------------------------------------------------------------- 1 | namespace PointlessWaymarks.CmsData.ExcelImport; 2 | 3 | public class ContentImportValueParse 4 | { 5 | public T? ParsedValue { get; set; } 6 | public string? StringValue { get; init; } 7 | public bool? ValueParsed { get; set; } 8 | } -------------------------------------------------------------------------------- /PointlessWaymarks.CmsData/ImageHelpers/IPictureResizer.cs: -------------------------------------------------------------------------------- 1 | namespace PointlessWaymarks.CmsData.ImageHelpers; 2 | 3 | public interface IPictureResizer 4 | { 5 | Task ResizeTo(FileInfo toResize, int width, int quality, string imageTypeString, bool addSizeString, 6 | IProgress? progress = null); 7 | } -------------------------------------------------------------------------------- /PointlessWaymarks.CmsData/Properties/launchSettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "profiles": { 3 | "PointlessWaymarks.CmsData": { 4 | "commandName": "Project" 5 | } 6 | } 7 | } -------------------------------------------------------------------------------- /PointlessWaymarks.CmsData/SiteResources/L.Control.Locate.min.css.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sourceRoot":"","sources":["../src/L.Control.Locate.scss"],"names":[],"mappings":"AASE,0BACE,eAEA,iEACE,qBACA,WACA,YACA,WACA,0OAGF,0DACE,qBACA,WACA,YACA,WACA,6bACA,yDAIJ,wEACE,sPAGF,2EACE,sPAIJ,wDACE,WACA,gBACA,uBACA,mBACA,gBACA,eAEA,6EACE,kBAIJ,wCACE,wDAGF,wCACE,GACE,eAGF,IACE,eACA,0BAGF,KACE,gBAIJ,uCACE,GACE,uBAGF,KACE","file":"L.Control.Locate.min.css"} -------------------------------------------------------------------------------- /PointlessWaymarks.CmsData/SiteResources/images/layers-2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.CmsData/SiteResources/images/layers-2x.png -------------------------------------------------------------------------------- /PointlessWaymarks.CmsData/SiteResources/images/layers.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.CmsData/SiteResources/images/layers.png -------------------------------------------------------------------------------- /PointlessWaymarks.CmsData/SiteResources/images/marker-icon-2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.CmsData/SiteResources/images/marker-icon-2x.png -------------------------------------------------------------------------------- /PointlessWaymarks.CmsData/SiteResources/images/marker-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.CmsData/SiteResources/images/marker-icon.png -------------------------------------------------------------------------------- /PointlessWaymarks.CmsData/SiteResources/images/marker-shadow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.CmsData/SiteResources/images/marker-shadow.png -------------------------------------------------------------------------------- /PointlessWaymarks.CmsData/SiteResources/images/markers-matte.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.CmsData/SiteResources/images/markers-matte.png -------------------------------------------------------------------------------- /PointlessWaymarks.CmsData/SiteResources/images/markers-matte@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.CmsData/SiteResources/images/markers-matte@2x.png -------------------------------------------------------------------------------- /PointlessWaymarks.CmsData/SiteResources/images/markers-plain.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.CmsData/SiteResources/images/markers-plain.png -------------------------------------------------------------------------------- /PointlessWaymarks.CmsData/SiteResources/images/markers-shadow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.CmsData/SiteResources/images/markers-shadow.png -------------------------------------------------------------------------------- /PointlessWaymarks.CmsData/SiteResources/images/markers-shadow@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.CmsData/SiteResources/images/markers-shadow@2x.png -------------------------------------------------------------------------------- /PointlessWaymarks.CmsData/SiteResources/images/markers-soft.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.CmsData/SiteResources/images/markers-soft.png -------------------------------------------------------------------------------- /PointlessWaymarks.CmsData/SiteResources/images/markers-soft@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.CmsData/SiteResources/images/markers-soft@2x.png -------------------------------------------------------------------------------- /PointlessWaymarks.CmsData/SiteResources/location-arrow-solid.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /PointlessWaymarks.CmsData/UserSettingsGenerationValues.cs: -------------------------------------------------------------------------------- 1 | namespace PointlessWaymarks.CmsData; 2 | 3 | public class UserSettingsGenerationValues 4 | { 5 | public DateTime? LastGenerationUtc { get; set; } 6 | public string? SiteAuthors { get; set; } 7 | public string? SiteEmailTo { get; set; } 8 | public string? SiteKeywords { get; set; } 9 | public string? SiteName { get; set; } 10 | public string? SiteSummary { get; set; } 11 | public string? SiteUrl { get; set; } 12 | } -------------------------------------------------------------------------------- /PointlessWaymarks.CmsData/UserSettingsSingleton.cs: -------------------------------------------------------------------------------- 1 | namespace PointlessWaymarks.CmsData; 2 | 3 | public static class UserSettingsSingleton 4 | { 5 | private static UserSettings? _userSettings; 6 | 7 | public static UserSettings CurrentSettings() 8 | { 9 | return _userSettings ??= UserSettingsUtilities.ReadFromCurrentSettingsFile().Result; 10 | } 11 | } -------------------------------------------------------------------------------- /PointlessWaymarks.CmsData/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.CmsData/favicon.ico -------------------------------------------------------------------------------- /PointlessWaymarks.CmsGui/App.xaml: -------------------------------------------------------------------------------- 1 |  6 | 7 | -------------------------------------------------------------------------------- /PointlessWaymarks.CmsGui/CmsInstallerLeftImage.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.CmsGui/CmsInstallerLeftImage.bmp -------------------------------------------------------------------------------- /PointlessWaymarks.CmsGui/CmsInstallerLeftImage.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.CmsGui/CmsInstallerLeftImage.psd -------------------------------------------------------------------------------- /PointlessWaymarks.CmsGui/CmsInstallerTopRightImage.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.CmsGui/CmsInstallerTopRightImage.bmp -------------------------------------------------------------------------------- /PointlessWaymarks.CmsGui/CmsInstallerTopRightImage.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.CmsGui/CmsInstallerTopRightImage.psd -------------------------------------------------------------------------------- /PointlessWaymarks.CmsGui/JotServices.cs: -------------------------------------------------------------------------------- 1 | using System.Windows; 2 | using Jot; 3 | using WpfScreenHelper; 4 | 5 | namespace PointlessWaymarks.CmsGui; 6 | 7 | internal static class JotServices 8 | { 9 | public static readonly Tracker Tracker = new(); 10 | 11 | static JotServices() 12 | { 13 | Tracker.Configure().Id(w => w.Name, SystemInformation.VirtualScreen.Size) 14 | .Properties(w => new 15 | { 16 | w.Top, 17 | w.Width, 18 | w.Height, 19 | w.Left, 20 | w.WindowState 21 | }).PersistOn(nameof(Window.Closing)).StopTrackingOn(nameof(Window.Closing)); 22 | } 23 | } -------------------------------------------------------------------------------- /PointlessWaymarks.CmsGui/PointlessWaymarksCmsIcon.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.CmsGui/PointlessWaymarksCmsIcon.bmp -------------------------------------------------------------------------------- /PointlessWaymarks.CmsGui/PointlessWaymarksCmsIcon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.CmsGui/PointlessWaymarksCmsIcon.ico -------------------------------------------------------------------------------- /PointlessWaymarks.CmsGui/Properties/launchSettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "profiles": { 3 | "PointlessWaymarks.CmsGui": { 4 | "commandName": "Project" 5 | } 6 | } 7 | } -------------------------------------------------------------------------------- /PointlessWaymarks.CmsGui/SettingsFileChooserControl.xaml.cs: -------------------------------------------------------------------------------- 1 | namespace PointlessWaymarks.CmsGui; 2 | 3 | /// 4 | /// Interaction logic for SettingsFileChooserControl.xaml 5 | /// 6 | public partial class SettingsFileChooserControl 7 | { 8 | public SettingsFileChooserControl() 9 | { 10 | InitializeComponent(); 11 | } 12 | } -------------------------------------------------------------------------------- /PointlessWaymarks.CmsGui/SettingsFileListItem.cs: -------------------------------------------------------------------------------- 1 | using System.IO; 2 | using PointlessWaymarks.CmsData; 3 | using PointlessWaymarks.LlamaAspects; 4 | 5 | namespace PointlessWaymarks.CmsGui; 6 | 7 | [NotifyPropertyChanged] 8 | public partial class SettingsFileListItem 9 | { 10 | public UserSettings ParsedSettings { get; set; } 11 | public FileInfo SettingsFile { get; set; } 12 | } -------------------------------------------------------------------------------- /PointlessWaymarks.CmsScreenShots/AllContentList.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.CmsScreenShots/AllContentList.jpg -------------------------------------------------------------------------------- /PointlessWaymarks.CmsScreenShots/ContentMapList.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.CmsScreenShots/ContentMapList.jpg -------------------------------------------------------------------------------- /PointlessWaymarks.CmsScreenShots/FeatureIntersectionsTagsExample.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.CmsScreenShots/FeatureIntersectionsTagsExample.jpg -------------------------------------------------------------------------------- /PointlessWaymarks.CmsScreenShots/FileEditorShowingValidationAndChangeIndicators.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.CmsScreenShots/FileEditorShowingValidationAndChangeIndicators.jpg -------------------------------------------------------------------------------- /PointlessWaymarks.CmsScreenShots/GeoJsonContentEditor.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.CmsScreenShots/GeoJsonContentEditor.jpg -------------------------------------------------------------------------------- /PointlessWaymarks.CmsScreenShots/ImageEditor.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.CmsScreenShots/ImageEditor.jpg -------------------------------------------------------------------------------- /PointlessWaymarks.CmsScreenShots/LaunchScreen.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.CmsScreenShots/LaunchScreen.jpg -------------------------------------------------------------------------------- /PointlessWaymarks.CmsScreenShots/LineEditorMapTab.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.CmsScreenShots/LineEditorMapTab.jpg -------------------------------------------------------------------------------- /PointlessWaymarks.CmsScreenShots/ListSearchBuilder.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.CmsScreenShots/ListSearchBuilder.jpg -------------------------------------------------------------------------------- /PointlessWaymarks.CmsScreenShots/MainListWithProgramUpdateNotice.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.CmsScreenShots/MainListWithProgramUpdateNotice.jpg -------------------------------------------------------------------------------- /PointlessWaymarks.CmsScreenShots/MemoriesEmail.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.CmsScreenShots/MemoriesEmail.jpg -------------------------------------------------------------------------------- /PointlessWaymarks.CmsScreenShots/MenuLinksEditor.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.CmsScreenShots/MenuLinksEditor.jpg -------------------------------------------------------------------------------- /PointlessWaymarks.CmsScreenShots/PhotoEditor-ShowingFileAndPhotoMetadata.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.CmsScreenShots/PhotoEditor-ShowingFileAndPhotoMetadata.jpg -------------------------------------------------------------------------------- /PointlessWaymarks.CmsScreenShots/PhotoList.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.CmsScreenShots/PhotoList.jpg -------------------------------------------------------------------------------- /PointlessWaymarks.CmsScreenShots/PointEditor.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.CmsScreenShots/PointEditor.jpg -------------------------------------------------------------------------------- /PointlessWaymarks.CmsScreenShots/PostEditorWithPreview.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.CmsScreenShots/PostEditorWithPreview.jpg -------------------------------------------------------------------------------- /PointlessWaymarks.CmsScreenShots/PostsList.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.CmsScreenShots/PostsList.jpg -------------------------------------------------------------------------------- /PointlessWaymarks.CmsScreenShots/S3Uploader.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.CmsScreenShots/S3Uploader.jpg -------------------------------------------------------------------------------- /PointlessWaymarks.CmsScreenShots/TagList.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.CmsScreenShots/TagList.jpg -------------------------------------------------------------------------------- /PointlessWaymarks.CmsScreenShots/WrittenFilesList.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.CmsScreenShots/WrittenFilesList.jpg -------------------------------------------------------------------------------- /PointlessWaymarks.CmsTask.GarminConnectGpxImport/GarminConnectGpxImportSettingsSample.json: -------------------------------------------------------------------------------- 1 | { 2 | "connectUserName": "", 3 | "connectPassword": "", 4 | "gpxArchiveDirectoryFullName": "C:\\GarminPointlessWaymarksArchive", 5 | "intersectionTagSettings": "", 6 | "downloadEndDate": "", 7 | "downloadDaysBack": 1, 8 | "overwriteExistingArchiveDirectoryFiles": false, 9 | "importActivitiesToSite": false, 10 | "pointlessWaymarksSiteSettingsFileFullName": "", 11 | "showInMainSiteFeed": true, 12 | "generateSiteAndUploadAfterImport": false 13 | } -------------------------------------------------------------------------------- /PointlessWaymarks.CmsTask.GarminConnectGpxImport/PointlessWaymarksCmsAutomationIcon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.CmsTask.GarminConnectGpxImport/PointlessWaymarksCmsAutomationIcon.ico -------------------------------------------------------------------------------- /PointlessWaymarks.CmsTask.MemoriesEmail/Helpers.cs: -------------------------------------------------------------------------------- 1 | namespace PointlessWaymarks.CmsTask.MemoriesEmail; 2 | 3 | public static class Helpers 4 | { 5 | public static string SafeObjectDump(this object toDump) 6 | { 7 | return ObjectDumper.Dump(toDump, new DumpOptions { MaxLevel = 2, DumpStyle = DumpStyle.Console }); 8 | } 9 | } -------------------------------------------------------------------------------- /PointlessWaymarks.CmsTask.MemoriesEmail/MemoriesSmtpEmailFromWebSettingsSample.json: -------------------------------------------------------------------------------- 1 | { 2 | "yearsBack": [ 100, 90, 80, 70, 60, 50, 40, 30, 20, 10, 5, 3, 2, 1 ], 3 | "siteUrl": "http://example.com", 4 | "basicAuthUserName": "", 5 | "basicAuthPassword": "", 6 | "smtpHost": "smtp.gmail.com", 7 | "smtpPort": 587, 8 | "enableSsl": true, 9 | "fromDisplayName": "Pointless Waymarks Emailer", 10 | "fromEmailAddress": "", 11 | "fromEmailPassword": "", 12 | "toAddressList": "" 13 | } 14 | -------------------------------------------------------------------------------- /PointlessWaymarks.CmsTask.MemoriesEmail/PointlessWaymarksCmsAutomationIcon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.CmsTask.MemoriesEmail/PointlessWaymarksCmsAutomationIcon.ico -------------------------------------------------------------------------------- /PointlessWaymarks.CmsTask.PhotoPickup/PhotoPickupSettingsSample.json: -------------------------------------------------------------------------------- 1 | { 2 | "photoPickupDirectory": "C:\\TestDirectory", 3 | "photoPickupArchiveDirectory": "C:\\TestDirectory\\PickUpArchive", 4 | "pointlessWaymarksSiteSettingsFileFullName": "C:\\Site\\SiteSettings.json", 5 | "renameFileToTitle": true, 6 | "showInMainSiteFeed": false 7 | } 8 | -------------------------------------------------------------------------------- /PointlessWaymarks.CmsTask.PhotoPickup/PointlessWaymarksCmsAutomationIcon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.CmsTask.PhotoPickup/PointlessWaymarksCmsAutomationIcon.ico -------------------------------------------------------------------------------- /PointlessWaymarks.CmsTask.PublishSiteToS3/PointlessWaymarksCmsAutomationIcon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.CmsTask.PublishSiteToS3/PointlessWaymarksCmsAutomationIcon.ico -------------------------------------------------------------------------------- /PointlessWaymarks.CmsTask.PublishSiteToS3/PublishToS3SettingsSample.json: -------------------------------------------------------------------------------- 1 | { 2 | "pointlessWaymarksSiteSettingsFileFullName": "C:\\Site\\SiteSettings.json" 3 | } 4 | -------------------------------------------------------------------------------- /PointlessWaymarks.CmsTests/DebugTrackers.cs: -------------------------------------------------------------------------------- 1 | using System.Diagnostics; 2 | using TinyIpc.Messaging; 3 | 4 | namespace PointlessWaymarks.CmsTests; 5 | 6 | public static class DebugTrackers 7 | { 8 | public static void DataNotificationDiagnostic(object sender, TinyMessageReceivedEventArgs e) 9 | { 10 | Debug.Print(e.Message.ToString()); 11 | } 12 | 13 | public static IProgress DebugProgressTracker() 14 | { 15 | var toReturn = new Progress(); 16 | toReturn.ProgressChanged += DebugProgressTrackerChange; 17 | return toReturn; 18 | } 19 | 20 | private static void DebugProgressTrackerChange(object? sender, string e) 21 | { 22 | Debug.WriteLine(e); 23 | } 24 | } -------------------------------------------------------------------------------- /PointlessWaymarks.CmsTests/TestMedia/1705-Ironwood-02.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.CmsTests/TestMedia/1705-Ironwood-02.jpg -------------------------------------------------------------------------------- /PointlessWaymarks.CmsTests/TestMedia/1808-Agua-Blanca-Ranch-Sign-at-the-Manville-Road-Entrance-to-the-Ironwood-Forest-National-Monument.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.CmsTests/TestMedia/1808-Agua-Blanca-Ranch-Sign-at-the-Manville-Road-Entrance-to-the-Ironwood-Forest-National-Monument.jpg -------------------------------------------------------------------------------- /PointlessWaymarks.CmsTests/TestMedia/2020-05-A-Quarry-in-Ironwood-Forest-National-Monument.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.CmsTests/TestMedia/2020-05-A-Quarry-in-Ironwood-Forest-National-Monument.jpg -------------------------------------------------------------------------------- /PointlessWaymarks.CmsTests/TestMedia/2020-05-Fire-Barrel-Cactus.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.CmsTests/TestMedia/2020-05-Fire-Barrel-Cactus.jpg -------------------------------------------------------------------------------- /PointlessWaymarks.CmsTests/TestMedia/2020-05-Ironwood-Pod.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.CmsTests/TestMedia/2020-05-Ironwood-Pod.jpg -------------------------------------------------------------------------------- /PointlessWaymarks.CmsTests/TestMedia/2020-06-Disappearing-into-the-Flower.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.CmsTests/TestMedia/2020-06-Disappearing-into-the-Flower.jpg -------------------------------------------------------------------------------- /PointlessWaymarks.CmsTests/TestMedia/AZ_IronwoodForest_NM_map-CoverPage.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.CmsTests/TestMedia/AZ_IronwoodForest_NM_map-CoverPage.jpg -------------------------------------------------------------------------------- /PointlessWaymarks.CmsTests/TestMedia/AZ_IronwoodForest_NM_map.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.CmsTests/TestMedia/AZ_IronwoodForest_NM_map.pdf -------------------------------------------------------------------------------- /PointlessWaymarks.CmsTests/TestMedia/Blue-Sky-and-Clouds-Video.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.CmsTests/TestMedia/Blue-Sky-and-Clouds-Video.mp4 -------------------------------------------------------------------------------- /PointlessWaymarks.CmsTests/TestMedia/GrandCanyonPointsImport.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.CmsTests/TestMedia/GrandCanyonPointsImport.xlsx -------------------------------------------------------------------------------- /PointlessWaymarks.CmsTests/TestMedia/GrandviewTrail'sIllegalName.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.CmsTests/TestMedia/GrandviewTrail'sIllegalName.pdf -------------------------------------------------------------------------------- /PointlessWaymarks.CmsTests/TestMedia/GrandviewTrail.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.CmsTests/TestMedia/GrandviewTrail.pdf -------------------------------------------------------------------------------- /PointlessWaymarks.CmsTests/TestMedia/HermitsRestDuplicateSlugImport.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.CmsTests/TestMedia/HermitsRestDuplicateSlugImport.xlsx -------------------------------------------------------------------------------- /PointlessWaymarks.CmsTests/TestMedia/Mt-Lemmon-Trail-Small-Trailhead-Sign-1312.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.CmsTests/TestMedia/Mt-Lemmon-Trail-Small-Trailhead-Sign-1312.jpg -------------------------------------------------------------------------------- /PointlessWaymarks.CmsTests/TestMedia/YumaPointImport.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.CmsTests/TestMedia/YumaPointImport.xlsx -------------------------------------------------------------------------------- /PointlessWaymarks.CmsTests/TestMedia/ironwood_proc.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.CmsTests/TestMedia/ironwood_proc.pdf -------------------------------------------------------------------------------- /PointlessWaymarks.CmsTests/UtilityHelpers.cs: -------------------------------------------------------------------------------- 1 | using Omu.ValueInjecter; 2 | using Omu.ValueInjecter.Injections; 3 | 4 | namespace PointlessWaymarks.CmsTests; 5 | 6 | public static class UtilityHelpers 7 | { 8 | public static void InjectFromSkippingIds(this object toInject, object from) 9 | { 10 | toInject.InjectFrom(new LoopInjection(["ContentId", "Id", "ContentVersion"]), from); 11 | } 12 | } -------------------------------------------------------------------------------- /PointlessWaymarks.CmsWpfControls/AllContentList/AllContentItemsWithActionsControl.xaml.cs: -------------------------------------------------------------------------------- 1 | namespace PointlessWaymarks.CmsWpfControls.AllContentList; 2 | 3 | public partial class AllContentItemsWithActionsControl 4 | { 5 | public AllContentItemsWithActionsControl() 6 | { 7 | InitializeComponent(); 8 | } 9 | } -------------------------------------------------------------------------------- /PointlessWaymarks.CmsWpfControls/AllContentList/AllContentListWindow.xaml: -------------------------------------------------------------------------------- 1 |  12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /PointlessWaymarks.CmsWpfControls/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Windows; 2 | 3 | [assembly: ThemeInfo(ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located 4 | //(used if a resource is not found in the page, 5 | // or application resource dictionaries) 6 | ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located 7 | //(used if a resource is not found in the page, 8 | // app, or any theme specific resource dictionaries) 9 | )] -------------------------------------------------------------------------------- /PointlessWaymarks.CmsWpfControls/ContentDropdownDataEntry/ContentDropdownDataChoice.cs: -------------------------------------------------------------------------------- 1 | using PointlessWaymarks.LlamaAspects; 2 | 3 | namespace PointlessWaymarks.CmsWpfControls.ContentDropdownDataEntry; 4 | 5 | [NotifyPropertyChanged] 6 | public partial class ContentDropdownDataChoice 7 | { 8 | public required Guid ContentId { get; set; } 9 | public required string DisplayString { get; set; } = string.Empty; 10 | } -------------------------------------------------------------------------------- /PointlessWaymarks.CmsWpfControls/ContentDropdownDataEntry/ContentDropdownDataEntryControl.xaml.cs: -------------------------------------------------------------------------------- 1 | namespace PointlessWaymarks.CmsWpfControls.ContentDropdownDataEntry; 2 | 3 | /// 4 | /// Interaction logic for ContentDropdownDataEntryControl.xaml 5 | /// 6 | public partial class ContentDropdownDataEntryControl 7 | { 8 | public ContentDropdownDataEntryControl() 9 | { 10 | InitializeComponent(); 11 | } 12 | } -------------------------------------------------------------------------------- /PointlessWaymarks.CmsWpfControls/ContentFormat/ContentFormatChooserControl.xaml.cs: -------------------------------------------------------------------------------- 1 | namespace PointlessWaymarks.CmsWpfControls.ContentFormat; 2 | 3 | /// 4 | /// Interaction logic for ContentFormatChooserControl.xaml 5 | /// 6 | public partial class ContentFormatChooserControl 7 | { 8 | public ContentFormatChooserControl() 9 | { 10 | InitializeComponent(); 11 | } 12 | } -------------------------------------------------------------------------------- /PointlessWaymarks.CmsWpfControls/ContentIdViewer/ContentIdViewerControl.xaml.cs: -------------------------------------------------------------------------------- 1 | namespace PointlessWaymarks.CmsWpfControls.ContentIdViewer; 2 | 3 | public partial class ContentIdViewerControl 4 | { 5 | public ContentIdViewerControl() 6 | { 7 | InitializeComponent(); 8 | } 9 | } -------------------------------------------------------------------------------- /PointlessWaymarks.CmsWpfControls/ContentList/ContentListControl.xaml.cs: -------------------------------------------------------------------------------- 1 | using System.Windows.Controls; 2 | 3 | namespace PointlessWaymarks.CmsWpfControls.ContentList; 4 | 5 | public partial class ContentListControl 6 | { 7 | public ContentListControl() 8 | { 9 | InitializeComponent(); 10 | } 11 | 12 | private void Selector_OnSelectionChanged(object? sender, SelectionChangedEventArgs e) 13 | { 14 | if (DataContext == null) return; 15 | var viewmodel = (ContentListContext) DataContext; 16 | viewmodel.ListSelection.SelectedItems = ContentListBox?.SelectedItems.Cast().ToList(); 17 | } 18 | } -------------------------------------------------------------------------------- /PointlessWaymarks.CmsWpfControls/ContentList/IContentListImage.cs: -------------------------------------------------------------------------------- 1 | namespace PointlessWaymarks.CmsWpfControls.ContentList; 2 | 3 | public interface IContentListImage 4 | { 5 | string? SmallImageUrl { get; set; } 6 | string? DisplayImageUrl { get; set; } 7 | 8 | } 9 | -------------------------------------------------------------------------------- /PointlessWaymarks.CmsWpfControls/ContentList/IContentListItem.cs: -------------------------------------------------------------------------------- 1 | using PointlessWaymarks.CmsData.Database.Models; 2 | using PointlessWaymarks.WpfCommon.Utility; 3 | 4 | namespace PointlessWaymarks.CmsWpfControls.ContentList; 5 | 6 | public interface IContentListItem : ISelectedTextTracker 7 | { 8 | IContentCommon Content(); 9 | Guid? ContentId(); 10 | string DefaultBracketCode(); 11 | Task DefaultBracketCodeToClipboard(); 12 | Task Delete(); 13 | Task Edit(); 14 | Task ExtractNewLinks(); 15 | Task GenerateHtml(); 16 | Task ViewOnSite(); 17 | Task ViewHistory(); 18 | } -------------------------------------------------------------------------------- /PointlessWaymarks.CmsWpfControls/ContentMap/ContentMapControl.xaml.cs: -------------------------------------------------------------------------------- 1 | using PointlessWaymarks.LlamaAspects; 2 | 3 | namespace PointlessWaymarks.CmsWpfControls.ContentMap; 4 | 5 | [NotifyPropertyChanged] 6 | public partial class ContentMapControl 7 | { 8 | public ContentMapControl() 9 | { 10 | InitializeComponent(); 11 | } 12 | } -------------------------------------------------------------------------------- /PointlessWaymarks.CmsWpfControls/ContentMap/ContentMapListLoader.cs: -------------------------------------------------------------------------------- 1 | using PointlessWaymarks.CmsData.Database; 2 | using PointlessWaymarks.CmsWpfControls.ContentList; 3 | 4 | namespace PointlessWaymarks.CmsWpfControls.ContentMap; 5 | 6 | public class ContentMapListLoader(string headerName, List contentIdsToLoad) 7 | : ContentListLoaderBase(headerName, null) 8 | { 9 | public List ContentIdsToLoad { get; set; } = contentIdsToLoad; 10 | 11 | public override async Task> LoadItems(IProgress? progress = null) 12 | { 13 | var db = await Db.Context(); 14 | 15 | return await db.ContentFromContentIds(ContentIdsToLoad, false); 16 | } 17 | } -------------------------------------------------------------------------------- /PointlessWaymarks.CmsWpfControls/ContentMap/ContentMapMapSelection.cs: -------------------------------------------------------------------------------- 1 | namespace PointlessWaymarks.CmsWpfControls.ContentMap; 2 | 3 | public class ContentMapMapSelection(Guid selectedContentId) : EventArgs 4 | { 5 | public Guid SelectedContentId { get; set; } = selectedContentId; 6 | } -------------------------------------------------------------------------------- /PointlessWaymarks.CmsWpfControls/ContentSiteFeedAndIsDraft/ContentSiteFeedAndIsDraftControl.xaml.cs: -------------------------------------------------------------------------------- 1 | namespace PointlessWaymarks.CmsWpfControls.ContentSiteFeedAndIsDraft; 2 | 3 | /// 4 | /// Interaction logic for ContentInMainSiteFeedControl.xaml 5 | /// 6 | public partial class ContentSiteFeedAndIsDraftControl 7 | { 8 | public ContentSiteFeedAndIsDraftControl() 9 | { 10 | InitializeComponent(); 11 | } 12 | } -------------------------------------------------------------------------------- /PointlessWaymarks.CmsWpfControls/CreatedAndUpdatedByAndOnDisplay/CreatedAndUpdatedByAndOnDisplayControl.xaml.cs: -------------------------------------------------------------------------------- 1 | namespace PointlessWaymarks.CmsWpfControls.CreatedAndUpdatedByAndOnDisplay; 2 | 3 | public partial class CreatedAndUpdatedByAndOnDisplayControl 4 | { 5 | public CreatedAndUpdatedByAndOnDisplayControl() 6 | { 7 | InitializeComponent(); 8 | } 9 | } -------------------------------------------------------------------------------- /PointlessWaymarks.CmsWpfControls/DropdownDataEntry/ContentMapIconDataEntryControl.xaml.cs: -------------------------------------------------------------------------------- 1 | namespace PointlessWaymarks.CmsWpfControls.DropdownDataEntry; 2 | 3 | /// 4 | /// Interaction logic for ContentMapIconDataEntryControl.xaml 5 | /// 6 | public partial class ContentMapIconDataEntryControl 7 | { 8 | public ContentMapIconDataEntryControl() 9 | { 10 | InitializeComponent(); 11 | } 12 | } -------------------------------------------------------------------------------- /PointlessWaymarks.CmsWpfControls/DropdownDataEntry/ContentMapMarkerColorDataEntryControl.xaml.cs: -------------------------------------------------------------------------------- 1 | using System.Windows.Controls; 2 | 3 | namespace PointlessWaymarks.CmsWpfControls.DropdownDataEntry; 4 | 5 | /// 6 | /// Interaction logic for ContentMapMarkerColorDataEntryControl.xaml 7 | /// 8 | public partial class ContentMapMarkerColorDataEntryControl : UserControl 9 | { 10 | public ContentMapMarkerColorDataEntryControl() 11 | { 12 | InitializeComponent(); 13 | } 14 | } -------------------------------------------------------------------------------- /PointlessWaymarks.CmsWpfControls/FileContentEditor/FileContentEditorControl.xaml.cs: -------------------------------------------------------------------------------- 1 | namespace PointlessWaymarks.CmsWpfControls.FileContentEditor; 2 | 3 | public partial class FileContentEditorControl 4 | { 5 | public FileContentEditorControl() 6 | { 7 | InitializeComponent(); 8 | } 9 | } -------------------------------------------------------------------------------- /PointlessWaymarks.CmsWpfControls/FileList/FileListWithActionsControl.xaml.cs: -------------------------------------------------------------------------------- 1 | namespace PointlessWaymarks.CmsWpfControls.FileList; 2 | 3 | public partial class FileListWithActionsControl 4 | { 5 | public FileListWithActionsControl() 6 | { 7 | InitializeComponent(); 8 | } 9 | } -------------------------------------------------------------------------------- /PointlessWaymarks.CmsWpfControls/FilesWrittenLogList/FileWrittenLogListDateTimeFilterChoice.cs: -------------------------------------------------------------------------------- 1 | using PointlessWaymarks.LlamaAspects; 2 | 3 | namespace PointlessWaymarks.CmsWpfControls.FilesWrittenLogList; 4 | 5 | [NotifyPropertyChanged] 6 | public partial class FileWrittenLogListDateTimeFilterChoice 7 | { 8 | public string DisplayText { get; set; } = string.Empty; 9 | public DateTime? FilterDateTimeUtc { get; set; } 10 | } -------------------------------------------------------------------------------- /PointlessWaymarks.CmsWpfControls/FilesWrittenLogList/FilesWrittenLogListListItem.cs: -------------------------------------------------------------------------------- 1 | #nullable enable 2 | using CommunityToolkit.Mvvm.ComponentModel; 3 | using PointlessWaymarks.LlamaAspects; 4 | 5 | namespace PointlessWaymarks.CmsWpfControls.FilesWrittenLogList; 6 | 7 | [NotifyPropertyChanged] 8 | public partial class FilesWrittenLogListListItem 9 | { 10 | public string FileBase { get; set; } = string.Empty; 11 | public bool IsInGenerationDirectory { get; set; } 12 | public string TransformedFile { get; set; } = string.Empty; 13 | public string WrittenFile { get; set; } = string.Empty; 14 | public DateTime WrittenOn { get; set; } 15 | } -------------------------------------------------------------------------------- /PointlessWaymarks.CmsWpfControls/GeoJsonContentEditor/GeoJsonContentEditorControl.xaml.cs: -------------------------------------------------------------------------------- 1 | namespace PointlessWaymarks.CmsWpfControls.GeoJsonContentEditor; 2 | 3 | /// 4 | /// Interaction logic for GeoJsonContentEditorControl.xaml 5 | /// 6 | public partial class GeoJsonContentEditorControl 7 | { 8 | public GeoJsonContentEditorControl() 9 | { 10 | InitializeComponent(); 11 | } 12 | } -------------------------------------------------------------------------------- /PointlessWaymarks.CmsWpfControls/GeoJsonList/GeoJsonListWithActionsControl.xaml.cs: -------------------------------------------------------------------------------- 1 | namespace PointlessWaymarks.CmsWpfControls.GeoJsonList; 2 | 3 | public partial class GeoJsonListWithActionsControl 4 | { 5 | public GeoJsonListWithActionsControl() 6 | { 7 | InitializeComponent(); 8 | } 9 | } -------------------------------------------------------------------------------- /PointlessWaymarks.CmsWpfControls/GpxImport/IGpxImportListItem.cs: -------------------------------------------------------------------------------- 1 | namespace PointlessWaymarks.CmsWpfControls.GpxImport; 2 | 3 | public interface IGpxImportListItem 4 | { 5 | DateTime? CreatedOn { get; set; } 6 | Guid DisplayId { get; set; } 7 | bool MarkedForImport { get; set; } 8 | bool ReplaceElevationOnImport { get; set; } 9 | string UserContentName { get; set; } 10 | string UserSummary { get; set; } 11 | } -------------------------------------------------------------------------------- /PointlessWaymarks.CmsWpfControls/ImageContentEditor/ImageContentEditorControl.xaml.cs: -------------------------------------------------------------------------------- 1 | namespace PointlessWaymarks.CmsWpfControls.ImageContentEditor; 2 | 3 | public partial class ImageContentEditorControl 4 | { 5 | public ImageContentEditorControl() 6 | { 7 | InitializeComponent(); 8 | } 9 | } -------------------------------------------------------------------------------- /PointlessWaymarks.CmsWpfControls/ImageList/ImageListWithActionsControl.xaml.cs: -------------------------------------------------------------------------------- 1 | namespace PointlessWaymarks.CmsWpfControls.ImageList; 2 | 3 | public partial class ImageListWithActionsControl 4 | { 5 | public ImageListWithActionsControl() 6 | { 7 | InitializeComponent(); 8 | } 9 | } -------------------------------------------------------------------------------- /PointlessWaymarks.CmsWpfControls/LineContentEditor/LineContentEditorControl.xaml.cs: -------------------------------------------------------------------------------- 1 | namespace PointlessWaymarks.CmsWpfControls.LineContentEditor; 2 | 3 | /// 4 | /// Interaction logic for LineContentEditorControl.xaml 5 | /// 6 | public partial class LineContentEditorControl 7 | { 8 | public LineContentEditorControl() 9 | { 10 | InitializeComponent(); 11 | } 12 | } -------------------------------------------------------------------------------- /PointlessWaymarks.CmsWpfControls/LineList/LineListWithActionsControl.xaml.cs: -------------------------------------------------------------------------------- 1 | namespace PointlessWaymarks.CmsWpfControls.LineList; 2 | 3 | /// 4 | /// Interaction logic for LineListWithActionsControl.xaml 5 | /// 6 | public partial class LineListWithActionsControl 7 | { 8 | public LineListWithActionsControl() 9 | { 10 | InitializeComponent(); 11 | } 12 | } -------------------------------------------------------------------------------- /PointlessWaymarks.CmsWpfControls/LinkContentEditor/LinkContentEditorControl.xaml.cs: -------------------------------------------------------------------------------- 1 | namespace PointlessWaymarks.CmsWpfControls.LinkContentEditor; 2 | 3 | public partial class LinkContentEditorControl 4 | { 5 | public LinkContentEditorControl() 6 | { 7 | InitializeComponent(); 8 | } 9 | } -------------------------------------------------------------------------------- /PointlessWaymarks.CmsWpfControls/LinkList/LinkListWithActionsControl.xaml.cs: -------------------------------------------------------------------------------- 1 | namespace PointlessWaymarks.CmsWpfControls.LinkList; 2 | 3 | public partial class LinkListWithActionsControl 4 | { 5 | public LinkListWithActionsControl() 6 | { 7 | InitializeComponent(); 8 | } 9 | } -------------------------------------------------------------------------------- /PointlessWaymarks.CmsWpfControls/ListFilterBuilder/BooleanListFilterFieldBuilder.cs: -------------------------------------------------------------------------------- 1 | using PointlessWaymarks.LlamaAspects; 2 | 3 | namespace PointlessWaymarks.CmsWpfControls.ListFilterBuilder; 4 | 5 | [NotifyPropertyChanged] 6 | public partial class BooleanListFilterFieldBuilder 7 | { 8 | public required string FieldTitle { get; set; } 9 | public bool SearchBoolean { get; set; } 10 | } -------------------------------------------------------------------------------- /PointlessWaymarks.CmsWpfControls/ListFilterBuilder/ContentIdListFilterFieldBuilder.cs: -------------------------------------------------------------------------------- 1 | using PointlessWaymarks.LlamaAspects; 2 | 3 | namespace PointlessWaymarks.CmsWpfControls.ListFilterBuilder; 4 | 5 | [NotifyPropertyChanged] 6 | public partial class ContentIdListFilterFieldBuilder 7 | { 8 | public required string FieldTitle { get; set; } 9 | public bool Not { get; set; } 10 | public string SearchText { get; set; } = string.Empty; 11 | } -------------------------------------------------------------------------------- /PointlessWaymarks.CmsWpfControls/ListFilterBuilder/ContentTypeChoice.cs: -------------------------------------------------------------------------------- 1 | using PointlessWaymarks.LlamaAspects; 2 | 3 | namespace PointlessWaymarks.CmsWpfControls.ListFilterBuilder; 4 | 5 | [NotifyPropertyChanged] 6 | public partial class ContentTypeListFilterChoice 7 | { 8 | public bool IsSelected { get; set; } 9 | public required string TypeDescription { get; set; } 10 | } -------------------------------------------------------------------------------- /PointlessWaymarks.CmsWpfControls/ListFilterBuilder/ListFilterBuilderFilterAdd.cs: -------------------------------------------------------------------------------- 1 | using CommunityToolkit.Mvvm.Input; 2 | using PointlessWaymarks.LlamaAspects; 3 | 4 | namespace PointlessWaymarks.CmsWpfControls.ListFilterBuilder; 5 | 6 | [NotifyPropertyChanged] 7 | public partial class ListFilterBuilderFilterAdd 8 | { 9 | public required RelayCommand? AddFilterCommand { get; set; } 10 | public required List AppliesTo { get; set; } 11 | public required string Description { get; set; } 12 | } -------------------------------------------------------------------------------- /PointlessWaymarks.CmsWpfControls/ListFilterBuilder/TextListFilterFieldBuilder.cs: -------------------------------------------------------------------------------- 1 | using PointlessWaymarks.LlamaAspects; 2 | 3 | namespace PointlessWaymarks.CmsWpfControls.ListFilterBuilder; 4 | 5 | [NotifyPropertyChanged] 6 | public partial class TextListFilterFieldBuilder 7 | { 8 | public required string FieldTitle { get; set; } 9 | public bool Not { get; set; } 10 | public string SearchText { get; set; } = string.Empty; 11 | } -------------------------------------------------------------------------------- /PointlessWaymarks.CmsWpfControls/MapComponentEditor/IMapElementListItem.cs: -------------------------------------------------------------------------------- 1 | using PointlessWaymarks.WpfCommon.Utility; 2 | 3 | namespace PointlessWaymarks.CmsWpfControls.MapComponentEditor; 4 | 5 | public interface IMapElementListItem : ISelectedTextTracker 6 | { 7 | MapElementSettings ElementSettings { get; set; } 8 | string ElementType { get; set; } 9 | string Title { get; set; } 10 | Guid? ContentId(); 11 | } -------------------------------------------------------------------------------- /PointlessWaymarks.CmsWpfControls/MapComponentEditor/MapComponentEditorControl.xaml.cs: -------------------------------------------------------------------------------- 1 | namespace PointlessWaymarks.CmsWpfControls.MapComponentEditor; 2 | 3 | /// 4 | /// Interaction logic for MapComponentEditorControl.xaml 5 | /// 6 | public partial class MapComponentEditorControl 7 | { 8 | public MapComponentEditorControl() 9 | { 10 | InitializeComponent(); 11 | } 12 | } -------------------------------------------------------------------------------- /PointlessWaymarks.CmsWpfControls/MapComponentList/MapComponentListWithActionsControl.xaml.cs: -------------------------------------------------------------------------------- 1 | namespace PointlessWaymarks.CmsWpfControls.MapComponentList; 2 | 3 | /// 4 | /// Interaction logic for MapComponentListWithActionsControl.xaml 5 | /// 6 | public partial class MapComponentListWithActionsControl 7 | { 8 | public MapComponentListWithActionsControl() 9 | { 10 | InitializeComponent(); 11 | } 12 | } -------------------------------------------------------------------------------- /PointlessWaymarks.CmsWpfControls/MapIconList/MapIconListControl.xaml.cs: -------------------------------------------------------------------------------- 1 | namespace PointlessWaymarks.CmsWpfControls.MapIconList; 2 | 3 | /// 4 | /// Interaction logic for MapIconListControl.xaml 5 | /// 6 | public partial class MapIconListControl 7 | { 8 | public MapIconListControl() 9 | { 10 | InitializeComponent(); 11 | } 12 | } -------------------------------------------------------------------------------- /PointlessWaymarks.CmsWpfControls/MenuLinkEditor/MenuLinkEditorControl.xaml.cs: -------------------------------------------------------------------------------- 1 | using System.Windows.Controls; 2 | 3 | namespace PointlessWaymarks.CmsWpfControls.MenuLinkEditor; 4 | 5 | /// 6 | /// Interaction logic for MenuLinkEditorControl.xaml 7 | /// 8 | public partial class MenuLinkEditorControl 9 | { 10 | public MenuLinkEditorControl() 11 | { 12 | InitializeComponent(); 13 | } 14 | 15 | private void Selector_OnSelectionChanged(object? sender, SelectionChangedEventArgs e) 16 | { 17 | if (DataContext == null) return; 18 | var viewmodel = (MenuLinkEditorContext) DataContext; 19 | viewmodel.SelectedItems = MenuLinkListBox?.SelectedItems.Cast().ToList(); 20 | } 21 | } -------------------------------------------------------------------------------- /PointlessWaymarks.CmsWpfControls/NoteContentEditor/NoteContentEditorControl.xaml.cs: -------------------------------------------------------------------------------- 1 | namespace PointlessWaymarks.CmsWpfControls.NoteContentEditor; 2 | 3 | /// 4 | /// Interaction logic for NoteContentEditorControl.xaml 5 | /// 6 | public partial class NoteContentEditorControl 7 | { 8 | public NoteContentEditorControl() 9 | { 10 | InitializeComponent(); 11 | } 12 | } -------------------------------------------------------------------------------- /PointlessWaymarks.CmsWpfControls/NoteList/NoteListWithActionsControl.xaml.cs: -------------------------------------------------------------------------------- 1 | namespace PointlessWaymarks.CmsWpfControls.NoteList; 2 | 3 | public partial class NoteListWithActionsControl 4 | { 5 | public NoteListWithActionsControl() 6 | { 7 | InitializeComponent(); 8 | } 9 | } -------------------------------------------------------------------------------- /PointlessWaymarks.CmsWpfControls/PhotoContentEditor/PhotoContentEditorControl.xaml.cs: -------------------------------------------------------------------------------- 1 | namespace PointlessWaymarks.CmsWpfControls.PhotoContentEditor; 2 | 3 | public partial class PhotoContentEditorControl 4 | { 5 | public PhotoContentEditorControl() 6 | { 7 | InitializeComponent(); 8 | } 9 | } -------------------------------------------------------------------------------- /PointlessWaymarks.CmsWpfControls/PhotoList/PhotoListWithActionsControl.xaml.cs: -------------------------------------------------------------------------------- 1 | namespace PointlessWaymarks.CmsWpfControls.PhotoList; 2 | 3 | public partial class PhotoListWithActionsControl 4 | { 5 | public PhotoListWithActionsControl() 6 | { 7 | InitializeComponent(); 8 | } 9 | } -------------------------------------------------------------------------------- /PointlessWaymarks.CmsWpfControls/PointContentEditor/PointContentEditorControl.xaml.cs: -------------------------------------------------------------------------------- 1 | using System.Windows; 2 | using Microsoft.Web.WebView2.Core; 3 | using PointlessWaymarks.CmsData; 4 | using PointlessWaymarks.CmsWpfControls.WpfCmsHtml; 5 | using PointlessWaymarks.CommonTools; 6 | using PointlessWaymarks.WpfCommon; 7 | 8 | namespace PointlessWaymarks.CmsWpfControls.PointContentEditor; 9 | 10 | /// 11 | /// Interaction logic for PointContentEditorControl.xaml 12 | /// 13 | public partial class PointContentEditorControl 14 | { 15 | public PointContentEditorControl() 16 | { 17 | InitializeComponent(); 18 | } 19 | } -------------------------------------------------------------------------------- /PointlessWaymarks.CmsWpfControls/PointContentEditor/PointLatitudeLongitudeChange.cs: -------------------------------------------------------------------------------- 1 | namespace PointlessWaymarks.CmsWpfControls.PointContentEditor; 2 | 3 | public class PointLatitudeLongitudeChange(double latitude, double longitude) : EventArgs 4 | { 5 | public double Latitude { get; set; } = latitude; 6 | public double Longitude { get; set; } = longitude; 7 | } -------------------------------------------------------------------------------- /PointlessWaymarks.CmsWpfControls/PointDetailEditor/CampgroundPointDetailControl.xaml.cs: -------------------------------------------------------------------------------- 1 | namespace PointlessWaymarks.CmsWpfControls.PointDetailEditor; 2 | 3 | /// 4 | /// Interaction logic for CampgroundPointDetailControl.xaml 5 | /// 6 | public partial class CampgroundPointDetailControl 7 | { 8 | public CampgroundPointDetailControl() 9 | { 10 | InitializeComponent(); 11 | } 12 | } -------------------------------------------------------------------------------- /PointlessWaymarks.CmsWpfControls/PointDetailEditor/DrivingDirectionsPointDetailControl.xaml.cs: -------------------------------------------------------------------------------- 1 | namespace PointlessWaymarks.CmsWpfControls.PointDetailEditor; 2 | 3 | /// 4 | /// Interaction logic for DrivingDirectionsPointDetailControl.xaml 5 | /// 6 | public partial class DrivingDirectionsPointDetailControl 7 | { 8 | public DrivingDirectionsPointDetailControl() 9 | { 10 | InitializeComponent(); 11 | } 12 | } -------------------------------------------------------------------------------- /PointlessWaymarks.CmsWpfControls/PointDetailEditor/FeaturePointDetailControl.xaml.cs: -------------------------------------------------------------------------------- 1 | namespace PointlessWaymarks.CmsWpfControls.PointDetailEditor; 2 | 3 | /// 4 | /// Interaction logic for FeaturePointDetailControl.xaml 5 | /// 6 | public partial class FeaturePointDetailControl 7 | { 8 | public FeaturePointDetailControl() 9 | { 10 | InitializeComponent(); 11 | } 12 | } -------------------------------------------------------------------------------- /PointlessWaymarks.CmsWpfControls/PointDetailEditor/FeePointDetailControl.xaml.cs: -------------------------------------------------------------------------------- 1 | namespace PointlessWaymarks.CmsWpfControls.PointDetailEditor; 2 | 3 | /// 4 | /// Interaction logic for FeePointDetailControl.xaml 5 | /// 6 | public partial class FeePointDetailControl 7 | { 8 | public FeePointDetailControl() 9 | { 10 | InitializeComponent(); 11 | } 12 | } -------------------------------------------------------------------------------- /PointlessWaymarks.CmsWpfControls/PointDetailEditor/IPointDetailEditor.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel; 2 | using PointlessWaymarks.CmsData.Database.Models; 3 | 4 | namespace PointlessWaymarks.CmsWpfControls.PointDetailEditor; 5 | 6 | public interface IPointDetailEditor : INotifyPropertyChanged 7 | { 8 | PointDetail DbEntry { get; } 9 | public bool HasChanges { get; } 10 | public bool HasValidationIssues { get; set; } 11 | PointDetail CurrentPointDetail(); 12 | } -------------------------------------------------------------------------------- /PointlessWaymarks.CmsWpfControls/PointDetailEditor/ParkingPointDetailControl.xaml.cs: -------------------------------------------------------------------------------- 1 | namespace PointlessWaymarks.CmsWpfControls.PointDetailEditor; 2 | 3 | /// 4 | /// Interaction logic for ParkingPointDetailControl.xaml 5 | /// 6 | public partial class ParkingPointDetailControl 7 | { 8 | public ParkingPointDetailControl() 9 | { 10 | InitializeComponent(); 11 | } 12 | } -------------------------------------------------------------------------------- /PointlessWaymarks.CmsWpfControls/PointDetailEditor/PeakPointDetailControl.xaml.cs: -------------------------------------------------------------------------------- 1 | namespace PointlessWaymarks.CmsWpfControls.PointDetailEditor; 2 | 3 | /// 4 | /// Interaction logic for PeakPointDetailControl.xaml 5 | /// 6 | public partial class PeakPointDetailControl 7 | { 8 | public PeakPointDetailControl() 9 | { 10 | InitializeComponent(); 11 | } 12 | } -------------------------------------------------------------------------------- /PointlessWaymarks.CmsWpfControls/PointDetailEditor/PointDetailListControl.xaml.cs: -------------------------------------------------------------------------------- 1 | namespace PointlessWaymarks.CmsWpfControls.PointDetailEditor; 2 | 3 | /// 4 | /// Interaction logic for PointDetailListControl.xaml 5 | /// 6 | public partial class PointDetailListControl 7 | { 8 | public PointDetailListControl() 9 | { 10 | InitializeComponent(); 11 | } 12 | } -------------------------------------------------------------------------------- /PointlessWaymarks.CmsWpfControls/PointDetailEditor/RestRoomPointDetailControl.xaml.cs: -------------------------------------------------------------------------------- 1 | namespace PointlessWaymarks.CmsWpfControls.PointDetailEditor; 2 | 3 | /// 4 | /// Interaction logic for RestroomPointDetailControl.xaml 5 | /// 6 | public partial class RestroomPointDetailControl 7 | { 8 | public RestroomPointDetailControl() 9 | { 10 | InitializeComponent(); 11 | } 12 | } -------------------------------------------------------------------------------- /PointlessWaymarks.CmsWpfControls/PointDetailEditor/TrailJunctionPointDetailControl.xaml.cs: -------------------------------------------------------------------------------- 1 | namespace PointlessWaymarks.CmsWpfControls.PointDetailEditor; 2 | 3 | /// 4 | /// Interaction logic for TrailJunctionPointDetailControl.xaml 5 | /// 6 | public partial class TrailJunctionPointDetailControl 7 | { 8 | public TrailJunctionPointDetailControl() 9 | { 10 | InitializeComponent(); 11 | } 12 | } -------------------------------------------------------------------------------- /PointlessWaymarks.CmsWpfControls/PointDetailEditor/VehicleAccessPointDetailControl.xaml.cs: -------------------------------------------------------------------------------- 1 | namespace PointlessWaymarks.CmsWpfControls.PointDetailEditor; 2 | 3 | /// 4 | /// Interaction logic for VehicleAccessPointDetailControl.xaml 5 | /// 6 | public partial class VehicleAccessPointDetailControl 7 | { 8 | public VehicleAccessPointDetailControl() 9 | { 10 | InitializeComponent(); 11 | } 12 | } -------------------------------------------------------------------------------- /PointlessWaymarks.CmsWpfControls/PointList/PointListWithActionsControl.xaml.cs: -------------------------------------------------------------------------------- 1 | namespace PointlessWaymarks.CmsWpfControls.PointList; 2 | 3 | /// 4 | /// Interaction logic for PointListWithActionsControl.xaml 5 | /// 6 | public partial class PointListWithActionsControl 7 | { 8 | public PointListWithActionsControl() 9 | { 10 | InitializeComponent(); 11 | } 12 | } -------------------------------------------------------------------------------- /PointlessWaymarks.CmsWpfControls/PointlessWaymarksCmsIcons/IconNotes.md: -------------------------------------------------------------------------------- 1 | Created With: 2 | https://favicon.io/favicon-generator/ 3 | 4 | Text 5 | .w 6 | 7 | Background 8 | Rounded 9 | 10 | Font Family 11 | Raleway 12 | 13 | FontSize 14 | 110 15 | 16 | FontColor 17 | #FFFFFF 18 | 19 | BackgroundColor 20 | #250 -------------------------------------------------------------------------------- /PointlessWaymarks.CmsWpfControls/PointlessWaymarksCmsIcons/android-chrome-192x192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.CmsWpfControls/PointlessWaymarksCmsIcons/android-chrome-192x192.png -------------------------------------------------------------------------------- /PointlessWaymarks.CmsWpfControls/PointlessWaymarksCmsIcons/android-chrome-512x512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.CmsWpfControls/PointlessWaymarksCmsIcons/android-chrome-512x512.png -------------------------------------------------------------------------------- /PointlessWaymarks.CmsWpfControls/PointlessWaymarksCmsIcons/apple-touch-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.CmsWpfControls/PointlessWaymarksCmsIcons/apple-touch-icon.png -------------------------------------------------------------------------------- /PointlessWaymarks.CmsWpfControls/PointlessWaymarksCmsIcons/favicon-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.CmsWpfControls/PointlessWaymarksCmsIcons/favicon-16x16.png -------------------------------------------------------------------------------- /PointlessWaymarks.CmsWpfControls/PointlessWaymarksCmsIcons/favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.CmsWpfControls/PointlessWaymarksCmsIcons/favicon-32x32.png -------------------------------------------------------------------------------- /PointlessWaymarks.CmsWpfControls/PointlessWaymarksCmsIcons/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.CmsWpfControls/PointlessWaymarksCmsIcons/favicon.ico -------------------------------------------------------------------------------- /PointlessWaymarks.CmsWpfControls/PointlessWaymarksCmsIcons/github.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.CmsWpfControls/PointlessWaymarksCmsIcons/github.png -------------------------------------------------------------------------------- /PointlessWaymarks.CmsWpfControls/PointlessWaymarksCmsIcons/site.webmanifest: -------------------------------------------------------------------------------- 1 | { 2 | "name": "", 3 | "short_name": "", 4 | "icons": [ 5 | { "src": "/android-chrome-192x192.png", "sizes": "192x192", "type": "image/png" }, 6 | { "src": "/android-chrome-512x512.png", "sizes": "512x512", "type": "image/png" } 7 | ], 8 | "theme_color": "#ffffff", 9 | "background_color": "#ffffff", 10 | "display": "standalone" 11 | } -------------------------------------------------------------------------------- /PointlessWaymarks.CmsWpfControls/PostContentEditor/PostContentEditorControl.xaml.cs: -------------------------------------------------------------------------------- 1 | namespace PointlessWaymarks.CmsWpfControls.PostContentEditor; 2 | 3 | public partial class PostContentEditorControl 4 | { 5 | public PostContentEditorControl() 6 | { 7 | InitializeComponent(); 8 | } 9 | } -------------------------------------------------------------------------------- /PointlessWaymarks.CmsWpfControls/PostList/PostListWithActionsControl.xaml.cs: -------------------------------------------------------------------------------- 1 | namespace PointlessWaymarks.CmsWpfControls.PostList; 2 | 3 | public partial class PostListWithActionsControl 4 | { 5 | public PostListWithActionsControl() 6 | { 7 | InitializeComponent(); 8 | } 9 | } -------------------------------------------------------------------------------- /PointlessWaymarks.CmsWpfControls/Server/ServerPreviewPage.cs: -------------------------------------------------------------------------------- 1 | namespace PointlessWaymarks.CmsWpfControls.Server; 2 | 3 | public class ServerLoadPreviewPage 4 | { 5 | public required Guid RequesterId { get; set; } 6 | public required string ToPreview { get; set; } 7 | } -------------------------------------------------------------------------------- /PointlessWaymarks.CmsWpfControls/SitePictureSizesEditor/SitePictureSizesEditorItem.cs: -------------------------------------------------------------------------------- 1 | using PointlessWaymarks.LlamaAspects; 2 | 3 | namespace PointlessWaymarks.CmsWpfControls.SitePictureSizesEditor; 4 | 5 | [NotifyPropertyChanged] 6 | public partial class SitePictureSizesEditorItem 7 | { 8 | public int MaxDimension { get; set; } 9 | public int Quality { get; set; } 10 | } -------------------------------------------------------------------------------- /PointlessWaymarks.CmsWpfControls/SitePreview/SitePreviewMenuNavigationItem.cs: -------------------------------------------------------------------------------- 1 | using PointlessWaymarks.LlamaAspects; 2 | 3 | namespace PointlessWaymarks.CmsWpfControls.SitePreview; 4 | 5 | [NotifyPropertyChanged] 6 | public partial class SitePreviewMenuNavigationItem 7 | { 8 | public SitePreviewMenuNavigationItem(string displayText, string url) 9 | { 10 | DisplayText = displayText; 11 | Url = url; 12 | } 13 | 14 | public string DisplayText { get; set; } 15 | public string Url { get; set; } 16 | } -------------------------------------------------------------------------------- /PointlessWaymarks.CmsWpfControls/SnippetEditor/SnippetEditorControl.xaml.cs: -------------------------------------------------------------------------------- 1 | using System.Windows.Controls; 2 | 3 | namespace PointlessWaymarks.CmsWpfControls.SnippetEditor; 4 | 5 | /// 6 | /// Interaction logic for SnippetEditorControl.xaml 7 | /// 8 | public partial class SnippetEditorControl 9 | { 10 | public SnippetEditorControl() 11 | { 12 | InitializeComponent(); 13 | } 14 | } -------------------------------------------------------------------------------- /PointlessWaymarks.CmsWpfControls/SnippetList/SnippetListListItem.cs: -------------------------------------------------------------------------------- 1 | using PointlessWaymarks.CmsData.Database.Models; 2 | using PointlessWaymarks.LlamaAspects; 3 | using PointlessWaymarks.WpfCommon; 4 | using PointlessWaymarks.WpfCommon.Utility; 5 | 6 | namespace PointlessWaymarks.CmsWpfControls.SnippetList; 7 | 8 | [NotifyPropertyChanged] 9 | public partial class SnippetListListItem : ISelectedTextTracker 10 | { 11 | public required Snippet DbEntry { get; set; } 12 | public CurrentSelectedTextTracker? SelectedTextTracker { get; set; } = new(); 13 | 14 | public static SnippetListListItem CreateInstance(Snippet dbItem) 15 | { 16 | return new SnippetListListItem { DbEntry = dbItem }; 17 | } 18 | } -------------------------------------------------------------------------------- /PointlessWaymarks.CmsWpfControls/SnippetList/SnippetListWindow.xaml: -------------------------------------------------------------------------------- 1 |  9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /PointlessWaymarks.CmsWpfControls/StringWithDropdownDataEntry/IStringWithDropdownDataEntryContext.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.ObjectModel; 2 | using PointlessWaymarks.WpfCommon.ChangesAndValidation; 3 | using PointlessWaymarks.WpfCommon.Status; 4 | 5 | namespace PointlessWaymarks.CmsWpfControls.StringWithDropdownDataEntry; 6 | 7 | public interface IStringWithDropdownDataEntryContext : IHasChanges, IHasValidationIssues 8 | { 9 | ObservableCollection ExistingChoices { get; set; } 10 | string HelpText { get; set; } 11 | string? ReferenceValue { get; set; } 12 | StatusControlContext StatusContext { get; set; } 13 | string Title { get; set; } 14 | string? UserValue { get; set; } 15 | string ValidationMessage { get; set; } 16 | } -------------------------------------------------------------------------------- /PointlessWaymarks.CmsWpfControls/StringWithDropdownDataEntry/StringWithDropdownDataEntryControl.xaml.cs: -------------------------------------------------------------------------------- 1 | namespace PointlessWaymarks.CmsWpfControls.StringWithDropdownDataEntry; 2 | 3 | /// 4 | /// Interaction logic for ContentFolderControl.xaml 5 | /// 6 | public partial class StringWithDropdownDataEntryControl 7 | { 8 | public StringWithDropdownDataEntryControl() 9 | { 10 | InitializeComponent(); 11 | } 12 | } -------------------------------------------------------------------------------- /PointlessWaymarks.CmsWpfControls/TagExclusionEditor/TagExclusionEditorControl.xaml.cs: -------------------------------------------------------------------------------- 1 | namespace PointlessWaymarks.CmsWpfControls.TagExclusionEditor; 2 | 3 | /// 4 | /// Interaction logic for TagExclusionEditorControl.xaml 5 | /// 6 | public partial class TagExclusionEditorControl 7 | { 8 | public TagExclusionEditorControl() 9 | { 10 | InitializeComponent(); 11 | } 12 | } -------------------------------------------------------------------------------- /PointlessWaymarks.CmsWpfControls/TagList/TagItemContentInformation.cs: -------------------------------------------------------------------------------- 1 | using PointlessWaymarks.LlamaAspects; 2 | 3 | namespace PointlessWaymarks.CmsWpfControls.TagList; 4 | 5 | [NotifyPropertyChanged] 6 | public partial class TagItemContentInformation 7 | { 8 | public Guid ContentId { get; set; } 9 | public string ContentType { get; set; } = string.Empty; 10 | public string Tags { get; set; } = string.Empty; 11 | public string Title { get; set; } = string.Empty; 12 | } -------------------------------------------------------------------------------- /PointlessWaymarks.CmsWpfControls/TagList/TagListListItem.cs: -------------------------------------------------------------------------------- 1 | using PointlessWaymarks.LlamaAspects; 2 | 3 | namespace PointlessWaymarks.CmsWpfControls.TagList; 4 | 5 | [NotifyPropertyChanged] 6 | public partial class TagListListItem 7 | { 8 | public int ContentCount { get; set; } 9 | public List ContentInformation { get; set; } = []; 10 | public bool IsExcludedTag { get; set; } 11 | public string TagName { get; set; } = string.Empty; 12 | } -------------------------------------------------------------------------------- /PointlessWaymarks.CmsWpfControls/TagsEditor/TagsEditorControl.xaml.cs: -------------------------------------------------------------------------------- 1 | namespace PointlessWaymarks.CmsWpfControls.TagsEditor; 2 | 3 | public partial class TagsEditorControl 4 | { 5 | public TagsEditorControl() 6 | { 7 | InitializeComponent(); 8 | } 9 | } -------------------------------------------------------------------------------- /PointlessWaymarks.CmsWpfControls/TitleSummarySlugFolderEditor/TitleSummarySlugEditorControl.xaml.cs: -------------------------------------------------------------------------------- 1 | namespace PointlessWaymarks.CmsWpfControls.TitleSummarySlugFolderEditor; 2 | 3 | public partial class TitleSummarySlugEditorControl 4 | { 5 | public TitleSummarySlugEditorControl() 6 | { 7 | InitializeComponent(); 8 | } 9 | } -------------------------------------------------------------------------------- /PointlessWaymarks.CmsWpfControls/TrailContentEditor/TrailContentEditorControl.xaml.cs: -------------------------------------------------------------------------------- 1 | namespace PointlessWaymarks.CmsWpfControls.TrailContentEditor; 2 | 3 | public partial class TrailContentEditorControl 4 | { 5 | public TrailContentEditorControl() 6 | { 7 | InitializeComponent(); 8 | } 9 | } -------------------------------------------------------------------------------- /PointlessWaymarks.CmsWpfControls/TrailList/TrailListWithActionsControl.xaml.cs: -------------------------------------------------------------------------------- 1 | namespace PointlessWaymarks.CmsWpfControls.TrailList; 2 | 3 | public partial class TrailListWithActionsControl 4 | { 5 | public TrailListWithActionsControl() 6 | { 7 | InitializeComponent(); 8 | } 9 | } -------------------------------------------------------------------------------- /PointlessWaymarks.CmsWpfControls/UpdateNotesEditor/UpdateNotesEditorHorizontalControl.xaml.cs: -------------------------------------------------------------------------------- 1 | namespace PointlessWaymarks.CmsWpfControls.UpdateNotesEditor; 2 | 3 | /// 4 | /// Interaction logic for UpdateNotesEditorHorizontalControl.xaml 5 | /// 6 | public partial class UpdateNotesEditorHorizontalControl 7 | { 8 | public UpdateNotesEditorHorizontalControl() 9 | { 10 | InitializeComponent(); 11 | } 12 | } -------------------------------------------------------------------------------- /PointlessWaymarks.CmsWpfControls/UpdateNotesEditor/UpdateNotesEditorVerticalControl.xaml.cs: -------------------------------------------------------------------------------- 1 | namespace PointlessWaymarks.CmsWpfControls.UpdateNotesEditor; 2 | 3 | public partial class UpdateNotesEditorVerticalControl 4 | { 5 | public UpdateNotesEditorVerticalControl() 6 | { 7 | InitializeComponent(); 8 | } 9 | } -------------------------------------------------------------------------------- /PointlessWaymarks.CmsWpfControls/UserSettingsEditor/UserSettingsEditorControl.xaml.cs: -------------------------------------------------------------------------------- 1 | using System.Windows.Input; 2 | using PointlessWaymarks.WpfCommon.Utility; 3 | 4 | namespace PointlessWaymarks.CmsWpfControls.UserSettingsEditor; 5 | 6 | public partial class UserSettingsEditorControl 7 | { 8 | public UserSettingsEditorControl() 9 | { 10 | InitializeComponent(); 11 | } 12 | 13 | private void OpenHyperlink(object? sender, ExecutedRoutedEventArgs e) 14 | { 15 | var toOpen = e.Parameter.ToString(); 16 | if (string.IsNullOrEmpty(toOpen)) return; 17 | ProcessHelpers.OpenUrlInExternalBrowser(toOpen); 18 | } 19 | } -------------------------------------------------------------------------------- /PointlessWaymarks.CmsWpfControls/Utility/GenerationHelpers.cs: -------------------------------------------------------------------------------- 1 | using PointlessWaymarks.CmsData.CommonHtml; 2 | using PointlessWaymarks.CmsData.ContentHtml; 3 | using PointlessWaymarks.CmsWpfControls.Diagnostics; 4 | using PointlessWaymarks.WpfCommon; 5 | 6 | namespace PointlessWaymarks.CmsWpfControls.Utility; 7 | 8 | public static class GenerationHelpers 9 | { 10 | public static async Task GenerateChangedHtml(IProgress progress) 11 | { 12 | await ThreadSwitcher.ResumeBackgroundAsync(); 13 | var generationResults = await SiteGeneration.ChangedSiteContent(progress); 14 | 15 | if (generationResults.All(x => !x.HasError)) return; 16 | 17 | await Reports.InvalidBracketCodeContentIdsHtmlReport(generationResults); 18 | } 19 | } -------------------------------------------------------------------------------- /PointlessWaymarks.CmsWpfControls/VideoContentEditor/VideoContentEditorControl.xaml.cs: -------------------------------------------------------------------------------- 1 | namespace PointlessWaymarks.CmsWpfControls.VideoContentEditor; 2 | 3 | public partial class VideoContentEditorControl 4 | { 5 | public VideoContentEditorControl() 6 | { 7 | InitializeComponent(); 8 | } 9 | } -------------------------------------------------------------------------------- /PointlessWaymarks.CmsWpfControls/VideoList/VideoListWithActionsControl.xaml.cs: -------------------------------------------------------------------------------- 1 | namespace PointlessWaymarks.CmsWpfControls.VideoList 2 | { 3 | /// 4 | /// Interaction logic for VideoListWithActionsControl.xaml 5 | /// 6 | public partial class VideoListWithActionsControl 7 | { 8 | public VideoListWithActionsControl() 9 | { 10 | InitializeComponent(); 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /PointlessWaymarks.FeatureIntersectionTags/Models/FeatureFile.cs: -------------------------------------------------------------------------------- 1 | using System.Text.Json.Serialization; 2 | 3 | namespace PointlessWaymarks.FeatureIntersectionTags.Models; 4 | 5 | public record FeatureFile( 6 | [property: JsonPropertyName("source")] string Source, 7 | [property: JsonPropertyName("name")] string Name, 8 | [property: JsonPropertyName("attributesForTags")] 9 | IReadOnlyList AttributesForTags, 10 | [property: JsonPropertyName("tagAll")] string TagAll, 11 | [property: JsonPropertyName("fileName")] 12 | string FileName, 13 | [property: JsonPropertyName("downloaded")] 14 | string Downloaded, 15 | [property: JsonPropertyName("note")] 16 | string Note 17 | ); -------------------------------------------------------------------------------- /PointlessWaymarks.FeatureIntersectionTags/Models/IntersectFileTaggingResult.cs: -------------------------------------------------------------------------------- 1 | namespace PointlessWaymarks.FeatureIntersectionTags.Models; 2 | 3 | public record IntersectFileTaggingResult(FileInfo FileToTag) 4 | { 5 | public IntersectResult? IntersectInformation { get; set; } 6 | public string Notes { get; set; } = string.Empty; 7 | public string Result { get; set; } = string.Empty; 8 | public string FinalTagString { get; set; } = string.Empty; 9 | public string ExistingTagString { get; set; } = string.Empty; 10 | public string NewTagsString { get; set; } = string.Empty; 11 | } -------------------------------------------------------------------------------- /PointlessWaymarks.FeatureIntersectionTags/Models/IntersectResult.cs: -------------------------------------------------------------------------------- 1 | using NetTopologySuite.Features; 2 | using PointlessWaymarks.CommonTools; 3 | 4 | namespace PointlessWaymarks.FeatureIntersectionTags.Models; 5 | 6 | public class IntersectResult 7 | { 8 | public IntersectResult(IFeature feature) 9 | { 10 | Features = feature.AsList(); 11 | } 12 | 13 | public IntersectResult(List features) 14 | { 15 | Features = features; 16 | } 17 | 18 | public Guid ContentId { get; init; } = Guid.Empty; 19 | public List Features { get; } 20 | public List IntersectsWith { get; } = []; 21 | public List Sources { get; } = []; 22 | public List Tags { get; } = []; 23 | } -------------------------------------------------------------------------------- /PointlessWaymarks.FeatureIntersectionTags/Models/IntersectSettings.cs: -------------------------------------------------------------------------------- 1 | using System.Text.Json.Serialization; 2 | 3 | namespace PointlessWaymarks.FeatureIntersectionTags.Models; 4 | 5 | public record IntersectSettings( 6 | [property: JsonPropertyName("intersectFiles")] 7 | IReadOnlyList IntersectFiles, 8 | [property: JsonPropertyName("padUsDirectory")] 9 | string PadUsDirectory, 10 | [property: JsonPropertyName("padUsAttributesForTags")] 11 | IReadOnlyList PadUsAttributesForTags 12 | ); -------------------------------------------------------------------------------- /PointlessWaymarks.FeatureIntersectionTags/Properties/launchSettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "profiles": { 3 | "PointlessWaymarks.FeatureIntersectionTags": { 4 | "commandName": "Project" 5 | } 6 | } 7 | } -------------------------------------------------------------------------------- /PointlessWaymarks.FeedReader.Tests/Feeds/Rss091Stadtfeuerwehr.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.FeedReader.Tests/Feeds/Rss091Stadtfeuerwehr.xml -------------------------------------------------------------------------------- /PointlessWaymarks.FeedReader.Tests/Feeds/Rss20ISO88591Intranet30.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.FeedReader.Tests/Feeds/Rss20ISO88591Intranet30.xml -------------------------------------------------------------------------------- /PointlessWaymarks.FeedReader/Feeds/Itunes/ItunesImage.cs: -------------------------------------------------------------------------------- 1 | using System.Xml.Linq; 2 | 3 | namespace PointlessWaymarks.FeedReader.Feeds.Itunes; 4 | 5 | /// 6 | /// The itunes:image xml element 7 | /// 8 | public class ItunesImage 9 | { 10 | /// 11 | /// Initializes a new instance of the class. 12 | /// 13 | /// The itunes:image element 14 | public ItunesImage(XElement image) 15 | { 16 | Href = image.GetAttributeValue("href"); 17 | } 18 | 19 | /// 20 | /// The value of the href attribute 21 | /// 22 | public string? Href { get; } 23 | } -------------------------------------------------------------------------------- /PointlessWaymarks.FeedReader/Feeds/MediaRSS/Medium.cs: -------------------------------------------------------------------------------- 1 | namespace PointlessWaymarks.FeedReader.Feeds.MediaRSS; 2 | 3 | /// 4 | /// Specifies the type of an object 5 | /// 6 | public enum Medium 7 | { 8 | /// 9 | /// Image 10 | /// 11 | Image, 12 | 13 | /// 14 | /// Audio 15 | /// 16 | Audio, 17 | 18 | /// 19 | /// Video 20 | /// 21 | Video, 22 | 23 | /// 24 | /// Document 25 | /// 26 | Document, 27 | 28 | /// 29 | /// Executable 30 | /// 31 | Executable, 32 | 33 | /// 34 | /// Type could not be determined 35 | /// 36 | Unknown 37 | } -------------------------------------------------------------------------------- /PointlessWaymarks.FeedReader/Parser/AbstractXmlFeedParser.cs: -------------------------------------------------------------------------------- 1 | using System.Xml.Linq; 2 | using PointlessWaymarks.FeedReader.Feeds.Base; 3 | 4 | namespace PointlessWaymarks.FeedReader.Parser; 5 | 6 | internal abstract class AbstractXmlFeedParser : IFeedParser 7 | { 8 | public BaseFeed Parse(string feedXml) 9 | { 10 | var feedDoc = XDocument.Parse(feedXml); 11 | 12 | return Parse(feedXml, feedDoc); 13 | } 14 | 15 | public abstract BaseFeed Parse(string feedXml, XDocument feedDoc); 16 | } -------------------------------------------------------------------------------- /PointlessWaymarks.FeedReader/Parser/AtomParser.cs: -------------------------------------------------------------------------------- 1 | using System.Xml.Linq; 2 | using PointlessWaymarks.FeedReader.Feeds.Atom; 3 | using PointlessWaymarks.FeedReader.Feeds.Base; 4 | 5 | namespace PointlessWaymarks.FeedReader.Parser; 6 | 7 | internal class AtomParser : AbstractXmlFeedParser 8 | { 9 | public override BaseFeed Parse(string feedXml, XDocument feedDoc) 10 | { 11 | var feed = new AtomFeed(feedXml, feedDoc.Root); 12 | return feed; 13 | } 14 | } -------------------------------------------------------------------------------- /PointlessWaymarks.FeedReader/Parser/Factory.cs: -------------------------------------------------------------------------------- 1 | namespace PointlessWaymarks.FeedReader.Parser; 2 | 3 | internal static class Factory 4 | { 5 | public static AbstractXmlFeedParser GetParser(FeedType feedType) 6 | { 7 | return feedType switch 8 | { 9 | FeedType.Atom => new AtomParser(), 10 | FeedType.Rss_0_91 => new Rss091Parser(), 11 | FeedType.Rss_0_92 => new Rss092Parser(), 12 | FeedType.Rss_1_0 => new Rss10Parser(), 13 | FeedType.MediaRss => new MediaRssParser(), 14 | _ => new Rss20Parser() 15 | }; 16 | } 17 | } -------------------------------------------------------------------------------- /PointlessWaymarks.FeedReader/Parser/IFeedParser.cs: -------------------------------------------------------------------------------- 1 | using PointlessWaymarks.FeedReader.Feeds.Base; 2 | 3 | namespace PointlessWaymarks.FeedReader.Parser; 4 | 5 | internal interface IFeedParser 6 | { 7 | BaseFeed Parse(string feedXml); 8 | } -------------------------------------------------------------------------------- /PointlessWaymarks.FeedReader/Parser/MediaRssParser.cs: -------------------------------------------------------------------------------- 1 | using System.Xml.Linq; 2 | using PointlessWaymarks.FeedReader.Feeds.Base; 3 | using PointlessWaymarks.FeedReader.Feeds.MediaRSS; 4 | 5 | namespace PointlessWaymarks.FeedReader.Parser; 6 | 7 | internal class MediaRssParser : AbstractXmlFeedParser 8 | { 9 | public override BaseFeed Parse(string feedXml, XDocument feedDoc) 10 | { 11 | var rss = feedDoc.Root; 12 | var channel = rss.GetElement("channel"); 13 | var feed = new MediaRssFeed(feedXml, channel); 14 | return feed; 15 | } 16 | } -------------------------------------------------------------------------------- /PointlessWaymarks.FeedReader/Parser/Rss091Parser.cs: -------------------------------------------------------------------------------- 1 | using System.Xml.Linq; 2 | using PointlessWaymarks.FeedReader.Feeds._0._91; 3 | using PointlessWaymarks.FeedReader.Feeds.Base; 4 | 5 | namespace PointlessWaymarks.FeedReader.Parser; 6 | 7 | internal class Rss091Parser : AbstractXmlFeedParser 8 | { 9 | public override BaseFeed Parse(string feedXml, XDocument feedDoc) 10 | { 11 | var rss = feedDoc.Root; 12 | var channel = rss.GetElement("channel"); 13 | var feed = new Rss091Feed(feedXml, channel); 14 | return feed; 15 | } 16 | } -------------------------------------------------------------------------------- /PointlessWaymarks.FeedReader/Parser/Rss092Parser.cs: -------------------------------------------------------------------------------- 1 | using System.Xml.Linq; 2 | using PointlessWaymarks.FeedReader.Feeds._0._92; 3 | using PointlessWaymarks.FeedReader.Feeds.Base; 4 | 5 | namespace PointlessWaymarks.FeedReader.Parser; 6 | 7 | internal class Rss092Parser : AbstractXmlFeedParser 8 | { 9 | public override BaseFeed Parse(string feedXml, XDocument feedDoc) 10 | { 11 | var rss = feedDoc.Root; 12 | var channel = rss.GetElement("channel"); 13 | var feed = new Rss092Feed(feedXml, channel); 14 | return feed; 15 | } 16 | } -------------------------------------------------------------------------------- /PointlessWaymarks.FeedReader/Parser/Rss10Parser.cs: -------------------------------------------------------------------------------- 1 | using System.Xml.Linq; 2 | using PointlessWaymarks.FeedReader.Feeds._1._0; 3 | using PointlessWaymarks.FeedReader.Feeds.Base; 4 | 5 | namespace PointlessWaymarks.FeedReader.Parser; 6 | 7 | internal class Rss10Parser : AbstractXmlFeedParser 8 | { 9 | public override BaseFeed Parse(string feedXml, XDocument feedDoc) 10 | { 11 | var rdf = feedDoc.Root; 12 | var channel = rdf.GetElement("channel"); 13 | var feed = new Rss10Feed(feedXml, channel); 14 | return feed; 15 | } 16 | } -------------------------------------------------------------------------------- /PointlessWaymarks.FeedReader/Parser/Rss20Parser.cs: -------------------------------------------------------------------------------- 1 | using System.Xml.Linq; 2 | using PointlessWaymarks.FeedReader.Feeds._2._0; 3 | using PointlessWaymarks.FeedReader.Feeds.Base; 4 | 5 | namespace PointlessWaymarks.FeedReader.Parser; 6 | 7 | internal class Rss20Parser : AbstractXmlFeedParser 8 | { 9 | public override BaseFeed Parse(string feedXml, XDocument feedDoc) 10 | { 11 | var rss = feedDoc.Root; 12 | var channel = rss.GetElement("channel"); 13 | var feed = new Rss20Feed(feedXml, channel); 14 | return feed; 15 | } 16 | } -------------------------------------------------------------------------------- /PointlessWaymarks.FeedReaderData/Migrations/DefaultMigration.cs: -------------------------------------------------------------------------------- 1 | using FluentMigrator; 2 | 3 | namespace PointlessWaymarks.FeedReaderData.Migrations; 4 | 5 | [Migration(202307110000)] 6 | public class DefaultMigration : Migration 7 | { 8 | public override void Down() 9 | { 10 | } 11 | 12 | public override void Up() 13 | { 14 | } 15 | } -------------------------------------------------------------------------------- /PointlessWaymarks.FeedReaderData/Models/ReaderKeyValue.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace PointlessWaymarks.FeedReaderData.Models 8 | { 9 | public class ReaderKeyValue 10 | { 11 | public int Id { get; set; } 12 | public string Key { get; set; } = string.Empty; 13 | public string Value { get; set; } = string.Empty; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /PointlessWaymarks.FeedReaderGui/App.xaml: -------------------------------------------------------------------------------- 1 |  6 | 7 | 8 | -------------------------------------------------------------------------------- /PointlessWaymarks.FeedReaderGui/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Windows; 2 | 3 | [assembly: ThemeInfo( 4 | ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located 5 | //(used if a resource is not found in the page, 6 | // or application resource dictionaries) 7 | ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located 8 | //(used if a resource is not found in the page, 9 | // app, or any theme specific resource dictionaries) 10 | )] -------------------------------------------------------------------------------- /PointlessWaymarks.FeedReaderGui/Controls/AppSettingsControl.xaml.cs: -------------------------------------------------------------------------------- 1 | using System.Windows.Controls; 2 | 3 | namespace PointlessWaymarks.FeedReaderGui.Controls; 4 | 5 | public partial class AppSettingsControl 6 | { 7 | public AppSettingsControl() 8 | { 9 | InitializeComponent(); 10 | } 11 | } -------------------------------------------------------------------------------- /PointlessWaymarks.FeedReaderGui/Controls/FeedEditorControl.xaml.cs: -------------------------------------------------------------------------------- 1 | using System.Windows.Controls; 2 | 3 | namespace PointlessWaymarks.FeedReaderGui.Controls; 4 | 5 | public partial class FeedEditorControl : UserControl 6 | { 7 | public FeedEditorControl() 8 | { 9 | InitializeComponent(); 10 | } 11 | } -------------------------------------------------------------------------------- /PointlessWaymarks.FeedReaderGui/Controls/FeedItemListListItem.cs: -------------------------------------------------------------------------------- 1 | using PointlessWaymarks.FeedReaderData.Models; 2 | using PointlessWaymarks.LlamaAspects; 3 | 4 | namespace PointlessWaymarks.FeedReaderGui.Controls; 5 | 6 | [NotifyPropertyChanged] 7 | public partial class FeedItemListListItem 8 | { 9 | public required ReaderFeed DbReaderFeed { get; set; } 10 | public required ReaderFeedItem DbItem { get; set; } 11 | } -------------------------------------------------------------------------------- /PointlessWaymarks.FeedReaderGui/Controls/FeedListControl.xaml.cs: -------------------------------------------------------------------------------- 1 | namespace PointlessWaymarks.FeedReaderGui.Controls; 2 | 3 | public partial class FeedListControl 4 | { 5 | public FeedListControl() 6 | { 7 | InitializeComponent(); 8 | } 9 | } -------------------------------------------------------------------------------- /PointlessWaymarks.FeedReaderGui/Controls/FeedListListItem.cs: -------------------------------------------------------------------------------- 1 | using PointlessWaymarks.FeedReaderData.Models; 2 | using PointlessWaymarks.LlamaAspects; 3 | 4 | namespace PointlessWaymarks.FeedReaderGui.Controls; 5 | 6 | [NotifyPropertyChanged] 7 | public partial class FeedListListItem 8 | { 9 | public int UnreadItemsCount { get; set; } 10 | public int ItemsCount { get; set; } 11 | public required ReaderFeed DbReaderFeed { get; set; } 12 | } -------------------------------------------------------------------------------- /PointlessWaymarks.FeedReaderGui/Controls/SavedFeedItemListControl.xaml.cs: -------------------------------------------------------------------------------- 1 | namespace PointlessWaymarks.FeedReaderGui.Controls; 2 | 3 | /// 4 | /// Interaction logic for SavedFeedItemListControl.xaml 5 | /// 6 | public partial class SavedFeedItemListControl 7 | { 8 | public SavedFeedItemListControl() 9 | { 10 | InitializeComponent(); 11 | } 12 | } -------------------------------------------------------------------------------- /PointlessWaymarks.FeedReaderGui/Controls/SavedFeedItemListListItem.cs: -------------------------------------------------------------------------------- 1 | using PointlessWaymarks.FeedReaderData.Models; 2 | using PointlessWaymarks.LlamaAspects; 3 | 4 | namespace PointlessWaymarks.FeedReaderGui.Controls; 5 | 6 | [NotifyPropertyChanged] 7 | public partial class SavedFeedItemListListItem 8 | { 9 | public required SavedFeedItem DbItem { get; set; } 10 | public required ReaderFeed? DbReaderFeed { get; set; } 11 | } -------------------------------------------------------------------------------- /PointlessWaymarks.FeedReaderGui/FeedReaderGuiSettings.cs: -------------------------------------------------------------------------------- 1 | using PointlessWaymarks.LlamaAspects; 2 | 3 | namespace PointlessWaymarks.FeedReaderGui; 4 | 5 | [NotifyPropertyChanged] 6 | public partial class FeedReaderGuiSettings 7 | { 8 | public string LastDatabaseFile { get; set; } = string.Empty; 9 | public string? LastDirectory { get; set; } = string.Empty; 10 | public string ProgramUpdateDirectory { get; set; } = @"https://software.pointlesswaymarks.com/Software/PointlessWaymarksSoftwareList.json"; 11 | public bool AutoMarkReadDefault { get; set; } = true; 12 | } -------------------------------------------------------------------------------- /PointlessWaymarks.FeedReaderGui/FeedReaderInstallerLeftImage.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.FeedReaderGui/FeedReaderInstallerLeftImage.bmp -------------------------------------------------------------------------------- /PointlessWaymarks.FeedReaderGui/FeedReaderInstallerLeftImage.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.FeedReaderGui/FeedReaderInstallerLeftImage.psd -------------------------------------------------------------------------------- /PointlessWaymarks.FeedReaderGui/FeedReaderInstallerTopRightImage.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.FeedReaderGui/FeedReaderInstallerTopRightImage.bmp -------------------------------------------------------------------------------- /PointlessWaymarks.FeedReaderGui/FeedReaderInstallerTopRightImage.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.FeedReaderGui/FeedReaderInstallerTopRightImage.psd -------------------------------------------------------------------------------- /PointlessWaymarks.FeedReaderGui/JotServices.cs: -------------------------------------------------------------------------------- 1 | using System.Windows; 2 | using Jot; 3 | using WpfScreenHelper; 4 | 5 | namespace PointlessWaymarks.FeedReaderGui; 6 | 7 | internal static class JotServices 8 | { 9 | public static readonly Tracker Tracker = new(); 10 | 11 | static JotServices() 12 | { 13 | Tracker.Configure().Id(w => w.Name, SystemInformation.VirtualScreen.Size) 14 | .Properties(w => new 15 | { 16 | w.Top, 17 | w.Width, 18 | w.Height, 19 | w.Left, 20 | w.WindowState 21 | }).PersistOn(nameof(Window.Closing)).StopTrackingOn(nameof(Window.Closing)); 22 | } 23 | } -------------------------------------------------------------------------------- /PointlessWaymarks.FeedReaderGui/PointlessWaymarksFeedReaderIcon.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.FeedReaderGui/PointlessWaymarksFeedReaderIcon.bmp -------------------------------------------------------------------------------- /PointlessWaymarks.FeedReaderGui/PointlessWaymarksFeedReaderIcon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.FeedReaderGui/PointlessWaymarksFeedReaderIcon.ico -------------------------------------------------------------------------------- /PointlessWaymarks.FeedReaderGui/Properties/launchSettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "profiles": { 3 | "PointlessWaymarks.RssReaderGui": { 4 | "commandName": "Project" 5 | } 6 | } 7 | } -------------------------------------------------------------------------------- /PointlessWaymarks.FeedReaderScreenShots/FeedReaderItems.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.FeedReaderScreenShots/FeedReaderItems.jpg -------------------------------------------------------------------------------- /PointlessWaymarks.GeoTaggingService/IGpxService.cs: -------------------------------------------------------------------------------- 1 | namespace PointlessWaymarks.GeoTaggingService; 2 | 3 | public interface IGpxService 4 | { 5 | Task> GetGpxPoints(List photoDateTimeUtcList, IProgress progress, CancellationToken cancellationToken); 6 | } -------------------------------------------------------------------------------- /PointlessWaymarks.GeoTaggingService/PointlessWaymarks.GeoTaggingService.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | all 6 | runtime; build; native; contentfiles; analyzers; buildtransitive 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /PointlessWaymarks.GeoTaggingService/WaypointAndSource.cs: -------------------------------------------------------------------------------- 1 | using NetTopologySuite.IO; 2 | 3 | namespace PointlessWaymarks.GeoTaggingService; 4 | 5 | public record WaypointAndSource(GpxWaypoint Waypoint, string Source); -------------------------------------------------------------------------------- /PointlessWaymarks.GeoToolsGui/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Windows; 2 | 3 | [assembly: ThemeInfo( 4 | ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located 5 | //(used if a resource is not found in the page, 6 | // or application resource dictionaries) 7 | ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located 8 | //(used if a resource is not found in the page, 9 | // app, or any theme specific resource dictionaries) 10 | )] -------------------------------------------------------------------------------- /PointlessWaymarks.GeoToolsGui/Controls/AppSettingsControl.xaml.cs: -------------------------------------------------------------------------------- 1 | namespace PointlessWaymarks.GeoToolsGui.Controls 2 | { 3 | /// 4 | /// Interaction logic for AppSettingsControl.xaml 5 | /// 6 | public partial class AppSettingsControl 7 | { 8 | public AppSettingsControl() 9 | { 10 | InitializeComponent(); 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /PointlessWaymarks.GeoToolsGui/Controls/ConnectBasedGeoTaggerControl.xaml.cs: -------------------------------------------------------------------------------- 1 | namespace PointlessWaymarks.GeoToolsGui.Controls; 2 | 3 | public partial class ConnectBasedGeoTaggerControl 4 | { 5 | public ConnectBasedGeoTaggerControl() 6 | { 7 | InitializeComponent(); 8 | } 9 | } -------------------------------------------------------------------------------- /PointlessWaymarks.GeoToolsGui/Controls/ConnectDownloadControl.xaml.cs: -------------------------------------------------------------------------------- 1 | namespace PointlessWaymarks.GeoToolsGui.Controls; 2 | 3 | public partial class ConnectDownloadControl 4 | { 5 | public ConnectDownloadControl() 6 | { 7 | InitializeComponent(); 8 | } 9 | } -------------------------------------------------------------------------------- /PointlessWaymarks.GeoToolsGui/Controls/FeatureFileEditorControl.xaml.cs: -------------------------------------------------------------------------------- 1 | namespace PointlessWaymarks.GeoToolsGui.Controls; 2 | 3 | /// 4 | /// Interaction logic for FeatureFileEditorControl.xaml 5 | /// 6 | public partial class FeatureFileEditorControl 7 | { 8 | public FeatureFileEditorControl() 9 | { 10 | InitializeComponent(); 11 | } 12 | } -------------------------------------------------------------------------------- /PointlessWaymarks.GeoToolsGui/Controls/FeatureIntersectTaggerControl.xaml.cs: -------------------------------------------------------------------------------- 1 | using System.Windows.Input; 2 | using PointlessWaymarks.WpfCommon.Utility; 3 | 4 | namespace PointlessWaymarks.GeoToolsGui.Controls; 5 | 6 | /// 7 | /// Interaction logic for FeatureIntersectTaggerControl.xaml 8 | /// 9 | public partial class FeatureIntersectTaggerControl 10 | { 11 | public FeatureIntersectTaggerControl() 12 | { 13 | InitializeComponent(); 14 | } 15 | 16 | private void OpenHyperlink(object sender, ExecutedRoutedEventArgs e) 17 | { 18 | if (string.IsNullOrWhiteSpace(e.Parameter.ToString())) return; 19 | ProcessHelpers.OpenUrlInExternalBrowser(e.Parameter.ToString()); 20 | } 21 | } -------------------------------------------------------------------------------- /PointlessWaymarks.GeoToolsGui/Controls/FileBasedGeoTaggerControl.xaml.cs: -------------------------------------------------------------------------------- 1 | namespace PointlessWaymarks.GeoToolsGui.Controls; 2 | 3 | public partial class FileBasedGeoTaggerControl 4 | { 5 | public FileBasedGeoTaggerControl() 6 | { 7 | InitializeComponent(); 8 | } 9 | } -------------------------------------------------------------------------------- /PointlessWaymarks.GeoToolsGui/GeoToolsGuiSettings.cs: -------------------------------------------------------------------------------- 1 | using PointlessWaymarks.LlamaAspects; 2 | 3 | namespace PointlessWaymarks.GeoToolsGui; 4 | 5 | [NotifyPropertyChanged] 6 | public partial class GeoToolsGuiSettings 7 | { 8 | public string ProgramUpdateDirectory { get; set; } = @"https://software.pointlesswaymarks.com/Software/PointlessWaymarksSoftwareList.json"; 9 | } -------------------------------------------------------------------------------- /PointlessWaymarks.GeoToolsGui/GeoToolsInstallerLeftImage.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.GeoToolsGui/GeoToolsInstallerLeftImage.bmp -------------------------------------------------------------------------------- /PointlessWaymarks.GeoToolsGui/GeoToolsInstallerLeftImage.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.GeoToolsGui/GeoToolsInstallerLeftImage.psd -------------------------------------------------------------------------------- /PointlessWaymarks.GeoToolsGui/GeoToolsInstallerTopRightImage.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.GeoToolsGui/GeoToolsInstallerTopRightImage.bmp -------------------------------------------------------------------------------- /PointlessWaymarks.GeoToolsGui/GeoToolsInstallerTopRightImage.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.GeoToolsGui/GeoToolsInstallerTopRightImage.psd -------------------------------------------------------------------------------- /PointlessWaymarks.GeoToolsGui/JotServices.cs: -------------------------------------------------------------------------------- 1 | using System.Windows; 2 | using Jot; 3 | using WpfScreenHelper; 4 | 5 | namespace PointlessWaymarks.GeoToolsGui; 6 | 7 | internal static class JotServices 8 | { 9 | public static readonly Tracker Tracker = new(); 10 | 11 | static JotServices() 12 | { 13 | Tracker.Configure().Id(w => w.Name, SystemInformation.VirtualScreen.Size) 14 | .Properties(w => new 15 | { 16 | w.Top, 17 | w.Width, 18 | w.Height, 19 | w.Left, 20 | w.WindowState 21 | }).PersistOn(nameof(Window.Closing)).StopTrackingOn(nameof(Window.Closing)); 22 | } 23 | } -------------------------------------------------------------------------------- /PointlessWaymarks.GeoToolsGui/Messages/ArchiveDirectoryUpdateMessage.cs: -------------------------------------------------------------------------------- 1 | using CommunityToolkit.Mvvm.Messaging.Messages; 2 | 3 | namespace PointlessWaymarks.GeoToolsGui.Messages; 4 | 5 | public class ArchiveDirectoryUpdateMessage((object sender, string archiveDirectory) message) 6 | : ValueChangedMessage<(object sender, string archiveDirectory)>(message); 7 | 8 | public class FeatureIntersectFileAddRequestMessage((object sender, List files) message) 9 | : ValueChangedMessage<(object sender, List files)>(message); -------------------------------------------------------------------------------- /PointlessWaymarks.GeoToolsGui/Messages/ExifToolSettingsUpdateMessage.cs: -------------------------------------------------------------------------------- 1 | using CommunityToolkit.Mvvm.Messaging.Messages; 2 | 3 | namespace PointlessWaymarks.GeoToolsGui.Messages; 4 | 5 | public class ExifToolSettingsUpdateMessage((object sender, string exifToolFullName) message) 6 | : ValueChangedMessage<(object sender, string exifToolFullName)>(message); -------------------------------------------------------------------------------- /PointlessWaymarks.GeoToolsGui/Models/FeatureFileEditorEndEditCondition.cs: -------------------------------------------------------------------------------- 1 | namespace PointlessWaymarks.GeoToolsGui.Models; 2 | 3 | public enum FeatureFileEditorEndEditCondition 4 | { 5 | Cancelled, 6 | Saved 7 | } -------------------------------------------------------------------------------- /PointlessWaymarks.GeoToolsGui/PointlessWaymarksGeoToolsIcon.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.GeoToolsGui/PointlessWaymarksGeoToolsIcon.bmp -------------------------------------------------------------------------------- /PointlessWaymarks.GeoToolsGui/PointlessWaymarksGeoToolsIcon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.GeoToolsGui/PointlessWaymarksGeoToolsIcon.ico -------------------------------------------------------------------------------- /PointlessWaymarks.GeoToolsGui/Properties/launchSettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "profiles": { 3 | "PointlessWaymarks.GeoToolsGui": { 4 | "commandName": "Project" 5 | } 6 | } 7 | } -------------------------------------------------------------------------------- /PointlessWaymarks.GeoToolsGui/Settings/ConnectBasedGeoTaggerSettings.cs: -------------------------------------------------------------------------------- 1 | using PointlessWaymarks.LlamaAspects; 2 | 3 | namespace PointlessWaymarks.GeoToolsGui.Settings; 4 | 5 | [NotifyPropertyChanged] 6 | public partial class ConnectBasedGeoTaggerSettings 7 | { 8 | public string ArchiveDirectory { get; set; } = string.Empty; 9 | public bool CreateBackups { get; set; } = true; 10 | public bool CreateBackupsInDefaultStorage { get; set; } = true; 11 | public string ExifToolFullName { get; set; } = string.Empty; 12 | public string FilesToTagLastDirectoryFullName { get; set; } = string.Empty; 13 | public bool OverwriteExistingGeoLocation { get; set; } 14 | public int PointsMustBeWithinMinutes { get; set; } = 10; 15 | } -------------------------------------------------------------------------------- /PointlessWaymarks.GeoToolsGui/Settings/ConnectDownloadSettings.cs: -------------------------------------------------------------------------------- 1 | using PointlessWaymarks.LlamaAspects; 2 | 3 | namespace PointlessWaymarks.GeoToolsGui.Settings; 4 | 5 | [NotifyPropertyChanged] 6 | public partial class ConnectDownloadSettings 7 | { 8 | public string ArchiveDirectory { get; set; } = string.Empty; 9 | } -------------------------------------------------------------------------------- /PointlessWaymarks.GeoToolsScreenShots/ConnectDownload.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.GeoToolsScreenShots/ConnectDownload.jpg -------------------------------------------------------------------------------- /PointlessWaymarks.GeoToolsScreenShots/ConnectGeoTaggingFilesToTag.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.GeoToolsScreenShots/ConnectGeoTaggingFilesToTag.jpg -------------------------------------------------------------------------------- /PointlessWaymarks.GeoToolsScreenShots/ConnectGeoTaggingPreview.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.GeoToolsScreenShots/ConnectGeoTaggingPreview.jpg -------------------------------------------------------------------------------- /PointlessWaymarks.GeoToolsScreenShots/ConnectGeoTaggingSettings.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.GeoToolsScreenShots/ConnectGeoTaggingSettings.jpg -------------------------------------------------------------------------------- /PointlessWaymarks.GeoToolsScreenShots/FeatureIntersectGeoJsonFileSettings.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.GeoToolsScreenShots/FeatureIntersectGeoJsonFileSettings.jpg -------------------------------------------------------------------------------- /PointlessWaymarks.GeoToolsScreenShots/FeatureIntersectNewTags.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.GeoToolsScreenShots/FeatureIntersectNewTags.jpg -------------------------------------------------------------------------------- /PointlessWaymarks.GeoToolsScreenShots/FeatureIntersectPadUsSettings.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.GeoToolsScreenShots/FeatureIntersectPadUsSettings.jpg -------------------------------------------------------------------------------- /PointlessWaymarks.Graphics/PointlessWaymarksCmsAutomationCircularLogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.Graphics/PointlessWaymarksCmsAutomationCircularLogo.png -------------------------------------------------------------------------------- /PointlessWaymarks.Graphics/PointlessWaymarksCmsAutomationCircularLogo.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.Graphics/PointlessWaymarksCmsAutomationCircularLogo.psd -------------------------------------------------------------------------------- /PointlessWaymarks.Graphics/PointlessWaymarksCmsAutomationErrorCircularLogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.Graphics/PointlessWaymarksCmsAutomationErrorCircularLogo.png -------------------------------------------------------------------------------- /PointlessWaymarks.Graphics/PointlessWaymarksCmsAutomationIcon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.Graphics/PointlessWaymarksCmsAutomationIcon.ico -------------------------------------------------------------------------------- /PointlessWaymarks.Graphics/PointlessWaymarksCmsAutomationSquareLogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.Graphics/PointlessWaymarksCmsAutomationSquareLogo.png -------------------------------------------------------------------------------- /PointlessWaymarks.Graphics/PointlessWaymarksCmsAutomationSquareLogo.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.Graphics/PointlessWaymarksCmsAutomationSquareLogo.psd -------------------------------------------------------------------------------- /PointlessWaymarks.Graphics/PointlessWaymarksCmsIcon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.Graphics/PointlessWaymarksCmsIcon.ico -------------------------------------------------------------------------------- /PointlessWaymarks.Graphics/PointlessWaymarksCmsInstallerIcon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.Graphics/PointlessWaymarksCmsInstallerIcon.ico -------------------------------------------------------------------------------- /PointlessWaymarks.Graphics/PointlessWaymarksCmsSquareLogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.Graphics/PointlessWaymarksCmsSquareLogo.png -------------------------------------------------------------------------------- /PointlessWaymarks.Graphics/PointlessWaymarksCmsSquareLogo.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.Graphics/PointlessWaymarksCmsSquareLogo.psd -------------------------------------------------------------------------------- /PointlessWaymarks.Graphics/PointlessWaymarksGeoToolsIcon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.Graphics/PointlessWaymarksGeoToolsIcon.ico -------------------------------------------------------------------------------- /PointlessWaymarks.Graphics/PointlessWaymarksGeoToolsInstallerIcon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.Graphics/PointlessWaymarksGeoToolsInstallerIcon.ico -------------------------------------------------------------------------------- /PointlessWaymarks.Graphics/PointlessWaymarksGeoToolsSquareLogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.Graphics/PointlessWaymarksGeoToolsSquareLogo.png -------------------------------------------------------------------------------- /PointlessWaymarks.Graphics/PointlessWaymarksGeoToolsSquareLogo.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.Graphics/PointlessWaymarksGeoToolsSquareLogo.psd -------------------------------------------------------------------------------- /PointlessWaymarks.Graphics/PointlessWaymarksSiteViewerIcon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.Graphics/PointlessWaymarksSiteViewerIcon.ico -------------------------------------------------------------------------------- /PointlessWaymarks.Graphics/PointlessWaymarksSiteViewerInstallerIcon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.Graphics/PointlessWaymarksSiteViewerInstallerIcon.ico -------------------------------------------------------------------------------- /PointlessWaymarks.Graphics/PointlessWaymarksSiteViewerSquareLogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.Graphics/PointlessWaymarksSiteViewerSquareLogo.png -------------------------------------------------------------------------------- /PointlessWaymarks.Graphics/PointlessWaymarksSiteViewerSquareLogo.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.Graphics/PointlessWaymarksSiteViewerSquareLogo.psd -------------------------------------------------------------------------------- /PointlessWaymarks.Graphics/PointlessWaymarksSoftwareBadge.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.Graphics/PointlessWaymarksSoftwareBadge.png -------------------------------------------------------------------------------- /PointlessWaymarks.Graphics/PointlessWaymarksSoftwareBadge.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.Graphics/PointlessWaymarksSoftwareBadge.psd -------------------------------------------------------------------------------- /PointlessWaymarks.PowershellRunnerData/Migrations/AddRunTotalSecondsMigration.cs: -------------------------------------------------------------------------------- 1 | using System.Data; 2 | using FluentMigrator; 3 | 4 | namespace PointlessWaymarks.PowerShellRunnerData.Migrations; 5 | 6 | [Migration(202407071700)] 7 | public class AddRunTotalSecondsMigration : Migration 8 | { 9 | public override void Down() 10 | { 11 | throw new DataException($"No Down Available for Migration {nameof(AddRunTotalSecondsMigration)}"); 12 | } 13 | 14 | public override void Up() 15 | { 16 | if (Schema.Table("ScriptJobRuns").Column("LengthInSeconds").Exists()) 17 | return; 18 | 19 | Execute.Sql(@"ALTER TABLE ScriptJobRuns 20 | ADD COLUMN LengthInSeconds INTEGER"); 21 | } 22 | } -------------------------------------------------------------------------------- /PointlessWaymarks.PowershellRunnerData/Migrations/AddScriptTypeMigration.cs: -------------------------------------------------------------------------------- 1 | using System.Data; 2 | using FluentMigrator; 3 | 4 | namespace PointlessWaymarks.PowerShellRunnerData.Migrations; 5 | 6 | [Migration(202409230800)] 7 | public class AddScriptTypeMigration : Migration 8 | { 9 | public override void Down() 10 | { 11 | throw new DataException($"No Down Available for Migration {nameof(AddRunTotalSecondsMigration)}"); 12 | } 13 | 14 | public override void Up() 15 | { 16 | if (Schema.Table("ScriptJobs").Column("ScriptType").Exists()) 17 | return; 18 | 19 | Execute.Sql("ALTER TABLE ScriptJobs ADD COLUMN ScriptType TEXT NOT NULL DEFAULT 'PowerShell'"); 20 | } 21 | } -------------------------------------------------------------------------------- /PointlessWaymarks.PowershellRunnerData/Migrations/DefaultMigration.cs: -------------------------------------------------------------------------------- 1 | using FluentMigrator; 2 | 3 | namespace PointlessWaymarks.PowerShellRunnerData.Migrations; 4 | 5 | [Migration(202406170000)] 6 | public class DefaultMigration : Migration 7 | { 8 | public override void Down() 9 | { 10 | } 11 | 12 | public override void Up() 13 | { 14 | } 15 | } -------------------------------------------------------------------------------- /PointlessWaymarks.PowershellRunnerData/Models/PowerShellRunnerSetting.cs: -------------------------------------------------------------------------------- 1 | namespace PointlessWaymarks.PowerShellRunnerData.Models; 2 | 3 | public class PowerShellRunnerSetting 4 | { 5 | public int Id { get; set; } 6 | public string Key { get; set; } = string.Empty; 7 | public string Value { get; set; } = string.Empty; 8 | } -------------------------------------------------------------------------------- /PointlessWaymarks.PowershellRunnerData/Models/ScriptJob.cs: -------------------------------------------------------------------------------- 1 | namespace PointlessWaymarks.PowerShellRunnerData.Models; 2 | 3 | public class ScriptJob 4 | { 5 | public bool AllowSimultaneousRuns { get; set; } 6 | public string CronExpression { get; set; } = string.Empty; 7 | public int DeleteScriptJobRunsAfterMonths { get; set; } = 12; 8 | public string Description { get; set; } = string.Empty; 9 | public int Id { get; set; } 10 | public DateTime LastEditOn { get; set; } 11 | public string Name { get; set; } = string.Empty; 12 | public Guid PersistentId { get; set; } 13 | public bool ScheduleEnabled { get; set; } 14 | public string Script { get; set; } = string.Empty; 15 | public string ScriptType { get; set; } = string.Empty; 16 | } -------------------------------------------------------------------------------- /PointlessWaymarks.PowershellRunnerData/Models/ScriptJobRun.cs: -------------------------------------------------------------------------------- 1 | namespace PointlessWaymarks.PowerShellRunnerData.Models; 2 | 3 | public class ScriptJobRun 4 | { 5 | public DateTime? CompletedOnUtc { get; set; } 6 | public bool Errors { get; set; } 7 | public int Id { get; set; } 8 | public int? LengthInSeconds { get; set; } 9 | public string Output { get; set; } = string.Empty; 10 | public Guid PersistentId { get; set; } 11 | public string RunType { get; set; } = string.Empty; 12 | public string Script { get; set; } = string.Empty; 13 | public Guid ScriptJobPersistentId { get; set; } 14 | public DateTime StartedOnUtc { get; set; } 15 | } -------------------------------------------------------------------------------- /PointlessWaymarks.PowershellRunnerData/ScriptKind.cs: -------------------------------------------------------------------------------- 1 | namespace PointlessWaymarks.PowerShellRunnerData; 2 | 3 | public enum ScriptKind 4 | { 5 | PowerShell, 6 | CsScript 7 | } -------------------------------------------------------------------------------- /PointlessWaymarks.PowershellRunnerGui/App.xaml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /PointlessWaymarks.PowershellRunnerGui/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Windows; 2 | 3 | [assembly:ThemeInfo( 4 | ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located 5 | //(used if a resource is not found in the page, 6 | // or application resource dictionaries) 7 | ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located 8 | //(used if a resource is not found in the page, 9 | // app, or any theme specific resource dictionaries) 10 | )] 11 | -------------------------------------------------------------------------------- /PointlessWaymarks.PowershellRunnerGui/Controls/AppSettingsControl.xaml.cs: -------------------------------------------------------------------------------- 1 | namespace PointlessWaymarks.PowerShellRunnerGui.Controls; 2 | 3 | /// 4 | /// Interaction logic for AppSettingsControl.xaml 5 | /// 6 | public partial class AppSettingsControl 7 | { 8 | public AppSettingsControl() 9 | { 10 | InitializeComponent(); 11 | } 12 | } -------------------------------------------------------------------------------- /PointlessWaymarks.PowershellRunnerGui/Controls/CsCustomScriptRunnerControl.xaml.cs: -------------------------------------------------------------------------------- 1 | using System.Windows.Controls; 2 | 3 | namespace PointlessWaymarks.PowerShellRunnerGui.Controls; 4 | 5 | /// 6 | /// Interaction logic for CsCustomScriptRunnerControl.xaml 7 | /// 8 | public partial class CsCustomScriptRunnerControl 9 | { 10 | public CsCustomScriptRunnerControl() 11 | { 12 | InitializeComponent(); 13 | } 14 | } -------------------------------------------------------------------------------- /PointlessWaymarks.PowershellRunnerGui/Controls/CsScriptJobEditorControl.xaml.cs: -------------------------------------------------------------------------------- 1 | using System.Windows.Controls; 2 | 3 | namespace PointlessWaymarks.PowerShellRunnerGui.Controls; 4 | 5 | /// 6 | /// Interaction logic for CsScriptJobEditorControl.xaml 7 | /// 8 | public partial class CsScriptJobEditorControl 9 | { 10 | public CsScriptJobEditorControl() 11 | { 12 | InitializeComponent(); 13 | } 14 | } -------------------------------------------------------------------------------- /PointlessWaymarks.PowershellRunnerGui/Controls/CustomScriptRunnerControl.xaml.cs: -------------------------------------------------------------------------------- 1 | namespace PointlessWaymarks.PowerShellRunnerGui.Controls; 2 | 3 | /// 4 | /// Interaction logic for CustomScriptRunnerControl.xaml 5 | /// 6 | public partial class CustomScriptRunnerControl 7 | { 8 | public CustomScriptRunnerControl() 9 | { 10 | InitializeComponent(); 11 | } 12 | } -------------------------------------------------------------------------------- /PointlessWaymarks.PowershellRunnerGui/Controls/DateTimeMaxValueToNullConverter.cs: -------------------------------------------------------------------------------- 1 | using System.Globalization; 2 | using System.Windows.Data; 3 | 4 | namespace PointlessWaymarks.PowerShellRunnerGui.Controls; 5 | 6 | public class DateTimeMaxValueToNullConverter : IValueConverter 7 | { 8 | public object? Convert(object? value, Type targetType, object? parameter, CultureInfo culture) 9 | { 10 | if (value is not DateTime dateTime) return null; 11 | if (dateTime == DateTime.MaxValue) return null; 12 | return dateTime; 13 | } 14 | 15 | public object ConvertBack(object? value, Type targetType, object? parameter, CultureInfo culture) 16 | { 17 | throw new NotSupportedException(); 18 | } 19 | } -------------------------------------------------------------------------------- /PointlessWaymarks.PowershellRunnerGui/Controls/IScriptMessageItem.cs: -------------------------------------------------------------------------------- 1 | namespace PointlessWaymarks.PowerShellRunnerGui.Controls; 2 | 3 | public interface IScriptMessageItem 4 | { 5 | string Message { get; set; } 6 | DateTime ReceivedOn { get; set; } 7 | } -------------------------------------------------------------------------------- /PointlessWaymarks.PowershellRunnerGui/Controls/LengthInSecondsToHumanReadableConverter.cs: -------------------------------------------------------------------------------- 1 | using System.Globalization; 2 | using System.Windows.Data; 3 | 4 | namespace PointlessWaymarks.PowerShellRunnerGui.Controls; 5 | 6 | public class LengthInSecondsToHumanReadableConverter : IValueConverter 7 | { 8 | public object Convert(object? value, Type targetType, object? parameter, CultureInfo culture) 9 | { 10 | if (value is not int lengthInSeconds) return string.Empty; 11 | return TimeSpan.FromSeconds(lengthInSeconds).ToString(@"hh\:mm\:ss"); 12 | } 13 | 14 | public object ConvertBack(object? value, Type targetType, object? parameter, CultureInfo culture) 15 | { 16 | throw new NotSupportedException(); 17 | } 18 | } -------------------------------------------------------------------------------- /PointlessWaymarks.PowershellRunnerGui/Controls/ScriptJobEditorControl.xaml.cs: -------------------------------------------------------------------------------- 1 | namespace PointlessWaymarks.PowerShellRunnerGui.Controls; 2 | 3 | /// 4 | /// Interaction logic for ScriptJobEditorControl.xaml 5 | /// 6 | public partial class ScriptJobEditorControl 7 | { 8 | public ScriptJobEditorControl() 9 | { 10 | InitializeComponent(); 11 | } 12 | } -------------------------------------------------------------------------------- /PointlessWaymarks.PowershellRunnerGui/Controls/ScriptJobListControl.xaml.cs: -------------------------------------------------------------------------------- 1 | namespace PointlessWaymarks.PowerShellRunnerGui.Controls; 2 | 3 | /// 4 | /// Interaction logic for ScriptJobListControl.xaml 5 | /// 6 | public partial class ScriptJobListControl 7 | { 8 | public ScriptJobListControl() 9 | { 10 | InitializeComponent(); 11 | } 12 | } -------------------------------------------------------------------------------- /PointlessWaymarks.PowershellRunnerGui/Controls/ScriptJobRunListControl.xaml.cs: -------------------------------------------------------------------------------- 1 | namespace PointlessWaymarks.PowerShellRunnerGui.Controls; 2 | 3 | /// 4 | /// Interaction logic for ScriptJobRunListControl.xaml 5 | /// 6 | public partial class ScriptJobRunListControl 7 | { 8 | public ScriptJobRunListControl() 9 | { 10 | InitializeComponent(); 11 | } 12 | } -------------------------------------------------------------------------------- /PointlessWaymarks.PowershellRunnerGui/Controls/ScriptJobRunOutputDiffControl.xaml.cs: -------------------------------------------------------------------------------- 1 | namespace PointlessWaymarks.PowerShellRunnerGui.Controls; 2 | 3 | /// 4 | /// Interaction logic for ScriptJobRunOutputDiffControl.xaml 5 | /// 6 | public partial class ScriptJobRunOutputDiffControl 7 | { 8 | public ScriptJobRunOutputDiffControl() 9 | { 10 | InitializeComponent(); 11 | } 12 | } -------------------------------------------------------------------------------- /PointlessWaymarks.PowershellRunnerGui/Controls/ScriptJobRunViewerControl.xaml.cs: -------------------------------------------------------------------------------- 1 | namespace PointlessWaymarks.PowerShellRunnerGui.Controls; 2 | 3 | /// 4 | /// Interaction logic for ScriptJobRunViewerControl.xaml 5 | /// 6 | public partial class ScriptJobRunViewerControl 7 | { 8 | public ScriptJobRunViewerControl() 9 | { 10 | InitializeComponent(); 11 | } 12 | } -------------------------------------------------------------------------------- /PointlessWaymarks.PowershellRunnerGui/Controls/ScriptMessageItemError.cs: -------------------------------------------------------------------------------- 1 | using PointlessWaymarks.LlamaAspects; 2 | 3 | namespace PointlessWaymarks.PowerShellRunnerGui.Controls; 4 | 5 | [NotifyPropertyChanged] 6 | public partial class ScriptMessageItemError : IScriptMessageItem 7 | { 8 | public string Message { get; set; } = string.Empty; 9 | public DateTime ReceivedOn { get; set; } 10 | } -------------------------------------------------------------------------------- /PointlessWaymarks.PowershellRunnerGui/Controls/ScriptMessageItemProgress.cs: -------------------------------------------------------------------------------- 1 | using PointlessWaymarks.LlamaAspects; 2 | 3 | namespace PointlessWaymarks.PowerShellRunnerGui.Controls; 4 | 5 | [NotifyPropertyChanged] 6 | public partial class ScriptMessageItemProgress : IScriptMessageItem 7 | { 8 | public Guid ScriptJobPersistentId { get; set; } 9 | public Guid ScriptJobRunPersistentId { get; set; } 10 | public string? Sender { get; set; } 11 | public string Message { get; set; } = string.Empty; 12 | public DateTime ReceivedOn { get; set; } 13 | } -------------------------------------------------------------------------------- /PointlessWaymarks.PowershellRunnerGui/Controls/ScriptMessageItemState.cs: -------------------------------------------------------------------------------- 1 | using System.Management.Automation.Runspaces; 2 | using PointlessWaymarks.LlamaAspects; 3 | 4 | namespace PointlessWaymarks.PowerShellRunnerGui.Controls; 5 | 6 | [NotifyPropertyChanged] 7 | public partial class ScriptMessageItemState : IScriptMessageItem 8 | { 9 | public Guid ScriptJobPersistentId { get; set; } 10 | public Guid ScriptJobRunPersistentId { get; set; } 11 | public string? Sender { get; set; } 12 | public PipelineState State { get; set; } 13 | public string Message { get; set; } = string.Empty; 14 | public DateTime ReceivedOn { get; set; } 15 | } -------------------------------------------------------------------------------- /PointlessWaymarks.PowershellRunnerGui/Controls/ScriptProgressControl.xaml.cs: -------------------------------------------------------------------------------- 1 | namespace PointlessWaymarks.PowerShellRunnerGui.Controls; 2 | 3 | /// 4 | /// Interaction logic for ScriptProgressControl.xaml 5 | /// 6 | public partial class ScriptProgressControl 7 | { 8 | public ScriptProgressControl() 9 | { 10 | InitializeComponent(); 11 | } 12 | } -------------------------------------------------------------------------------- /PointlessWaymarks.PowershellRunnerGui/Controls/ScriptViewControl.xaml.cs: -------------------------------------------------------------------------------- 1 | namespace PointlessWaymarks.PowerShellRunnerGui.Controls; 2 | 3 | /// 4 | /// Interaction logic for ScriptViewControl.xaml 5 | /// 6 | public partial class ScriptViewControl 7 | { 8 | public ScriptViewControl() 9 | { 10 | InitializeComponent(); 11 | } 12 | } -------------------------------------------------------------------------------- /PointlessWaymarks.PowershellRunnerGui/Controls/UtcTimeToLocalTimeConverter.cs: -------------------------------------------------------------------------------- 1 | using System.Globalization; 2 | using System.Windows.Data; 3 | 4 | namespace PointlessWaymarks.PowerShellRunnerGui.Controls; 5 | 6 | public class UtcTimeToLocalTimeConverter : IValueConverter 7 | { 8 | public object? Convert(object? value, Type targetType, object? parameter, CultureInfo culture) 9 | { 10 | if (value is not DateTime utcTime) return null; 11 | return utcTime.ToLocalTime(); 12 | } 13 | 14 | public object ConvertBack(object? value, Type targetType, object? parameter, CultureInfo culture) 15 | { 16 | throw new NotSupportedException(); 17 | } 18 | } -------------------------------------------------------------------------------- /PointlessWaymarks.PowershellRunnerGui/JotServices.cs: -------------------------------------------------------------------------------- 1 | using System.Windows; 2 | using Jot; 3 | using WpfScreenHelper; 4 | 5 | namespace PointlessWaymarks.PowerShellRunnerGui; 6 | 7 | internal static class JotServices 8 | { 9 | public static readonly Tracker Tracker = new(); 10 | 11 | static JotServices() 12 | { 13 | Tracker.Configure().Id(w => w.Name, SystemInformation.VirtualScreen.Size) 14 | .Properties(w => new 15 | { 16 | w.Top, 17 | w.Width, 18 | w.Height, 19 | w.Left, 20 | w.WindowState 21 | }).PersistOn(nameof(Window.Closing)).StopTrackingOn(nameof(Window.Closing)); 22 | } 23 | } -------------------------------------------------------------------------------- /PointlessWaymarks.PowershellRunnerGui/PointlessWaymarksPowerShellRunnerIcon.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.PowershellRunnerGui/PointlessWaymarksPowerShellRunnerIcon.bmp -------------------------------------------------------------------------------- /PointlessWaymarks.PowershellRunnerGui/PointlessWaymarksPowerShellRunnerIcon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.PowershellRunnerGui/PointlessWaymarksPowerShellRunnerIcon.ico -------------------------------------------------------------------------------- /PointlessWaymarks.PowershellRunnerGui/PowerShellEditor/TextMarkerType.cs: -------------------------------------------------------------------------------- 1 | namespace PointlessWaymarks.PowerShellRunnerGui.PowerShellEditor; 2 | 3 | //Code copied from or based on [GitHub - dfinke/PowerShellConsole: Create a PowerShell Console using the AvalonEdit control](https://github.com/dfinke/PowerShellConsole/tree/master) 4 | //[dfinke (Doug Finke)](https://github.com/dfinke) - Apache-2.0 license 5 | public enum TextMarkerType 6 | { 7 | /// 8 | /// Use no marker 9 | /// 10 | None, 11 | 12 | /// 13 | /// Use squiggly underline marker 14 | /// 15 | SquigglyUnderline 16 | } -------------------------------------------------------------------------------- /PointlessWaymarks.PowershellRunnerGui/PowerShellRunnerGuiSettings.cs: -------------------------------------------------------------------------------- 1 | using PointlessWaymarks.LlamaAspects; 2 | 3 | namespace PointlessWaymarks.PowerShellRunnerGui; 4 | 5 | [NotifyPropertyChanged] 6 | public partial class PowerShellRunnerGuiSettings 7 | { 8 | public string DatabaseFile { get; set; } = string.Empty; 9 | public string? LastDirectory { get; set; } = string.Empty; 10 | public string ProgramUpdateDirectory { get; set; } = @"https://software.pointlesswaymarks.com/Software/PointlessWaymarksSoftwareList.json"; 11 | } -------------------------------------------------------------------------------- /PointlessWaymarks.PowershellRunnerGui/PowerShellRunnerInstallerTopRightImage.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.PowershellRunnerGui/PowerShellRunnerInstallerTopRightImage.bmp -------------------------------------------------------------------------------- /PointlessWaymarks.PowershellRunnerGui/PowerShellRunnerInstallerTopRightImage.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.PowershellRunnerGui/PowerShellRunnerInstallerTopRightImage.psd -------------------------------------------------------------------------------- /PointlessWaymarks.PowershellRunnerGui/PowerShellRunnerLeftInstallerImage.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.PowershellRunnerGui/PowerShellRunnerLeftInstallerImage.bmp -------------------------------------------------------------------------------- /PointlessWaymarks.PowershellRunnerGui/PowerShellRunnerLeftInstallerImage.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.PowershellRunnerGui/PowerShellRunnerLeftInstallerImage.psd -------------------------------------------------------------------------------- /PointlessWaymarks.PowershellRunnerScreenShots/PowerShellRunnerJobList.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.PowershellRunnerScreenShots/PowerShellRunnerJobList.jpg -------------------------------------------------------------------------------- /PointlessWaymarks.PowershellRunnerScreenShots/PowerShellRunnerRunDiffView.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.PowershellRunnerScreenShots/PowerShellRunnerRunDiffView.jpg -------------------------------------------------------------------------------- /PointlessWaymarks.PowershellRunnerScreenShots/PowerShellRunnerRunList.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.PowershellRunnerScreenShots/PowerShellRunnerRunList.jpg -------------------------------------------------------------------------------- /PointlessWaymarks.PressSharper.UnitTests/README.md: -------------------------------------------------------------------------------- 1 | This code was pulled from [bcwood/PressSharper: A C# class library for parsing WordPress XML export data.](https://github.com/bcwood/PressSharper) which was forked from [dreadwail/press_sharp: A C# class library for parsing Wordpress XML export data.](https://github.com/dreadwail/press_sharp). It has been lightly refactored and integrated into this project. 2 | 3 | This provides test coverage for the PressSharper project - see that project for more notes. -------------------------------------------------------------------------------- /PointlessWaymarks.PressSharper/Attachment.cs: -------------------------------------------------------------------------------- 1 | namespace PointlessWaymarks.PressSharper; 2 | 3 | public class Attachment 4 | { 5 | public int Id { get; init; } 6 | public string Title { get; init; } = string.Empty; 7 | public string Url { get; init; } = string.Empty; 8 | } -------------------------------------------------------------------------------- /PointlessWaymarks.PressSharper/Author.cs: -------------------------------------------------------------------------------- 1 | namespace PointlessWaymarks.PressSharper; 2 | 3 | public class Author 4 | { 5 | public string DisplayName { get; init; } = string.Empty; 6 | public string Email { get; init; } = string.Empty; 7 | public int Id { get; init; } 8 | public string Username { get; init; } = string.Empty; 9 | } -------------------------------------------------------------------------------- /PointlessWaymarks.PressSharper/Category.cs: -------------------------------------------------------------------------------- 1 | namespace PointlessWaymarks.PressSharper; 2 | 3 | public class Category 4 | { 5 | public string Name { get; init; } = string.Empty; 6 | public string Slug { get; init; } = string.Empty; 7 | } -------------------------------------------------------------------------------- /PointlessWaymarks.PressSharper/Page.cs: -------------------------------------------------------------------------------- 1 | namespace PointlessWaymarks.PressSharper; 2 | 3 | public class Page 4 | { 5 | public Author? Author { get; init; } 6 | public string Body { get; init; } = string.Empty; 7 | public int Id { get; init; } 8 | public int? ParentId { get; init; } 9 | public DateTime PublishDate { get; init; } 10 | public string Slug { get; init; } = string.Empty; 11 | public string Title { get; init; } = string.Empty; 12 | } -------------------------------------------------------------------------------- /PointlessWaymarks.PressSharper/Post.cs: -------------------------------------------------------------------------------- 1 | namespace PointlessWaymarks.PressSharper; 2 | 3 | public class Post 4 | { 5 | public Author? Author { get; init; } 6 | public string Body { get; init; } = string.Empty; 7 | public List Categories { get; } = Enumerable.Empty().ToList(); 8 | public string Excerpt { get; init; } = string.Empty; 9 | public Attachment? FeaturedImage { get; set; } 10 | public DateTime? PublishDate { get; init; } 11 | public string Slug { get; init; } = string.Empty; 12 | public List Tags { get; } = Enumerable.Empty().ToList(); 13 | public string Title { get; init; } = string.Empty; 14 | } -------------------------------------------------------------------------------- /PointlessWaymarks.PressSharper/Tag.cs: -------------------------------------------------------------------------------- 1 | namespace PointlessWaymarks.PressSharper; 2 | 3 | public class Tag : Category 4 | { 5 | } -------------------------------------------------------------------------------- /PointlessWaymarks.PublishReadmeHelper/PointlessWaymarks.PublishReadmeHelper.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Exe 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /PointlessWaymarks.ScriptB64Runner/PointlessWaymarks.ScriptB64Runner.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Exe 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /PointlessWaymarks.SiteViewerGui/App.xaml: -------------------------------------------------------------------------------- 1 |  6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /PointlessWaymarks.SiteViewerGui/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Windows; 2 | 3 | [assembly: ThemeInfo( 4 | ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located 5 | //(used if a resource is not found in the page, 6 | // or application resource dictionaries) 7 | ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located 8 | //(used if a resource is not found in the page, 9 | // app, or any theme specific resource dictionaries) 10 | )] 11 | -------------------------------------------------------------------------------- /PointlessWaymarks.SiteViewerGui/JotServices.cs: -------------------------------------------------------------------------------- 1 | using System.Windows; 2 | using Jot; 3 | using WpfScreenHelper; 4 | 5 | namespace PointlessWaymarks.SiteViewerGui; 6 | 7 | internal static class JotServices 8 | { 9 | public static readonly Tracker Tracker = new(); 10 | 11 | static JotServices() 12 | { 13 | Tracker.Configure().Id(w => w.Name, SystemInformation.VirtualScreen.Size) 14 | .Properties(w => new 15 | { 16 | w.Top, 17 | w.Width, 18 | w.Height, 19 | w.Left, 20 | w.WindowState 21 | }).PersistOn(nameof(Window.Closing)).StopTrackingOn(nameof(Window.Closing)); 22 | } 23 | } -------------------------------------------------------------------------------- /PointlessWaymarks.SiteViewerGui/PointlessWaymarksSiteViewerIcon.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.SiteViewerGui/PointlessWaymarksSiteViewerIcon.bmp -------------------------------------------------------------------------------- /PointlessWaymarks.SiteViewerGui/PointlessWaymarksSiteViewerIcon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.SiteViewerGui/PointlessWaymarksSiteViewerIcon.ico -------------------------------------------------------------------------------- /PointlessWaymarks.SiteViewerGui/Properties/launchSettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "profiles": { 3 | "PointlessWaymarks.SiteViewerGui": { 4 | "commandName": "Project" 5 | } 6 | } 7 | } -------------------------------------------------------------------------------- /PointlessWaymarks.SiteViewerGui/SiteChooserControl.xaml.cs: -------------------------------------------------------------------------------- 1 | namespace PointlessWaymarks.SiteViewerGui; 2 | 3 | /// 4 | /// Interaction logic for ProjectChooserControl.xaml 5 | /// 6 | public partial class SiteChooserControl 7 | { 8 | public SiteChooserControl() 9 | { 10 | InitializeComponent(); 11 | } 12 | } -------------------------------------------------------------------------------- /PointlessWaymarks.SiteViewerGui/SiteChooserDataTemplateSelector.cs: -------------------------------------------------------------------------------- 1 | using System.Windows; 2 | using System.Windows.Controls; 3 | 4 | namespace PointlessWaymarks.SiteViewerGui; 5 | 6 | public class SiteChooserDataTemplateSelector : DataTemplateSelector 7 | { 8 | public DataTemplate? SiteDirectoryTemplate { get; set; } 9 | public DataTemplate? SiteSettingsFileTemplate { get; set; } 10 | 11 | public override DataTemplate? SelectTemplate(object? item, DependencyObject container) 12 | { 13 | return item switch 14 | { 15 | SiteSettingsFileListItem => SiteSettingsFileTemplate, 16 | SiteDirectoryListItem => SiteDirectoryTemplate, 17 | _ => null 18 | }; 19 | } 20 | } -------------------------------------------------------------------------------- /PointlessWaymarks.SiteViewerGui/SiteDirectoryListItem.cs: -------------------------------------------------------------------------------- 1 | using System.IO; 2 | using PointlessWaymarks.LlamaAspects; 3 | 4 | namespace PointlessWaymarks.SiteViewerGui; 5 | 6 | [NotifyPropertyChanged] 7 | public partial class SiteDirectoryListItem 8 | { 9 | public DirectoryInfo SiteDirectory { get; set; } 10 | } -------------------------------------------------------------------------------- /PointlessWaymarks.SiteViewerGui/SiteSettingsFileListItem.cs: -------------------------------------------------------------------------------- 1 | using System.IO; 2 | using PointlessWaymarks.CmsData; 3 | using PointlessWaymarks.LlamaAspects; 4 | 5 | namespace PointlessWaymarks.SiteViewerGui; 6 | 7 | [NotifyPropertyChanged] 8 | public partial class SiteSettingsFileListItem 9 | { 10 | public UserSettings ParsedSettings { get; set; } 11 | public FileInfo SettingsFile { get; set; } 12 | } -------------------------------------------------------------------------------- /PointlessWaymarks.SiteViewerGui/SiteViewerGuiSettings.cs: -------------------------------------------------------------------------------- 1 | using PointlessWaymarks.LlamaAspects; 2 | 3 | namespace PointlessWaymarks.SiteViewerGui; 4 | 5 | [NotifyPropertyChanged] 6 | public partial class SiteViewerGuiSettings 7 | { 8 | public string ProgramUpdateDirectory { get; set; } = @"https://software.pointlesswaymarks.com/Software/PointlessWaymarksSoftwareList.json"; 9 | } -------------------------------------------------------------------------------- /PointlessWaymarks.SiteViewerGui/SiteViewerInstallerLeftImage.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.SiteViewerGui/SiteViewerInstallerLeftImage.bmp -------------------------------------------------------------------------------- /PointlessWaymarks.SiteViewerGui/SiteViewerInstallerLeftImage.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.SiteViewerGui/SiteViewerInstallerLeftImage.psd -------------------------------------------------------------------------------- /PointlessWaymarks.SiteViewerGui/SiteViewerInstallerTopRightImage.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.SiteViewerGui/SiteViewerInstallerTopRightImage.bmp -------------------------------------------------------------------------------- /PointlessWaymarks.SiteViewerGui/SiteViewerInstallerTopRightImage.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.SiteViewerGui/SiteViewerInstallerTopRightImage.psd -------------------------------------------------------------------------------- /PointlessWaymarks.SiteViewerScreenShots/LocalSiteViewer.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.SiteViewerScreenShots/LocalSiteViewer.jpg -------------------------------------------------------------------------------- /PointlessWaymarks.UtilitarianImage/CombinerOrientation.cs: -------------------------------------------------------------------------------- 1 | namespace PointlessWaymarks.UtilitarianImage; 2 | 3 | public enum CombinerOrientation 4 | { 5 | Vertical, 6 | Horizontal, 7 | Grid 8 | } -------------------------------------------------------------------------------- /PointlessWaymarks.UtilitarianImage/ImageRotation.cs: -------------------------------------------------------------------------------- 1 | namespace PointlessWaymarks.UtilitarianImage; 2 | 3 | public enum ImageRotation 4 | { 5 | Right, 6 | Left, 7 | Flip 8 | } -------------------------------------------------------------------------------- /PointlessWaymarks.UtilitarianImage/PointlessWaymarks.UtilitarianImage.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /PointlessWaymarks.UtilitarianImageCombiner/Options.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace PointlessWaymarks.UtilitarianImageCombiner 8 | { 9 | internal class Options 10 | { 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /PointlessWaymarks.UtilitarianImageCombiner/Program.cs: -------------------------------------------------------------------------------- 1 | // See https://aka.ms/new-console-template for more information 2 | Console.WriteLine("Hello, World!"); 3 | -------------------------------------------------------------------------------- /PointlessWaymarks.UtilitarianImageCombinerGui/App.xaml: -------------------------------------------------------------------------------- 1 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /PointlessWaymarks.UtilitarianImageCombinerGui/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Windows; 2 | 3 | [assembly:ThemeInfo( 4 | ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located 5 | //(used if a resource is not found in the page, 6 | // or application resource dictionaries) 7 | ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located 8 | //(used if a resource is not found in the page, 9 | // app, or any theme specific resource dictionaries) 10 | )] 11 | -------------------------------------------------------------------------------- /PointlessWaymarks.UtilitarianImageCombinerGui/Controls/ColorNameAndSkColor.cs: -------------------------------------------------------------------------------- 1 | using SkiaSharp; 2 | 3 | namespace PointlessWaymarks.UtilitarianImageCombinerGui.Controls; 4 | 5 | public record ColorNameAndSkColor 6 | { 7 | public SKColor SkiaColor { get; set; } 8 | public required string ColorName { get; set; } 9 | public required string Color { get; set; } 10 | } -------------------------------------------------------------------------------- /PointlessWaymarks.UtilitarianImageCombinerGui/Controls/CombinerListControl.xaml.cs: -------------------------------------------------------------------------------- 1 | using System.Windows.Controls; 2 | 3 | namespace PointlessWaymarks.UtilitarianImageCombinerGui.Controls 4 | { 5 | /// 6 | /// Interaction logic for CombinerListControl.xaml 7 | /// 8 | public partial class CombinerListControl : UserControl 9 | { 10 | public CombinerListControl() 11 | { 12 | InitializeComponent(); 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /PointlessWaymarks.UtilitarianImageCombinerGui/Controls/WebPageAsJpegWindowImageSavedEventArgs.cs: -------------------------------------------------------------------------------- 1 | namespace PointlessWaymarks.UtilitarianImageCombinerGui.Controls; 2 | 3 | public class WebPageAsJpegWindowImageSavedEventArgs(string newFilename) : EventArgs 4 | { 5 | public string NewFilename { get; } = newFilename; 6 | } -------------------------------------------------------------------------------- /PointlessWaymarks.UtilitarianImageCombinerGui/ImageCombinerGuiSettings.cs: -------------------------------------------------------------------------------- 1 | using PointlessWaymarks.LlamaAspects; 2 | 3 | namespace PointlessWaymarks.UtilitarianImageCombinerGui; 4 | 5 | [NotifyPropertyChanged] 6 | public partial class ImageCombinerGuiSettings 7 | { 8 | public string? LastFileSourceDirectory { get; set; } = string.Empty; 9 | public string ProgramUpdateDirectory { get; set; } = @"https://software.pointlesswaymarks.com/Software/PointlessWaymarksSoftwareList.json"; 10 | public string SaveToDirectory { get; set; } = string.Empty; 11 | } -------------------------------------------------------------------------------- /PointlessWaymarks.UtilitarianImageCombinerGui/JotServices.cs: -------------------------------------------------------------------------------- 1 | using System.Windows; 2 | using Jot; 3 | using WpfScreenHelper; 4 | 5 | namespace PointlessWaymarks.UtilitarianImageCombinerGui; 6 | 7 | internal static class JotServices 8 | { 9 | public static readonly Tracker Tracker = new(); 10 | 11 | static JotServices() 12 | { 13 | Tracker.Configure().Id(w => w.Name, SystemInformation.VirtualScreen.Size) 14 | .Properties(w => new 15 | { 16 | w.Top, 17 | w.Width, 18 | w.Height, 19 | w.Left, 20 | w.WindowState 21 | }).PersistOn(nameof(Window.Closing)).StopTrackingOn(nameof(Window.Closing)); 22 | } 23 | } -------------------------------------------------------------------------------- /PointlessWaymarks.UtilitarianImageCombinerGui/UtilitarianImageCombinerGuiIcon.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.UtilitarianImageCombinerGui/UtilitarianImageCombinerGuiIcon.bmp -------------------------------------------------------------------------------- /PointlessWaymarks.UtilitarianImageCombinerGui/UtilitarianImageCombinerGuiIcon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.UtilitarianImageCombinerGui/UtilitarianImageCombinerGuiIcon.ico -------------------------------------------------------------------------------- /PointlessWaymarks.UtilitarianImageCombinerGui/UtilitarianImageCombinerInstallerLeftImage.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.UtilitarianImageCombinerGui/UtilitarianImageCombinerInstallerLeftImage.bmp -------------------------------------------------------------------------------- /PointlessWaymarks.UtilitarianImageCombinerGui/UtilitarianImageCombinerInstallerLeftImage.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.UtilitarianImageCombinerGui/UtilitarianImageCombinerInstallerLeftImage.psd -------------------------------------------------------------------------------- /PointlessWaymarks.UtilitarianImageCombinerGui/UtilitarianImageCombinerInstallerTopRightImage.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.UtilitarianImageCombinerGui/UtilitarianImageCombinerInstallerTopRightImage.bmp -------------------------------------------------------------------------------- /PointlessWaymarks.UtilitarianImageCombinerGui/UtilitarianImageCombinerInstallerTopRightImage.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.UtilitarianImageCombinerGui/UtilitarianImageCombinerInstallerTopRightImage.psd -------------------------------------------------------------------------------- /PointlessWaymarks.UtilitarianImageTests/TestImages/BlueBottom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.UtilitarianImageTests/TestImages/BlueBottom.png -------------------------------------------------------------------------------- /PointlessWaymarks.UtilitarianImageTests/TestImages/BlueTop.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.UtilitarianImageTests/TestImages/BlueTop.jpg -------------------------------------------------------------------------------- /PointlessWaymarks.UtilitarianImageTests/TestImages/CactusForestDrive.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.UtilitarianImageTests/TestImages/CactusForestDrive.pdf -------------------------------------------------------------------------------- /PointlessWaymarks.UtilitarianImageTests/TestImages/GreenBlueSquare.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.UtilitarianImageTests/TestImages/GreenBlueSquare.jpeg -------------------------------------------------------------------------------- /PointlessWaymarks.UtilitarianImageTests/TestImages/GreenDownLeftOfCenter.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.UtilitarianImageTests/TestImages/GreenDownLeftOfCenter.bmp -------------------------------------------------------------------------------- /PointlessWaymarks.UtilitarianImageTests/TestImages/GreenDownRightOfCenter.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.UtilitarianImageTests/TestImages/GreenDownRightOfCenter.gif -------------------------------------------------------------------------------- /PointlessWaymarks.UtilitarianImageTests/TestImages/Result-A-RotatedVertical.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.UtilitarianImageTests/TestImages/Result-A-RotatedVertical.jpg -------------------------------------------------------------------------------- /PointlessWaymarks.UtilitarianImageTests/TestImages/Result-B-RotatedHorizontal.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.UtilitarianImageTests/TestImages/Result-B-RotatedHorizontal.jpg -------------------------------------------------------------------------------- /PointlessWaymarks.UtilitarianImageTests/TestImages/Result-C-GridAutoRowsAndColumns.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.UtilitarianImageTests/TestImages/Result-C-GridAutoRowsAndColumns.jpg -------------------------------------------------------------------------------- /PointlessWaymarks.UtilitarianImageTests/TestImages/Result-D-GridFourColumns.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.UtilitarianImageTests/TestImages/Result-D-GridFourColumns.jpg -------------------------------------------------------------------------------- /PointlessWaymarks.UtilitarianImageTests/TestImages/Result-E-GridFiveRows.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.UtilitarianImageTests/TestImages/Result-E-GridFiveRows.jpg -------------------------------------------------------------------------------- /PointlessWaymarks.UtilitarianImageTests/TestImages/Result-F-GridThreeByThree.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmiles/PointlessWaymarksProject/e4795b9cb1534bca0d0bdcd92b471c19835acd48/PointlessWaymarks.UtilitarianImageTests/TestImages/Result-F-GridThreeByThree.jpg -------------------------------------------------------------------------------- /Publish-All.ps1: -------------------------------------------------------------------------------- 1 | $ErrorActionPreference = "Stop" 2 | .\Publish-ProgramToInnoSetupInstaller.ps1 CloudBackupGui 3 | .\Publish-ProgramToInnoSetupInstaller.ps1 CmsGui 4 | .\Publish-ProgramToInnoSetupInstaller.ps1 FeedReaderGui 5 | .\Publish-ProgramToInnoSetupInstaller.ps1 GeoToolsGui 6 | .\Publish-ProgramToInnoSetupInstaller.ps1 PowerShellRunnerGui 7 | .\Publish-ProgramToInnoSetupInstaller.ps1 SiteViewerGui 8 | .\Publish-ProgramToInnoSetupInstaller.ps1 UtilitarianImageCombinerGui 9 | .\Publish-ProgramToZip.ps1 CloudBackupRunner 10 | .\Publish-ProgramToZip.ps1 CmsTask.GarminConnectGpxImport 11 | .\Publish-ProgramToZip.ps1 CmsTask.MemoriesEmail 12 | .\Publish-ProgramToZip.ps1 CmsTask.PhotoPickup 13 | .\Publish-ProgramToZip.ps1 CmsTask.PublishSiteToS3 14 | -------------------------------------------------------------------------------- /Publish-Cms.ps1: -------------------------------------------------------------------------------- 1 | $ErrorActionPreference = "Stop" 2 | .\Publish-ProgramToInnoSetupInstaller.ps1 CmsGui 3 | .\Publish-ProgramToInnoSetupInstaller.ps1 SiteViewerGui 4 | .\Publish-ProgramToZip.ps1 CmsTask.GarminConnectGpxImport 5 | .\Publish-ProgramToZip.ps1 CmsTask.MemoriesEmail 6 | .\Publish-ProgramToZip.ps1 CmsTask.PhotoPickup 7 | .\Publish-ProgramToZip.ps1 CmsTask.PublishSiteToS3 8 | -------------------------------------------------------------------------------- /Tools-DeleteAllBinAndObj.ps1: -------------------------------------------------------------------------------- 1 | Get-ChildItem .\ -include bin,obj -Recurse | foreach ($_) { remove-item $_.fullname -Force -Recurse } -------------------------------------------------------------------------------- /Tools-FormatAllXaml.ps1: -------------------------------------------------------------------------------- 1 | xstyler -r -d .\ -------------------------------------------------------------------------------- /Tools-GetNugetLocal.ps1: -------------------------------------------------------------------------------- 1 | $sourceNugetExe = "https://dist.nuget.org/win-x86-commandline/latest/nuget.exe" 2 | $nugetExe = ".\nuget.exe" 3 | Invoke-WebRequest $sourceNugetExe -OutFile $nugetExe -------------------------------------------------------------------------------- /Tools-InstallGlobalTools.ps1: -------------------------------------------------------------------------------- 1 | dotnet tool install -g JetBrains.ReSharper.GlobalTools; 2 | dotnet tool install -g XamlStyler.Console; 3 | dotnet tool install -g metalama.tool; -------------------------------------------------------------------------------- /Tools-UpdateAllTools.ps1: -------------------------------------------------------------------------------- 1 | dotnet tool list -g | ForEach-Object {$index = 0} { $index++; if($index -gt 2) { dotnet tool update -g $_.split(" ")[0] } } -------------------------------------------------------------------------------- /global.json: -------------------------------------------------------------------------------- 1 | { 2 | "sdk": { 3 | "version": "8.0", 4 | "rollForward": "latestMinor", 5 | "allowPrerelease": true 6 | } 7 | } --------------------------------------------------------------------------------