├── .dockerignore ├── .github ├── FUNDING.yml ├── ISSUE_TEMPLATE │ ├── bug_report.md │ └── feature_request.md ├── dependabot.yml └── workflows │ ├── docker-publish.yml │ ├── dotnet-desktop.yml │ └── windows-store.yml ├── .gitignore ├── Dockerfile ├── LICENSE ├── Manual.docx ├── Privacy.md ├── README.md ├── SECURITY.md ├── Screenshots ├── connect.png ├── device.png ├── notebooks.png ├── settings.png ├── templates.png └── tools.png ├── Source ├── .dockerignore ├── .editorconfig ├── .gitignore ├── .idea │ └── .idea.Slithin │ │ └── .idea │ │ ├── .gitignore │ │ ├── .name │ │ ├── encodings.xml │ │ ├── indexLayout.xml │ │ └── vcs.xml ├── ApiConsole │ ├── ApiConsole.csproj │ ├── Commands │ │ ├── FilesCommand.cs │ │ ├── LoginCommand.cs │ │ ├── ScreensCommand.cs │ │ ├── ScriptsCommand.cs │ │ └── TemplatesCommand.cs │ ├── Core │ │ └── ICommand.cs │ ├── Program.cs │ ├── Properties │ │ └── launchSettings.json │ └── ServiceLocator.cs ├── New │ ├── MarketplaceService │ │ ├── Dockerfile │ │ ├── JwtTokenValidator.cs │ │ ├── MarketplaceService.csproj │ │ ├── Program.cs │ │ ├── Properties │ │ │ └── launchSettings.json │ │ ├── ProtoContoller.cs │ │ ├── Protos │ │ │ ├── Authentication.proto │ │ │ └── Storage.proto │ │ ├── Services │ │ │ ├── AuthenticationService.cs │ │ │ └── StorageService.cs │ │ ├── appsettings.Development.json │ │ └── appsettings.json │ ├── Models │ │ ├── Slithin.Entities.Remarkable │ │ │ ├── Rendering │ │ │ │ ├── BaseSizes.cs │ │ │ │ ├── Brushes.cs │ │ │ │ ├── Colors.cs │ │ │ │ ├── Layer.cs │ │ │ │ ├── Line.cs │ │ │ │ ├── Notebook.cs │ │ │ │ ├── Page.cs │ │ │ │ ├── Point.cs │ │ │ │ └── Ranges.cs │ │ │ └── Slithin.Entities.Remarkable.csproj │ │ ├── Slithin.Modules.BaseServices.Models │ │ │ ├── ICacheService.cs │ │ │ ├── IDeviceDiscovery.cs │ │ │ ├── IEventService.cs │ │ │ ├── IPathManager.cs │ │ │ └── Slithin.Modules.BaseServices.Models.csproj │ │ ├── Slithin.Modules.Device.Models │ │ │ ├── CommandResult.cs │ │ │ ├── CustomIniSerializer.cs │ │ │ ├── DevicePathList.cs │ │ │ ├── FileFetchResult.cs │ │ │ ├── IRemarkableDevice.cs │ │ │ ├── IXochitlService.cs │ │ │ └── Slithin.Modules.Device.Models.csproj │ │ ├── Slithin.Modules.Diagnostics.Sentry.Models │ │ │ ├── IDiagnosticService.cs │ │ │ ├── IFeedbackService.cs │ │ │ ├── PerformanceMonitor.cs │ │ │ └── Slithin.Modules.Diagnostics.Sentry.Models.csproj │ │ ├── Slithin.Modules.Export.Models │ │ │ ├── ExportDocument.cs │ │ │ ├── ExportOptions.cs │ │ │ ├── IExportProvider.cs │ │ │ ├── IExportProviderFactory.cs │ │ │ ├── IExportService.cs │ │ │ ├── IRenderingService.cs │ │ │ ├── PageRange.cs │ │ │ └── Slithin.Modules.Export.Models.csproj │ │ ├── Slithin.Modules.I18N.Models │ │ │ ├── ILocalisationService.cs │ │ │ ├── Slithin.Modules.I18N.Models.csproj │ │ │ └── ValidationExtensions.cs │ │ ├── Slithin.Modules.Import.Models │ │ │ ├── IImportProvider.cs │ │ │ ├── IImportProviderFactory.cs │ │ │ ├── ImportProviderBaseTypeAttribute.cs │ │ │ └── Slithin.Modules.Import.Models.csproj │ │ ├── Slithin.Modules.Menu.Models │ │ │ ├── ContextualMenu │ │ │ │ ├── ContextualElement.cs │ │ │ │ ├── ContextualElements │ │ │ │ │ ├── ContextualButton.cs │ │ │ │ │ └── ContextualDropDownButton.cs │ │ │ │ ├── ContextualRegistrar.cs │ │ │ │ ├── IContextualMenuBuilder.cs │ │ │ │ ├── IContextualMenuProvider.cs │ │ │ │ └── IContextualMenuRegistrar.cs │ │ │ ├── IContextMenuProvider.cs │ │ │ ├── ItemContext │ │ │ │ ├── CommandBasedContextMenu.cs │ │ │ │ ├── ContextAttribute.cs │ │ │ │ ├── IContextCommand.cs │ │ │ │ ├── IContextProvider.cs │ │ │ │ ├── UIContext.cs │ │ │ │ └── UIContextMenuBuilder.cs │ │ │ ├── Menu │ │ │ │ ├── IPage.cs │ │ │ │ ├── PageIconAttribute.cs │ │ │ │ └── PreserveIndexAttribute.cs │ │ │ ├── Slithin.Modules.Menu.Models.csproj │ │ │ └── XmlNsDefinitions.cs │ │ ├── Slithin.Modules.Notebooks.UI.Models │ │ │ ├── DirectoryModel.cs │ │ │ ├── FileModel.cs │ │ │ ├── FilesystemModel.cs │ │ │ ├── IThumbnailLoader.cs │ │ │ ├── Slithin.Modules.Notebooks.UI.Models.csproj │ │ │ ├── TrashModel.cs │ │ │ └── UpDirectoryModel.cs │ │ ├── Slithin.Modules.Repository.Models │ │ │ ├── DatabaseAccessor.cs │ │ │ ├── IDatabaseService.cs │ │ │ ├── ILoadingService.cs │ │ │ ├── ILoginService.cs │ │ │ ├── IMetadataRepository.cs │ │ │ ├── IRepository.cs │ │ │ ├── ITemplateStorage.cs │ │ │ ├── IVersionService.cs │ │ │ └── Slithin.Modules.Repository.Models.csproj │ │ ├── Slithin.Modules.Resources.Models │ │ │ ├── AssetModel.cs │ │ │ ├── Grant.cs │ │ │ ├── IMarketplaceAPIService.cs │ │ │ ├── MarketplaceUser.cs │ │ │ ├── Screen.cs │ │ │ ├── Script.cs │ │ │ ├── Sharable.cs │ │ │ ├── Slithin.Modules.Resources.Models.csproj │ │ │ ├── Template.cs │ │ │ ├── UploadRequest.cs │ │ │ └── User.cs │ │ ├── Slithin.Modules.Settings.Models │ │ │ ├── Builder │ │ │ │ ├── Attributes │ │ │ │ │ ├── DisplaySettingsAttribute.cs │ │ │ │ │ ├── SelectionAttribute.cs │ │ │ │ │ ├── SettingsAttribute.cs │ │ │ │ │ └── ToggleAttribute.cs │ │ │ │ ├── ISettingsControlProvider.cs │ │ │ │ └── ISettingsUIBuilder.cs │ │ │ ├── IScreenRememberService.cs │ │ │ ├── ISettingsService.cs │ │ │ ├── SavableSettingsModel.cs │ │ │ ├── SettingExtension.cs │ │ │ ├── SettingsModel.cs │ │ │ └── Slithin.Modules.Settings.Models.csproj │ │ ├── Slithin.Modules.Sync.Models │ │ │ ├── ISynchronizeService.cs │ │ │ ├── NotebooksFilter.cs │ │ │ ├── Slithin.Modules.Sync.Models.csproj │ │ │ ├── SyncNotebook.cs │ │ │ └── TemplateFilter.cs │ │ ├── Slithin.Modules.Tools.Models │ │ │ ├── ITool.cs │ │ │ ├── IToolInvokerService.cs │ │ │ ├── Slithin.Modules.Tools.Models.csproj │ │ │ ├── ToolInfo.cs │ │ │ └── ToolProperties.cs │ │ └── Slithin.Modules.Updater.Models │ │ │ ├── IUpdater.cs │ │ │ ├── Slithin.Modules.Updater.Models.csproj │ │ │ └── ViewModels │ │ │ └── ItemViewModel.cs │ ├── Modules │ │ ├── Slithin.Modules.Backup │ │ │ ├── BackUpTool.cs │ │ │ ├── Models │ │ │ │ └── BackupModel.cs │ │ │ ├── Module.cs │ │ │ ├── Resources │ │ │ │ ├── backup.png │ │ │ │ └── restore.png │ │ │ ├── RestoreTool.cs │ │ │ ├── SelectBackupModal.axaml │ │ │ ├── SelectBackupModal.axaml.cs │ │ │ ├── Slithin.Modules.Backup.csproj │ │ │ └── ViewModels │ │ │ │ └── SelectBackupViewModel.cs │ │ ├── Slithin.Modules.BaseServices │ │ │ ├── CacheServiceImpl.cs │ │ │ ├── DeviceDiscoveryImpl.cs │ │ │ ├── EventServiceImpl.cs │ │ │ ├── LoggerImpl.cs │ │ │ ├── Module.cs │ │ │ ├── PathManagerImpl.cs │ │ │ └── Slithin.Modules.BaseServices.csproj │ │ ├── Slithin.Modules.Device.Mock │ │ │ ├── MockDevice.cs │ │ │ ├── Module.cs │ │ │ ├── Slithin.Modules.Device.Mock.csproj │ │ │ ├── XochitlImpl.cs │ │ │ └── device.zip │ │ ├── Slithin.Modules.Device.UI │ │ │ ├── ContextualMenuProvider.cs │ │ │ ├── DevicePage.axaml │ │ │ ├── DevicePage.axaml.cs │ │ │ ├── Models │ │ │ │ └── CustomScreen.cs │ │ │ ├── Module.cs │ │ │ ├── Resources │ │ │ │ ├── DefaultScreens │ │ │ │ │ ├── batteryempty.png │ │ │ │ │ ├── lowbattery.png │ │ │ │ │ ├── poweroff.png │ │ │ │ │ ├── rebooting.png │ │ │ │ │ ├── splash.png │ │ │ │ │ ├── starting.png │ │ │ │ │ └── suspended.png │ │ │ │ └── Icons.xml │ │ │ ├── Slithin.Modules.Device.UI.csproj │ │ │ └── ViewModels │ │ │ │ └── DevicePageViewModel.cs │ │ ├── Slithin.Modules.Device │ │ │ ├── DeviceImplementation.cs │ │ │ ├── Module.cs │ │ │ ├── Slithin.Modules.Device.csproj │ │ │ └── XochitlImpl.cs │ │ ├── Slithin.Modules.Diagnostics.Sentry │ │ │ ├── DiagnosticService.cs │ │ │ ├── FeedbackService.cs │ │ │ ├── Module.cs │ │ │ ├── SettingsModel.cs │ │ │ └── Slithin.Modules.Diagnostics.Sentry.csproj │ │ ├── Slithin.Modules.Export │ │ │ ├── Commands │ │ │ │ └── ExportCommand.cs │ │ │ ├── ContextualMenuProvider.cs │ │ │ ├── ExportModal.axaml │ │ │ ├── ExportModal.axaml.cs │ │ │ ├── ExportProviderFactoryImpl.cs │ │ │ ├── ExportServiceImpl.cs │ │ │ ├── Exporters │ │ │ │ ├── EpubExporter.cs │ │ │ │ ├── PdfExporter.cs │ │ │ │ ├── PngExporter.cs │ │ │ │ └── SvgExporter.cs │ │ │ ├── Module.cs │ │ │ ├── Rendering │ │ │ │ ├── RenderingServiceImpl.Png.cs │ │ │ │ └── RenderingServiceImpl.Svg.cs │ │ │ ├── Slithin.Modules.Export.csproj │ │ │ ├── Validators │ │ │ │ └── ExportValidator.cs │ │ │ └── ViewModels │ │ │ │ └── ExportModalViewModel.cs │ │ ├── Slithin.Modules.FirstStart │ │ │ ├── FirstStartWindow.axaml │ │ │ ├── FirstStartWindow.axaml.cs │ │ │ ├── Module.cs │ │ │ ├── Resources │ │ │ │ └── Icon.png │ │ │ ├── Slithin.Modules.FirstStart.csproj │ │ │ ├── StepManager.cs │ │ │ ├── Steps │ │ │ │ ├── DeviceStep.axaml │ │ │ │ ├── DeviceStep.axaml.cs │ │ │ │ ├── FinishStep.axaml │ │ │ │ ├── FinishStep.axaml.cs │ │ │ │ ├── SettingsStep.axaml │ │ │ │ ├── SettingsStep.axaml.cs │ │ │ │ ├── WelcomeStep.axaml │ │ │ │ └── WelcomeStep.axaml.cs │ │ │ └── ViewModels │ │ │ │ ├── DeviceStepViewModel.cs │ │ │ │ ├── FirstStartViewModel.cs │ │ │ │ ├── LoginInfoViewModel.cs │ │ │ │ └── SettingsViewModel.cs │ │ ├── Slithin.Modules.I18N │ │ │ ├── LocalisationServiceImpl.cs │ │ │ ├── Module.cs │ │ │ ├── Resources │ │ │ │ └── Locales │ │ │ │ │ ├── de.json │ │ │ │ │ ├── en.json │ │ │ │ │ ├── eo.json │ │ │ │ │ ├── fi.json │ │ │ │ │ ├── fr.json │ │ │ │ │ └── sv.json │ │ │ ├── Slithin.Modules.I18N.csproj │ │ │ └── strings.json │ │ ├── Slithin.Modules.Import │ │ │ ├── ImportProviderFactoryImpl.cs │ │ │ ├── Module.cs │ │ │ ├── Providers │ │ │ │ ├── ImageImportProvider.cs │ │ │ │ ├── NotebookImportProvider.cs │ │ │ │ └── PngImportProvider.cs │ │ │ └── Slithin.Modules.Import.csproj │ │ ├── Slithin.Modules.Menu │ │ │ ├── ContextMenuProviderImpl.cs │ │ │ ├── ContextualMenuBuilderImpl.cs │ │ │ ├── Module.cs │ │ │ ├── Resources │ │ │ │ └── DataTemplates.xml │ │ │ ├── Slithin.Modules.Menu.csproj │ │ │ └── Views │ │ │ │ ├── DefaultContextualMenu.axaml │ │ │ │ ├── DefaultContextualMenu.axaml.cs │ │ │ │ ├── EmptyContextualMenu.axaml │ │ │ │ └── EmptyContextualMenu.axaml.cs │ │ ├── Slithin.Modules.Notebooks.UI │ │ │ ├── Commands │ │ │ │ ├── ContextCommands │ │ │ │ │ ├── BackupContextCommand.cs │ │ │ │ │ ├── ConvertQuicksheetToNotebookContextCommand.cs │ │ │ │ │ ├── CopyIDContextCommand.cs │ │ │ │ │ ├── MoveToTrashContextCommand.cs │ │ │ │ │ └── RestoreNotebookContextCommand.cs │ │ │ │ ├── EmptyTrashContextCommand.cs │ │ │ │ ├── MakeFolderCommand.cs │ │ │ │ ├── PinContextCommand.cs │ │ │ │ ├── RemoveNotebookCommand.cs │ │ │ │ ├── RenameCommand.cs │ │ │ │ └── UnPinCommand.cs │ │ │ ├── ContextualMenuProvider.cs │ │ │ ├── Module.cs │ │ │ ├── Resources │ │ │ │ ├── Icons.axaml │ │ │ │ ├── Icons.xml │ │ │ │ ├── notebook.png │ │ │ │ └── pdf.png │ │ │ ├── Slithin.Modules.Notebooks.UI.csproj │ │ │ ├── UI │ │ │ │ ├── NotebookDataTemplate.cs │ │ │ │ ├── NotebooksPage.axaml │ │ │ │ ├── NotebooksPage.axaml.cs │ │ │ │ ├── NotebooksView.cs │ │ │ │ ├── ViewDropDown.axaml │ │ │ │ └── ViewDropDown.axaml.cs │ │ │ └── ViewModels │ │ │ │ └── NotebooksPageViewModel.cs │ │ ├── Slithin.Modules.PdfNotebookTools │ │ │ ├── Models │ │ │ │ ├── NotebookCustomPage.cs │ │ │ │ └── NotebookPage.cs │ │ │ ├── Module.cs │ │ │ ├── NotebookAppendTool.cs │ │ │ ├── NotebookCreationTool.cs │ │ │ ├── NotebookPageDataTemplate.cs │ │ │ ├── Resources │ │ │ │ ├── Cover.png │ │ │ │ ├── Covers │ │ │ │ │ ├── Folder-DBlue.png │ │ │ │ │ ├── Folder-Green.png │ │ │ │ │ ├── Folder-Grey.png │ │ │ │ │ ├── Folder-LBlue.png │ │ │ │ │ ├── Folder-Lime.png │ │ │ │ │ ├── Folder-Orange.png │ │ │ │ │ ├── Folder-Pink.png │ │ │ │ │ ├── Folder-Purple.png │ │ │ │ │ ├── Folder-Red.png │ │ │ │ │ ├── Folder-Turquoise.png │ │ │ │ │ ├── Folder-White.png │ │ │ │ │ └── Folder-Yellow.png │ │ │ │ └── pdf_append.png │ │ │ ├── Slithin.Modules.PdfNotebookTools.csproj │ │ │ ├── Validators │ │ │ │ ├── AppendNotebookValidator.cs │ │ │ │ └── CreateNotebookValidator.cs │ │ │ ├── ViewModels │ │ │ │ ├── AppendNotebookModalViewModel.cs │ │ │ │ └── CreateNotebookModalViewModel.cs │ │ │ └── Views │ │ │ │ ├── AppendNotebookModal.axaml │ │ │ │ ├── AppendNotebookModal.axaml.cs │ │ │ │ ├── CreateNotebookModal.axaml │ │ │ │ └── CreateNotebookModal.axaml.cs │ │ ├── Slithin.Modules.Repository │ │ │ ├── DatabaseServiceImpl.cs │ │ │ ├── LoadingServiceImpl.cs │ │ │ ├── LocalRepository.cs │ │ │ ├── LoginServiceImpl.cs │ │ │ ├── MetadataRepositoryImpl.cs │ │ │ ├── Module.cs │ │ │ ├── Slithin.Modules.Repository.csproj │ │ │ ├── TemplateStorageImpl.cs │ │ │ ├── ThumbnailLoaderImpl.cs │ │ │ └── VersionServiceImpl.cs │ │ ├── Slithin.Modules.Resources.UI │ │ │ ├── AuthenticationResult.cs │ │ │ ├── LoginModal.axaml │ │ │ ├── LoginModal.axaml.cs │ │ │ ├── MarketplaceAPI.cs │ │ │ ├── Module.cs │ │ │ ├── Pages │ │ │ │ ├── ListPage.axaml │ │ │ │ ├── ListPage.axaml.cs │ │ │ │ ├── LoginFramePage.axaml │ │ │ │ ├── LoginFramePage.axaml.cs │ │ │ │ ├── RegisterFramePage.axaml │ │ │ │ ├── RegisterFramePage.axaml.cs │ │ │ │ ├── ResourcesMainPage.axaml │ │ │ │ └── ResourcesMainPage.axaml.cs │ │ │ ├── Resources │ │ │ │ └── Icons.xml │ │ │ ├── ResourcesPage.axaml │ │ │ ├── ResourcesPage.axaml.cs │ │ │ ├── Slithin.Modules.Resources.UI.csproj │ │ │ └── ViewModels │ │ │ │ ├── LoginModalViewModel.cs │ │ │ │ ├── ResourceListViewModel.cs │ │ │ │ └── ResourcesPageViewModel.cs │ │ ├── Slithin.Modules.Settings.UI │ │ │ ├── Builder │ │ │ │ ├── ControlProviders │ │ │ │ │ ├── DateTimeProvider.cs │ │ │ │ │ ├── EnumProvider.cs │ │ │ │ │ ├── SelectionProvider.cs │ │ │ │ │ ├── TextProvider.cs │ │ │ │ │ ├── TimeProvider.cs │ │ │ │ │ └── ToggleProvider.cs │ │ │ │ └── SettingsUIBuilderImpl.cs │ │ │ ├── Commands │ │ │ │ ├── AboutCommand.cs │ │ │ │ ├── BuyCoffeeCommand.cs │ │ │ │ ├── FeedbackCommand.cs │ │ │ │ └── ShowDonationButtonsCommand.cs │ │ │ ├── ContextualMenuProvider.cs │ │ │ ├── FeedbackWindow.axaml │ │ │ ├── FeedbackWindow.axaml.cs │ │ │ ├── Icon.png │ │ │ ├── Modals │ │ │ │ ├── AboutModal.axaml │ │ │ │ ├── AboutModal.axaml.cs │ │ │ │ ├── SupportModal.axaml │ │ │ │ └── SupportModal.axaml.cs │ │ │ ├── Module.cs │ │ │ ├── Resources │ │ │ │ └── Icons.xml │ │ │ ├── ScreenRememberServiceImpl.cs │ │ │ ├── SettingModels │ │ │ │ ├── AppeareanceSettingsModel.cs │ │ │ │ ├── BehaviorSettingsModel.cs │ │ │ │ └── DeviceSettingsModel.cs │ │ │ ├── SettingsPage.axaml │ │ │ ├── SettingsPage.axaml.cs │ │ │ ├── SettingsServiceImpl.cs │ │ │ ├── Slithin.Modules.Settings.UI.csproj │ │ │ └── ViewModels │ │ │ │ ├── FeedbackViewModel.cs │ │ │ │ └── SettingsPageViewModel.cs │ │ ├── Slithin.Modules.Sync │ │ │ ├── Module.cs │ │ │ ├── Slithin.Modules.Sync.csproj │ │ │ └── SynchronizeImpl.cs │ │ ├── Slithin.Modules.TemplateCreator │ │ │ ├── Module.cs │ │ │ ├── NodeZoomBorder.cs │ │ │ ├── Slithin.Modules.TemplateCreator.csproj │ │ │ ├── TemplateEditorControl.axaml │ │ │ ├── TemplateEditorControl.axaml.cs │ │ │ └── TemplateEditorTool.cs │ │ ├── Slithin.Modules.Templates.UI │ │ │ ├── AddTemplateModal.axaml │ │ │ ├── AddTemplateModal.axaml.cs │ │ │ ├── Commands │ │ │ │ └── RemoveTemplateCommand.cs │ │ │ ├── ContextualMenuProvider.cs │ │ │ ├── FilterPopup.axaml │ │ │ ├── FilterPopup.axaml.cs │ │ │ ├── Models │ │ │ │ └── IconCodeItem.cs │ │ │ ├── Module.cs │ │ │ ├── Resources │ │ │ │ ├── IconTiles │ │ │ │ │ ├── e970.png │ │ │ │ │ ├── e975.png │ │ │ │ │ ├── e976.png │ │ │ │ │ ├── e977.png │ │ │ │ │ ├── e978.png │ │ │ │ │ ├── e979.png │ │ │ │ │ ├── e97b.png │ │ │ │ │ ├── e982.png │ │ │ │ │ ├── e98c.png │ │ │ │ │ ├── e98d.png │ │ │ │ │ ├── e98e.png │ │ │ │ │ ├── e98f.png │ │ │ │ │ ├── e990.png │ │ │ │ │ ├── e991.png │ │ │ │ │ ├── e993.png │ │ │ │ │ ├── e994.png │ │ │ │ │ ├── e995.png │ │ │ │ │ ├── e996.png │ │ │ │ │ ├── e997.png │ │ │ │ │ ├── e999.png │ │ │ │ │ ├── e99a.png │ │ │ │ │ ├── e99b.png │ │ │ │ │ ├── e99c.png │ │ │ │ │ ├── e99d.png │ │ │ │ │ ├── e99e.png │ │ │ │ │ ├── e99f.png │ │ │ │ │ ├── e9a0.png │ │ │ │ │ ├── e9a1.png │ │ │ │ │ ├── e9a5.png │ │ │ │ │ ├── e9a6.png │ │ │ │ │ ├── e9a7.png │ │ │ │ │ ├── e9a8.png │ │ │ │ │ ├── e9a9.png │ │ │ │ │ ├── e9aa.png │ │ │ │ │ ├── e9ab.png │ │ │ │ │ ├── e9ac.png │ │ │ │ │ ├── e9ad.png │ │ │ │ │ ├── e9b2.png │ │ │ │ │ ├── e9b4.png │ │ │ │ │ ├── e9b5.png │ │ │ │ │ ├── e9b6.png │ │ │ │ │ ├── e9b7.png │ │ │ │ │ ├── e9b8.png │ │ │ │ │ ├── e9b9.png │ │ │ │ │ ├── e9ba.png │ │ │ │ │ ├── e9bb.png │ │ │ │ │ ├── e9bc.png │ │ │ │ │ ├── e9c0.png │ │ │ │ │ ├── e9c5.png │ │ │ │ │ ├── e9c8.png │ │ │ │ │ ├── e9c9.png │ │ │ │ │ ├── e9ca.png │ │ │ │ │ ├── e9cb.png │ │ │ │ │ ├── e9cc.png │ │ │ │ │ ├── e9cd.png │ │ │ │ │ ├── e9ce.png │ │ │ │ │ ├── e9cf.png │ │ │ │ │ ├── e9d0.png │ │ │ │ │ ├── e9d1.png │ │ │ │ │ ├── e9d2.png │ │ │ │ │ ├── e9d3.png │ │ │ │ │ ├── e9d4.png │ │ │ │ │ ├── e9d5.png │ │ │ │ │ ├── e9d6.png │ │ │ │ │ ├── e9d7.png │ │ │ │ │ ├── e9d8.png │ │ │ │ │ ├── e9d9.png │ │ │ │ │ ├── e9da.png │ │ │ │ │ ├── e9db.png │ │ │ │ │ ├── e9dc.png │ │ │ │ │ ├── e9f8.png │ │ │ │ │ ├── e9f9.png │ │ │ │ │ ├── e9fa.png │ │ │ │ │ ├── e9fb.png │ │ │ │ │ ├── e9fc.png │ │ │ │ │ ├── e9fd.png │ │ │ │ │ ├── e9fe.png │ │ │ │ │ ├── e9ff.png │ │ │ │ │ └── ea00.png │ │ │ │ ├── Icons.axaml │ │ │ │ └── Icons.xml │ │ │ ├── Slithin.Modules.Templates.UI.csproj │ │ │ ├── TemplatesPage.axaml │ │ │ ├── TemplatesPage.axaml.cs │ │ │ ├── Validators │ │ │ │ └── AddTemplateValidator.cs │ │ │ └── ViewModels │ │ │ │ ├── AddTemplateModalViewModel.cs │ │ │ │ └── TemplatesPageViewModel.cs │ │ ├── Slithin.Modules.Tools.UI │ │ │ ├── ContextualMenuProvider.cs │ │ │ ├── Models │ │ │ │ └── ToolsFilter.cs │ │ │ ├── Module.cs │ │ │ ├── Resources │ │ │ │ ├── Icons.axaml │ │ │ │ └── Icons.xml │ │ │ ├── Slithin.Modules.Tools.UI.csproj │ │ │ ├── ToolsContextualMenu.axaml │ │ │ ├── ToolsContextualMenu.axaml.cs │ │ │ ├── ToolsPage.axaml │ │ │ ├── ToolsPage.axaml.cs │ │ │ └── ViewModels │ │ │ │ └── ToolsPageViewModel.cs │ │ ├── Slithin.Modules.Tools │ │ │ ├── Module.cs │ │ │ ├── Slithin.Modules.Tools.csproj │ │ │ └── ToolInvokerServiceImpl.cs │ │ ├── Slithin.Modules.UI │ │ │ ├── Implementations │ │ │ │ ├── DialogServiceImpl.cs │ │ │ │ └── NotificationServiceImpl.cs │ │ │ ├── Modals │ │ │ │ ├── PromptModal.axaml │ │ │ │ ├── PromptModal.axaml.cs │ │ │ │ ├── ShowDialogModal.axaml │ │ │ │ ├── ShowDialogModal.axaml.cs │ │ │ │ ├── StatusModal.axaml │ │ │ │ └── StatusModal.axaml.cs │ │ │ ├── Module.cs │ │ │ ├── Slithin.Modules.UI.csproj │ │ │ ├── StatusController.cs │ │ │ ├── ViewModels │ │ │ │ ├── PromptModalViewModel.cs │ │ │ │ └── ShowDialogModalViewModel.cs │ │ │ └── loading_animation.json │ │ └── Slithin.Modules.Updater │ │ │ ├── Module.cs │ │ │ ├── ObservableQueue.cs │ │ │ ├── Resources │ │ │ └── Icons.xml │ │ │ ├── Slithin.Modules.Updater.csproj │ │ │ ├── UpdateRepository.cs │ │ │ ├── UpdaterImplementation.cs │ │ │ ├── UpdaterWindow.axaml │ │ │ ├── UpdaterWindow.axaml.cs │ │ │ └── ViewModels │ │ │ └── UpdaterViewModel.cs │ ├── Slithin.Core │ │ ├── Debouncer.cs │ │ ├── FeatureToggle │ │ │ ├── Feature.cs │ │ │ ├── FeatureEnabledExtension.cs │ │ │ ├── Features.cs │ │ │ └── IFeature.cs │ │ ├── FilterBase.cs │ │ ├── IFilterable.cs │ │ ├── KeyGenerator.cs │ │ ├── LocalisationExtension.cs │ │ ├── MVVM │ │ │ ├── BaseViewModel.cs │ │ │ ├── DelegateCommand.cs │ │ │ ├── ModalBaseViewModel.cs │ │ │ └── NotifyObject.cs │ │ ├── OpenLinkExtension.cs │ │ ├── Slithin.Core.csproj │ │ ├── Utils.cs │ │ └── ValidationExtensions.cs │ ├── Slithin.Entities │ │ ├── Features │ │ │ ├── DarkModeFeature.cs │ │ │ ├── ExportEpubFeature.cs │ │ │ ├── ListViewFeature.cs │ │ │ ├── ResourcesFeature.cs │ │ │ └── TemplateEditorFeature.cs │ │ ├── IPAddress.cs │ │ ├── LoginInfo.cs │ │ ├── Page.cs │ │ ├── Remarkable │ │ │ ├── ContentFile.cs │ │ │ ├── Metadata.cs │ │ │ ├── PageData.cs │ │ │ └── Template.cs │ │ └── Slithin.Entities.csproj │ ├── Slithin.UpdateInstaller │ │ ├── .gitignore │ │ ├── Program.cs │ │ └── Slithin.UpdateInstaller.csproj │ └── Slithin │ │ ├── App.axaml │ │ ├── App.axaml.cs │ │ ├── Assets │ │ └── Icons.axaml │ │ ├── Changelog.txt │ │ ├── Icon.ico │ │ ├── Icon.png │ │ ├── MainWindow.axaml │ │ ├── MainWindow.axaml.cs │ │ ├── Module.cs │ │ ├── Program.cs │ │ ├── Resources │ │ ├── Cover.png │ │ ├── Icon.ico │ │ ├── Icon.png │ │ ├── copy.png │ │ ├── cubes.png │ │ ├── data-transfer.png │ │ ├── epub.png │ │ ├── error.png │ │ ├── nav.png │ │ └── new_logo.png │ │ ├── Slithin.csproj │ │ ├── Validators │ │ └── LoginInfoValidator.cs │ │ ├── ViewModels │ │ ├── AddDeviceWindowViewModel.cs │ │ ├── ConnectWindowViewModel.cs │ │ └── MainWindowViewModel.cs │ │ ├── Views │ │ ├── AddDeviceWindow.axaml │ │ ├── AddDeviceWindow.axaml.cs │ │ ├── ConnectWindow.axaml │ │ ├── ConnectWindow.axaml.cs │ │ └── ContextualMenus │ │ │ ├── EmptyContextualMenu.axaml │ │ │ └── EmptyContextualMenu.axaml.cs │ │ └── linux.desktop ├── Slithin.Controls │ ├── CommandTextBox.cs │ ├── ContentDialog.cs │ ├── DialogControl.cs │ ├── FileChooser.cs │ ├── GalleryControl.cs │ ├── ImageButton.cs │ ├── ImagePopupButton.cs │ ├── KryptoDonateButton.cs │ ├── Link.cs │ ├── LottieViewer.cs │ ├── Navigation │ │ ├── EntranceNavigationTransitionInfo.cs │ │ ├── Frame.cs │ │ ├── Frame.properties.cs │ │ ├── FrameNavigationOptions.cs │ │ ├── NavigatingCancelEventArgs.cs │ │ ├── NavigationEventArgs.cs │ │ ├── NavigationFailedEventArgs.cs │ │ ├── NavigationMode.cs │ │ ├── NavigationTransitionInfo.cs │ │ └── PageStackEntry.cs │ ├── NodeZoomBorder.cs │ ├── Notifications │ │ ├── ActionNotificationControl.axaml │ │ ├── ActionNotificationControl.axaml.cs │ │ ├── StatusNotificationControl.axaml │ │ └── StatusNotificationControl.axaml.cs │ ├── Ports │ │ ├── Extensions │ │ │ ├── TreeExtensions.cs │ │ │ └── VectorExtension.cs │ │ ├── Panels │ │ │ ├── RegularItemsControl.cs │ │ │ ├── SimpleItemsControl.cs │ │ │ └── SimplePanel.cs │ │ ├── RatingControl │ │ │ ├── RateItem.cs │ │ │ └── RatingControl.cs │ │ ├── ResizeRotateControl │ │ │ ├── DoubleFormatConverter.cs │ │ │ ├── MoveThumb.cs │ │ │ ├── PositionChangedEventArgs.cs │ │ │ ├── ResizeRotateControl.Attributes.cs │ │ │ ├── ResizeRotateControl.cs │ │ │ ├── ResizeThumb.cs │ │ │ ├── RotateThumb.cs │ │ │ └── RotatedEventArgs.cs │ │ ├── RoutedEventArgsOfT.cs │ │ ├── RoutedPropertyChangedEventArgs.cs │ │ └── StepBar │ │ │ ├── StepBar.cs │ │ │ ├── StepBarItem.cs │ │ │ └── StepStatus.cs │ ├── PreviewImageControl.cs │ ├── RadioButtonGroup.cs │ ├── RadioImage.cs │ ├── Settings │ │ └── SettingsGroup.cs │ ├── Slithin.Controls.csproj │ ├── Step.cs │ ├── StepManager.cs │ ├── StoreCardCollection.cs │ ├── TagControl.cs │ ├── Theme │ │ ├── Generic.axaml │ │ └── Styles │ │ │ ├── CommandTextBox.axaml │ │ │ ├── ContentDialogStyle.axaml │ │ │ ├── DialogControlStyle.axaml │ │ │ ├── FileChooser.axaml │ │ │ ├── FirstWindowCardStyle.axaml │ │ │ ├── FrameStyles.axaml │ │ │ ├── ImageButton.axaml │ │ │ ├── ImagePopupButtonStyle.axaml │ │ │ ├── Marketplace │ │ │ ├── GalleryControl.axaml │ │ │ └── StoreCardCollection.axaml │ │ │ ├── Ports │ │ │ ├── RateItem.axaml │ │ │ ├── RatingControl.axaml │ │ │ ├── StepBar.axaml │ │ │ └── StepBarItem.axaml │ │ │ ├── PreviewImageControl.axaml │ │ │ ├── RadioButtonGroup.axaml │ │ │ ├── RadioButtonGroup.axaml.cs │ │ │ ├── RadioImage.axaml │ │ │ ├── Settings │ │ │ ├── KryptoDonateButton.axaml │ │ │ └── SettingsGroup.axaml │ │ │ ├── System │ │ │ ├── ButtonStyle.axaml │ │ │ ├── IndicatorStyle.axaml │ │ │ ├── LinkStyle.axaml │ │ │ ├── NotificationCard.axaml │ │ │ └── SplitViewStyle.axaml │ │ │ └── TagControl.axaml │ └── XmlNsDefinition.cs ├── Slithin.Modules.UI │ ├── DialogHost.cs │ ├── DialogServiceExtensions.cs │ ├── IDialogService.cs │ ├── INotificationService.cs │ ├── IStatusController.cs │ └── Slithin.Modules.UI.Models.csproj ├── Slithin.sln ├── Slithin │ ├── .gitignore │ ├── Core │ │ └── Sync │ │ │ ├── IRepository.cs │ │ │ └── Repositorys │ │ │ ├── DeviceRepository.cs │ │ │ └── LocalRepository.cs │ ├── Icon.png │ ├── Properties │ │ └── launchSettings.json │ ├── Slithin.csproj │ └── Validators │ │ ├── AddTemplateValidator.cs │ │ ├── AppendNotebookValidator.cs │ │ ├── CreateNotebookValidator.cs │ │ ├── ExportValidator.cs │ │ └── LoginInfoValidator.cs ├── SlithinMarketplace │ ├── AuthorizationServerProvider.cs │ ├── Content │ │ ├── favicon-16x16.png │ │ ├── favicon-32x32.png │ │ ├── index.css │ │ ├── index.html │ │ ├── oauth2-redirect.html │ │ ├── swagger-initializer.js │ │ ├── swagger-ui-bundle.js │ │ ├── swagger-ui-bundle.js.map │ │ ├── swagger-ui-es-bundle-core.js │ │ ├── swagger-ui-es-bundle-core.js.map │ │ ├── swagger-ui-es-bundle.js │ │ ├── swagger-ui-es-bundle.js.map │ │ ├── swagger-ui-standalone-preset.js │ │ ├── swagger-ui-standalone-preset.js.map │ │ ├── swagger-ui.css │ │ ├── swagger-ui.css.map │ │ ├── swagger-ui.js │ │ ├── swagger-ui.js.map │ │ └── theme-newspaper.css │ ├── Controller │ │ ├── FilesController.cs │ │ ├── RegisterUserController.cs │ │ ├── ScreenController.cs │ │ └── TemplatesController.cs │ ├── Extensions.cs │ ├── Program.cs │ ├── Properties │ │ └── launchSettings.json │ ├── Repository.cs │ ├── S3Wrapper.cs │ ├── ServiceLocator.cs │ ├── SlithinMarketplace.csproj │ └── Utils.cs └── Windows-Store │ ├── Images │ ├── LargeTile.scale-100.png │ ├── LargeTile.scale-125.png │ ├── LargeTile.scale-150.png │ ├── LargeTile.scale-200.png │ ├── LargeTile.scale-400.png │ ├── LockScreenLogo.scale-200.png │ ├── SmallTile.scale-100.png │ ├── SmallTile.scale-125.png │ ├── SmallTile.scale-150.png │ ├── SmallTile.scale-200.png │ ├── SmallTile.scale-400.png │ ├── SplashScreen.scale-100.png │ ├── SplashScreen.scale-125.png │ ├── SplashScreen.scale-150.png │ ├── SplashScreen.scale-200.png │ ├── SplashScreen.scale-400.png │ ├── Square150x150Logo.scale-100.png │ ├── Square150x150Logo.scale-125.png │ ├── Square150x150Logo.scale-150.png │ ├── Square150x150Logo.scale-200.png │ ├── Square150x150Logo.scale-400.png │ ├── Square44x44Logo.altform-lightunplated_targetsize-16.png │ ├── Square44x44Logo.altform-lightunplated_targetsize-24.png │ ├── Square44x44Logo.altform-lightunplated_targetsize-256.png │ ├── Square44x44Logo.altform-lightunplated_targetsize-32.png │ ├── Square44x44Logo.altform-lightunplated_targetsize-48.png │ ├── Square44x44Logo.altform-unplated_targetsize-16.png │ ├── Square44x44Logo.altform-unplated_targetsize-256.png │ ├── Square44x44Logo.altform-unplated_targetsize-32.png │ ├── Square44x44Logo.altform-unplated_targetsize-48.png │ ├── Square44x44Logo.scale-100.png │ ├── Square44x44Logo.scale-125.png │ ├── Square44x44Logo.scale-150.png │ ├── Square44x44Logo.scale-200.png │ ├── Square44x44Logo.scale-400.png │ ├── Square44x44Logo.targetsize-16.png │ ├── Square44x44Logo.targetsize-24.png │ ├── Square44x44Logo.targetsize-24_altform-unplated.png │ ├── Square44x44Logo.targetsize-256.png │ ├── Square44x44Logo.targetsize-32.png │ ├── Square44x44Logo.targetsize-48.png │ ├── StoreLogo.backup.png │ ├── StoreLogo.scale-100.png │ ├── StoreLogo.scale-125.png │ ├── StoreLogo.scale-150.png │ ├── StoreLogo.scale-200.png │ ├── StoreLogo.scale-400.png │ ├── Wide310x150Logo.scale-100.png │ ├── Wide310x150Logo.scale-125.png │ ├── Wide310x150Logo.scale-150.png │ ├── Wide310x150Logo.scale-200.png │ └── Wide310x150Logo.scale-400.png │ ├── Package.appxmanifest │ └── Windows-Store.wapproj ├── Tools └── LocalisationSearcher │ ├── LocalisationSearcher.csproj │ ├── Program.cs │ └── Properties │ └── launchSettings.json ├── crowdin.yml └── docker-compose.yml /.dockerignore: -------------------------------------------------------------------------------- 1 | **/.classpath 2 | **/.dockerignore 3 | **/.env 4 | **/.git 5 | **/.gitignore 6 | **/.project 7 | **/.settings 8 | **/.toolstarget 9 | **/.vs 10 | **/.vscode 11 | **/*.*proj.user 12 | **/*.dbmdl 13 | **/*.jfm 14 | **/azds.yaml 15 | **/bin 16 | **/charts 17 | **/docker-compose* 18 | **/Dockerfile* 19 | **/node_modules 20 | **/npm-debug.log 21 | **/obj 22 | **/secrets.dev.yaml 23 | **/values.dev.yaml 24 | LICENSE 25 | README.md -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | 3 | github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2] 4 | patreon: Slithin 5 | open_collective: # Replace with a single Open Collective username 6 | ko_fi: # Replace with a single Ko-fi username 7 | tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel 8 | community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry 9 | liberapay: # Replace with a single Liberapay username 10 | issuehunt: furesoft 11 | otechie: # Replace with a single Otechie username 12 | lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry 13 | custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] 14 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature_request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Feature request 3 | about: Suggest an idea for this project 4 | title: "[Feature]" 5 | labels: Feature 6 | assignees: furesoft 7 | projecta: "Slithin Beta" 8 | --- 9 | 10 | **Is your feature request related to a problem? Please describe.** 11 | A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] 12 | 13 | **Describe the solution you'd like** 14 | A clear and concise description of what you want to happen. 15 | 16 | **Describe alternatives you've considered** 17 | A clear and concise description of any alternative solutions or features you've considered. 18 | 19 | **Additional context** 20 | Add any other context or screenshots about the feature request here. 21 | -------------------------------------------------------------------------------- /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | # Set update schedule for each package manager 2 | 3 | version: 2 4 | updates: 5 | - package-ecosystem: "github-actions" 6 | directory: "/" 7 | schedule: 8 | # Check for updates to GitHub Actions every weekday 9 | interval: "daily" 10 | open-pull-requests-limit: 15 11 | 12 | - package-ecosystem: "nuget" 13 | directory: "/" 14 | schedule: 15 | # Check for updates managed by NuGet once a week 16 | interval: "daily" 17 | open-pull-requests-limit: 15 18 | -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | FROM mcr.microsoft.com/dotnet/sdk:7.0 AS base 2 | WORKDIR /srv 3 | 4 | COPY . /srv 5 | 6 | RUN dotnet restore "./Source/New/MarketplaceService/MarketplaceService.csproj" 7 | RUN dotnet build "./Source/New/MarketplaceService/MarketplaceService.csproj" -c Release -o /srv/build && \ 8 | dotnet publish "./Source/New/MarketplaceService/MarketplaceService.csproj" -c Release -o /srv/publish 9 | 10 | FROM mcr.microsoft.com/dotnet/runtime:7.0 11 | WORKDIR /app 12 | 13 | COPY --from=base /srv/publish /app 14 | EXPOSE 9696 15 | ENTRYPOINT ["dotnet", "/app/MarketplaceService.dll"] 16 | -------------------------------------------------------------------------------- /Manual.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Manual.docx -------------------------------------------------------------------------------- /SECURITY.md: -------------------------------------------------------------------------------- 1 | # Security Policy 2 | 3 | ## Supported Versions 4 | 5 | Use this section to tell people about which versions of your project are 6 | currently being supported with security updates. 7 | 8 | | Version | Supported | 9 | | ------- | ------------------ | 10 | | > 1.0.16 | :white_check_mark: | 11 | | < 1.0.16 | :x: | 12 | 13 | -------------------------------------------------------------------------------- /Screenshots/connect.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Screenshots/connect.png -------------------------------------------------------------------------------- /Screenshots/device.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Screenshots/device.png -------------------------------------------------------------------------------- /Screenshots/notebooks.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Screenshots/notebooks.png -------------------------------------------------------------------------------- /Screenshots/settings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Screenshots/settings.png -------------------------------------------------------------------------------- /Screenshots/templates.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Screenshots/templates.png -------------------------------------------------------------------------------- /Screenshots/tools.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Screenshots/tools.png -------------------------------------------------------------------------------- /Source/.dockerignore: -------------------------------------------------------------------------------- 1 | **/.classpath 2 | **/.dockerignore 3 | **/.env 4 | **/.git 5 | **/.gitignore 6 | **/.project 7 | **/.settings 8 | **/.toolstarget 9 | **/.vs 10 | **/.vscode 11 | **/*.*proj.user 12 | **/*.dbmdl 13 | **/*.jfm 14 | **/azds.yaml 15 | **/bin 16 | **/charts 17 | **/docker-compose* 18 | **/Dockerfile* 19 | **/node_modules 20 | **/npm-debug.log 21 | **/obj 22 | **/secrets.dev.yaml 23 | **/values.dev.yaml 24 | LICENSE 25 | README.md -------------------------------------------------------------------------------- /Source/.idea/.idea.Slithin/.idea/.gitignore: -------------------------------------------------------------------------------- 1 | # Default ignored files 2 | /shelf/ 3 | /workspace.xml 4 | # Rider ignored files 5 | /modules.xml 6 | /.idea.Slithin.iml 7 | /contentModel.xml 8 | /projectSettingsUpdater.xml 9 | # Editor-based HTTP Client requests 10 | /httpRequests/ 11 | # Datasource local storage ignored files 12 | /dataSources/ 13 | /dataSources.local.xml 14 | -------------------------------------------------------------------------------- /Source/.idea/.idea.Slithin/.idea/.name: -------------------------------------------------------------------------------- 1 | Slithin -------------------------------------------------------------------------------- /Source/.idea/.idea.Slithin/.idea/encodings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /Source/.idea/.idea.Slithin/.idea/indexLayout.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Source/.idea/.idea.Slithin/.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /Source/ApiConsole/ApiConsole.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Exe 5 | net6.0 6 | enable 7 | enable 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /Source/ApiConsole/Commands/FilesCommand.cs: -------------------------------------------------------------------------------- 1 | using ApiConsole.Core; 2 | using CommandLine; 3 | 4 | namespace ApiConsole.Commands; 5 | 6 | [Verb("files", HelpText = "Act with files")] 7 | public class FilesCommand : ICommand 8 | { 9 | [Option('d', "download", HelpText = "Flag for downloading a file")] 10 | public bool Download { get; set; } 11 | 12 | [Option('f', "fiilename", HelpText = "filename and path to save the file to")] 13 | public string Filename { get; set; } 14 | 15 | [Option('i', "id", HelpText = "File ID to download")] 16 | public string ID { get; set; } 17 | 18 | public void Execute() 19 | { 20 | if (Download) 21 | { 22 | ServiceLocator.API.DownloadFile(ID, Filename); 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /Source/ApiConsole/Commands/LoginCommand.cs: -------------------------------------------------------------------------------- 1 | using ApiConsole.Core; 2 | using CommandLine; 3 | 4 | namespace ApiConsole.Commands; 5 | 6 | [Verb("login", true, HelpText = "Login to the marketplace api")] 7 | public class LoginCommand : ICommand 8 | { 9 | [Option('p', "password", Required = true, HelpText = "The password to login with")] 10 | public string Password { get; set; } 11 | 12 | [Option('u', "username", Required = true, HelpText = "The username to login with")] 13 | public string Username { get; set; } 14 | 15 | public void Execute() 16 | { 17 | ServiceLocator.API.Authenticate(Username, Password); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /Source/ApiConsole/Core/ICommand.cs: -------------------------------------------------------------------------------- 1 | namespace ApiConsole.Core; 2 | 3 | public interface ICommand 4 | { 5 | void Execute(); 6 | } 7 | -------------------------------------------------------------------------------- /Source/ApiConsole/Properties/launchSettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "profiles": { 3 | "ApiConsole": { 4 | "commandName": "Project", 5 | "commandLineArgs": "-i" 6 | } 7 | } 8 | } -------------------------------------------------------------------------------- /Source/ApiConsole/ServiceLocator.cs: -------------------------------------------------------------------------------- 1 | namespace ApiConsole; 2 | 3 | public static class ServiceLocator 4 | { 5 | public static readonly MarketplaceAPI API = new(); 6 | } 7 | -------------------------------------------------------------------------------- /Source/New/MarketplaceService/Properties/launchSettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "profiles": { 3 | "http": { 4 | "commandName": "Project", 5 | "environmentVariables": { 6 | "ASPNETCORE_ENVIRONMENT": "Development" 7 | }, 8 | "dotnetRunMessages": true, 9 | "applicationUrl": "http://localhost:5039" 10 | }, 11 | "https": { 12 | "commandName": "Project", 13 | "environmentVariables": { 14 | "ASPNETCORE_ENVIRONMENT": "Development" 15 | }, 16 | "dotnetRunMessages": true, 17 | "applicationUrl": "https://localhost:7200;http://localhost:5039" 18 | }, 19 | "Docker": { 20 | "commandName": "Docker", 21 | "launchUrl": "{Scheme}://{ServiceHost}:{ServicePort}", 22 | "publishAllPorts": true 23 | } 24 | } 25 | } -------------------------------------------------------------------------------- /Source/New/MarketplaceService/ProtoContoller.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | 3 | namespace MarketplaceService; 4 | 5 | public class ProtoController 6 | { 7 | public Stream Get(string protoName) 8 | { 9 | var assembly = Assembly.GetEntryAssembly(); 10 | 11 | return assembly.GetManifestResourceStream($"{assembly.GetName().Name}.Protos.{protoName}.proto"); 12 | } 13 | 14 | public IEnumerable GetAvailable() 15 | { 16 | return Assembly.GetEntryAssembly().GetManifestResourceNames().Select(_ => _.Split('.')[^2]); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /Source/New/MarketplaceService/Protos/Authentication.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | option csharp_namespace = "MarketplaceService.Protos"; 4 | 5 | package Marketplace; 6 | 7 | service AuthenticationService { 8 | rpc Authenticate(Grant) returns(AuthResult); 9 | rpc RefreshToken(RefreshTokenRequest) returns(AuthResult); 10 | rpc Register(User) returns(RegistrationResponse); 11 | } 12 | 13 | message Grant { 14 | string username = 1; 15 | string password = 2; 16 | } 17 | 18 | message AuthResult { 19 | string token = 1; 20 | } 21 | 22 | message RegistrationResponse { 23 | bool success = 1; 24 | } 25 | 26 | message RefreshTokenRequest { 27 | string token = 1; 28 | } 29 | 30 | message User { 31 | string username = 1; 32 | string password = 2; 33 | } -------------------------------------------------------------------------------- /Source/New/MarketplaceService/Protos/Storage.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | option csharp_namespace = "MarketplaceService.Protos"; 4 | 5 | package Marketplace; 6 | 7 | service StorageService { 8 | rpc GetFileList(FileListRequest) returns(FileListResponse); 9 | } 10 | 11 | message FileListRequest { 12 | string bucket = 1; 13 | } 14 | 15 | message FileListResponse { 16 | repeated string filenames = 1; 17 | } -------------------------------------------------------------------------------- /Source/New/MarketplaceService/Services/StorageService.cs: -------------------------------------------------------------------------------- 1 | using Grpc.Core; 2 | using MarketplaceService.Protos; 3 | using Microsoft.AspNetCore.Authorization; 4 | 5 | namespace MarketplaceService.Services; 6 | 7 | public class Storage : Protos.StorageService.StorageServiceBase 8 | { 9 | [Authorize] 10 | public override async Task GetFileList(FileListRequest request, ServerCallContext context) 11 | { 12 | var response = new FileListResponse(); 13 | 14 | response.Filenames.Add("test.png"); 15 | 16 | return response; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /Source/New/MarketplaceService/appsettings.Development.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "LogLevel": { 4 | "Default": "Information", 5 | "Microsoft.AspNetCore": "Warning" 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /Source/New/MarketplaceService/appsettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "LogLevel": { 4 | "Default": "Information", 5 | "Microsoft.AspNetCore": "Warning" 6 | } 7 | }, 8 | "AllowedHosts": "*", 9 | "Kestrel": { 10 | "Endpoints": { 11 | "Grpc": { 12 | "Protocols": "Http2", 13 | "Url": "http://localhost:5039" 14 | }, 15 | "webApi": { 16 | "Protocols": "Http1", 17 | "Url": "http://localhost:80" 18 | } 19 | } 20 | } 21 | } -------------------------------------------------------------------------------- /Source/New/Models/Slithin.Entities.Remarkable/Rendering/Colors.cs: -------------------------------------------------------------------------------- 1 | namespace Slithin.Entities.Remarkable.Rendering; 2 | 3 | public enum Colors 4 | { 5 | Black = 0, 6 | 7 | Gray = 1, 8 | 9 | White = 2, 10 | Yellow = 3, 11 | Green = 4, 12 | Blue = 6, 13 | Red = 7, 14 | Pink = 5 15 | } 16 | -------------------------------------------------------------------------------- /Source/New/Models/Slithin.Entities.Remarkable/Rendering/Layer.cs: -------------------------------------------------------------------------------- 1 | namespace Slithin.Entities.Remarkable.Rendering; 2 | 3 | public class Layer 4 | { 5 | public List Lines { get; set; } = new(); 6 | } -------------------------------------------------------------------------------- /Source/New/Models/Slithin.Entities.Remarkable/Rendering/Line.cs: -------------------------------------------------------------------------------- 1 | namespace Slithin.Entities.Remarkable.Rendering; 2 | 3 | public struct Line 4 | { 5 | public BrushBaseSize BrushBaseSize; 6 | public Brushes BrushType; 7 | public Colors Color; 8 | public List Points; 9 | public int unknown_line_attribute; 10 | } 11 | -------------------------------------------------------------------------------- /Source/New/Models/Slithin.Entities.Remarkable/Rendering/Point.cs: -------------------------------------------------------------------------------- 1 | namespace Slithin.Entities.Remarkable.Rendering; 2 | 3 | public struct Point 4 | { 5 | public float Direction; 6 | public float Pressure; 7 | public float Speed; 8 | public float Width; 9 | public float X; 10 | public float Y; 11 | } 12 | -------------------------------------------------------------------------------- /Source/New/Models/Slithin.Entities.Remarkable/Rendering/Ranges.cs: -------------------------------------------------------------------------------- 1 | namespace Slithin.Entities.Remarkable.Rendering; 2 | 3 | public struct Ranges 4 | { 5 | public const float MaxDirection = (float)(Math.PI * 2.0); 6 | public const float MaxPressure = 1.0f; 7 | public const float MinDirection = 0.0f; 8 | public const float MinPressure = 0.0f; 9 | } -------------------------------------------------------------------------------- /Source/New/Models/Slithin.Modules.BaseServices.Models/ICacheService.cs: -------------------------------------------------------------------------------- 1 | namespace Slithin.Modules.BaseServices.Models; 2 | 3 | public interface ICacheService 4 | { 5 | void AddObject(string name, T obj); 6 | 7 | T GetObject(string name, Func? objFactory = default); 8 | 9 | bool Contains(string name); 10 | } 11 | -------------------------------------------------------------------------------- /Source/New/Models/Slithin.Modules.BaseServices.Models/IDeviceDiscovery.cs: -------------------------------------------------------------------------------- 1 | using System.Net; 2 | 3 | namespace Slithin.Modules.BaseServices.Models; 4 | 5 | public interface IDeviceDiscovery 6 | { 7 | IPAddress? Discover(); 8 | } 9 | -------------------------------------------------------------------------------- /Source/New/Models/Slithin.Modules.BaseServices.Models/IEventService.cs: -------------------------------------------------------------------------------- 1 | namespace Slithin.Modules.BaseServices.Models; 2 | 3 | public interface IEventService 4 | { 5 | void Invoke(string name, T argument); 6 | 7 | void Subscribe(string name, Action action); 8 | } 9 | -------------------------------------------------------------------------------- /Source/New/Models/Slithin.Modules.BaseServices.Models/IPathManager.cs: -------------------------------------------------------------------------------- 1 | namespace Slithin.Modules.BaseServices.Models; 2 | 3 | public interface IPathManager 4 | { 5 | public string BackupsDir { get; } 6 | public string ConfigBaseDir { get; set; } 7 | public string CustomScreensDir { get; } 8 | public string DevicesDir { get; } 9 | public string NotebooksDir { get; } 10 | public string SlithinDir { get; } 11 | public string TemplatesDir { get; } 12 | 13 | void Init(); 14 | 15 | void InitDeviceDirectory(); 16 | 17 | void ReLink(string deviceName); 18 | } 19 | -------------------------------------------------------------------------------- /Source/New/Models/Slithin.Modules.BaseServices.Models/Slithin.Modules.BaseServices.Models.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net7.0 5 | enable 6 | enable 7 | true 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /Source/New/Models/Slithin.Modules.Device.Models/CommandResult.cs: -------------------------------------------------------------------------------- 1 | namespace Slithin.Modules.Device.Models; 2 | 3 | public class CommandResult 4 | { 5 | public CommandResult(string error, string result) 6 | { 7 | Error = error; 8 | Result = result; 9 | } 10 | 11 | public CommandResult(string result) 12 | { 13 | Result = result; 14 | Error = string.Empty; 15 | } 16 | 17 | public string Error { get; } 18 | public string Result { get; } 19 | } 20 | -------------------------------------------------------------------------------- /Source/New/Models/Slithin.Modules.Device.Models/DevicePathList.cs: -------------------------------------------------------------------------------- 1 | namespace Slithin.Modules.Device.Models; 2 | 3 | public class DevicePathList 4 | { 5 | public string Notebooks = "/home/root/.local/share/remarkable/xochitl/"; 6 | public string Screens = "/usr/share/remarkable/"; 7 | public string Templates = "/usr/share/remarkable/templates/"; 8 | } 9 | -------------------------------------------------------------------------------- /Source/New/Models/Slithin.Modules.Device.Models/FileFetchResult.cs: -------------------------------------------------------------------------------- 1 | namespace Slithin.Modules.Device.Models; 2 | 3 | public readonly record struct FileFetchResult 4 | { 5 | public string ShortPath { get; init; } 6 | public string FullPath { get; init; } 7 | public long LastModified { get; init; } 8 | } 9 | -------------------------------------------------------------------------------- /Source/New/Models/Slithin.Modules.Device.Models/IXochitlService.cs: -------------------------------------------------------------------------------- 1 | namespace Slithin.Modules.Device.Models; 2 | 3 | public interface IXochitlService 4 | { 5 | bool GetIsBeta(); 6 | 7 | string GetProperty(string key, string section); 8 | 9 | string[] GetShareEmailAddresses(); 10 | 11 | string GetToken(string key, string section); 12 | 13 | void Init(); 14 | 15 | void Save(); 16 | 17 | void SetPowerOffDelay(int value); 18 | 19 | void SetProperty(string key, string section, object value); 20 | 21 | void SetShareMailAddresses(IEnumerable mailAddresses); 22 | 23 | void Upload(); 24 | } 25 | -------------------------------------------------------------------------------- /Source/New/Models/Slithin.Modules.Device.Models/Slithin.Modules.Device.Models.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | net7.0 5 | enable 6 | enable 7 | True 8 | 1.0.21 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /Source/New/Models/Slithin.Modules.Diagnostics.Sentry.Models/IDiagnosticService.cs: -------------------------------------------------------------------------------- 1 | namespace Slithin.Modules.Diagnostics.Sentry.Models; 2 | 3 | public interface IDiagnosticService 4 | { 5 | void TrackException(Exception exception); 6 | 7 | IDisposable StartPerformanceMonitoring(string name, string operation); 8 | } 9 | -------------------------------------------------------------------------------- /Source/New/Models/Slithin.Modules.Diagnostics.Sentry.Models/IFeedbackService.cs: -------------------------------------------------------------------------------- 1 | namespace Slithin.Modules.Diagnostics.Sentry.Models; 2 | 3 | public interface IFeedbackService 4 | { 5 | void SendFeedback(string message); 6 | } 7 | -------------------------------------------------------------------------------- /Source/New/Models/Slithin.Modules.Diagnostics.Sentry.Models/PerformanceMonitor.cs: -------------------------------------------------------------------------------- 1 | using Sentry; 2 | 3 | namespace Slithin.Modules.Diagnostics.Sentry.Models; 4 | 5 | public class PerformanceMonitor : IDisposable 6 | { 7 | private ISpan _span; 8 | private ITransaction _transaction; 9 | 10 | public PerformanceMonitor(string name, string operation) 11 | { 12 | _transaction = SentrySdk.StartTransaction(name, operation); 13 | _span = _transaction.StartChild(operation); 14 | } 15 | 16 | public void Dispose() 17 | { 18 | _transaction.Finish(); 19 | _span.Finish(); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /Source/New/Models/Slithin.Modules.Diagnostics.Sentry.Models/Slithin.Modules.Diagnostics.Sentry.Models.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net7.0 5 | enable 6 | enable 7 | True 8 | 1.0.21 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /Source/New/Models/Slithin.Modules.Export.Models/ExportDocument.cs: -------------------------------------------------------------------------------- 1 | using EpubSharp; 2 | using OneOf; 3 | using PdfSharpCore.Pdf; 4 | using Slithin.Entities.Remarkable.Rendering; 5 | 6 | namespace Slithin.Modules.Export.Models; 7 | 8 | [GenerateOneOf] 9 | public partial class ExportDocument : OneOfBase 10 | { 11 | } 12 | -------------------------------------------------------------------------------- /Source/New/Models/Slithin.Modules.Export.Models/IExportProvider.cs: -------------------------------------------------------------------------------- 1 | using Slithin.Entities.Remarkable; 2 | 3 | namespace Slithin.Modules.Export.Models; 4 | 5 | public interface IExportProvider 6 | { 7 | bool ExportSingleDocument { get; } 8 | string Title { get; } 9 | 10 | bool CanHandle(Metadata md); 11 | 12 | bool Export(ExportOptions options, Metadata metadata, string outputPath, IProgress progress); 13 | } 14 | -------------------------------------------------------------------------------- /Source/New/Models/Slithin.Modules.Export.Models/IExportProviderFactory.cs: -------------------------------------------------------------------------------- 1 | using Slithin.Entities.Remarkable; 2 | 3 | namespace Slithin.Modules.Export.Models; 4 | 5 | public interface IExportProviderFactory 6 | { 7 | IExportProvider[] GetAvailableProviders(Metadata md); 8 | 9 | IExportProvider GetExportProvider(string type); 10 | 11 | void Init(); 12 | } 13 | -------------------------------------------------------------------------------- /Source/New/Models/Slithin.Modules.Export.Models/IExportService.cs: -------------------------------------------------------------------------------- 1 | using Slithin.Entities.Remarkable; 2 | 3 | namespace Slithin.Modules.Export.Models; 4 | 5 | public interface IExportService 6 | { 7 | Task Export(Metadata metadata); 8 | } 9 | -------------------------------------------------------------------------------- /Source/New/Models/Slithin.Modules.Export.Models/IRenderingService.cs: -------------------------------------------------------------------------------- 1 | using Slithin.Entities.Remarkable; 2 | using Slithin.Entities.Remarkable.Rendering; 3 | 4 | namespace Slithin.Modules.Export.Models; 5 | 6 | public interface IRenderingService 7 | { 8 | Stream RenderSvg(Page page, int pageIndex, Metadata md, bool shouldHideTemplates = false, int width = 1404, 9 | int height = 1872); 10 | 11 | Stream RenderPng(Page page, int pageIndex, Metadata md, bool shouldHideTemplates = false, int width = 1404, 12 | int height = 1872); 13 | } 14 | -------------------------------------------------------------------------------- /Source/New/Models/Slithin.Modules.I18N.Models/ILocalisationService.cs: -------------------------------------------------------------------------------- 1 | namespace Slithin.Modules.I18N.Models; 2 | 3 | public interface ILocalisationService 4 | { 5 | string GetString(string key); 6 | 7 | public string GetStringFormat(string key, params object[] args) 8 | { 9 | return string.Format(GetString(key), args); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Source/New/Models/Slithin.Modules.I18N.Models/Slithin.Modules.I18N.Models.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net7.0 5 | enable 6 | enable 7 | True 8 | 1.0.21 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /Source/New/Models/Slithin.Modules.I18N.Models/ValidationExtensions.cs: -------------------------------------------------------------------------------- 1 | using AuroraModularis.Core; 2 | using FluentValidation; 3 | 4 | namespace Slithin.Modules.I18N.Models; 5 | 6 | public static class ValidationExtensions 7 | { 8 | public static IRuleBuilderOptions WithLocalisedMessage(this IRuleBuilderOptions rule, string key) 9 | { 10 | var localisatinService = ServiceContainer.Current.Resolve(); 11 | 12 | return rule.WithMessage(localisatinService.GetString(key)); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /Source/New/Models/Slithin.Modules.Import.Models/IImportProvider.cs: -------------------------------------------------------------------------------- 1 | namespace Slithin.Modules.Import.Models; 2 | 3 | public interface IImportProvider 4 | { 5 | bool CanHandle(string filename); 6 | 7 | Stream Import(Stream source); 8 | } 9 | -------------------------------------------------------------------------------- /Source/New/Models/Slithin.Modules.Import.Models/IImportProviderFactory.cs: -------------------------------------------------------------------------------- 1 | namespace Slithin.Modules.Import.Models; 2 | 3 | public interface IImportProviderFactory 4 | { 5 | IImportProvider? GetImportProvider(string baseExtension, string filename); 6 | 7 | void Init(); 8 | } 9 | -------------------------------------------------------------------------------- /Source/New/Models/Slithin.Modules.Import.Models/ImportProviderBaseTypeAttribute.cs: -------------------------------------------------------------------------------- 1 | namespace Slithin.Modules.Import.Models; 2 | 3 | [AttributeUsage(AttributeTargets.Class, AllowMultiple = true)] 4 | public class ImportProviderBaseTypeAttribute : Attribute 5 | { 6 | public ImportProviderBaseTypeAttribute(string extension) 7 | { 8 | Extension = extension; 9 | } 10 | 11 | public string Extension { get; set; } 12 | } 13 | -------------------------------------------------------------------------------- /Source/New/Models/Slithin.Modules.Import.Models/Slithin.Modules.Import.Models.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net7.0 5 | enable 6 | enable 7 | True 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /Source/New/Models/Slithin.Modules.Menu.Models/ContextualMenu/ContextualElement.cs: -------------------------------------------------------------------------------- 1 | namespace Slithin.Modules.Menu.Models.ContextualMenu; 2 | 3 | public abstract class ContextualElement : Slithin.Core.MVVM.NotifyObject 4 | { 5 | private object? _dataContext; 6 | private bool _isVisible = true; 7 | 8 | public object? DataContext 9 | { 10 | get { return _dataContext; } 11 | set { SetValue(ref _dataContext, value); } 12 | } 13 | 14 | 15 | public bool IsVisible 16 | { 17 | get 18 | { 19 | return _isVisible; 20 | } 21 | set 22 | { 23 | this.SetValue(ref _isVisible, value); 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /Source/New/Models/Slithin.Modules.Menu.Models/ContextualMenu/IContextualMenuBuilder.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Controls; 2 | 3 | namespace Slithin.Modules.Menu.Models.ContextualMenu; 4 | 5 | public interface IContextualMenuBuilder 6 | { 7 | UserControl BuildContextualMenu(string id); 8 | 9 | void Init(); 10 | } 11 | -------------------------------------------------------------------------------- /Source/New/Models/Slithin.Modules.Menu.Models/ContextualMenu/IContextualMenuProvider.cs: -------------------------------------------------------------------------------- 1 | namespace Slithin.Modules.Menu.Models.ContextualMenu; 2 | 3 | public interface IContextualMenuProvider 4 | { 5 | void RegisterContextualMenuElements(ContextualRegistrar registrar); 6 | } 7 | -------------------------------------------------------------------------------- /Source/New/Models/Slithin.Modules.Menu.Models/ContextualMenu/IContextualMenuRegistrar.cs: -------------------------------------------------------------------------------- 1 | namespace Slithin.Modules.Menu.Models.ContextualMenu; 2 | 3 | public interface IContextualMenuRegistrar 4 | { 5 | void RegisterMenuItems(ContextualRegistrar registrar); 6 | } 7 | -------------------------------------------------------------------------------- /Source/New/Models/Slithin.Modules.Menu.Models/IContextMenuProvider.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Controls; 2 | using Slithin.Modules.Menu.Models.ItemContext; 3 | 4 | namespace Slithin.Modules.Menu.Models; 5 | 6 | public interface IContextMenuProvider 7 | { 8 | void AddProvider(IContextProvider provider); 9 | 10 | ContextMenu BuildMenu(string pageID, T item, object parent = null); 11 | 12 | void Init(); 13 | } 14 | -------------------------------------------------------------------------------- /Source/New/Models/Slithin.Modules.Menu.Models/ItemContext/ContextAttribute.cs: -------------------------------------------------------------------------------- 1 | namespace Slithin.Modules.Menu.Models.ItemContext; 2 | 3 | [AttributeUsage(AttributeTargets.Class, AllowMultiple = true)] 4 | public class ContextAttribute : Attribute 5 | { 6 | public ContextAttribute(string context) 7 | { 8 | Context = context; 9 | } 10 | 11 | public string Context { get; } 12 | } 13 | -------------------------------------------------------------------------------- /Source/New/Models/Slithin.Modules.Menu.Models/ItemContext/IContextCommand.cs: -------------------------------------------------------------------------------- 1 | namespace Slithin.Modules.Menu.Models.ItemContext; 2 | 3 | public interface IContextCommand 4 | { 5 | public object ParentViewModel { get; set; } 6 | public string Titel { get; } 7 | 8 | bool CanExecute(object data); 9 | 10 | void Execute(object data); 11 | } 12 | -------------------------------------------------------------------------------- /Source/New/Models/Slithin.Modules.Menu.Models/ItemContext/IContextProvider.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Controls; 2 | 3 | namespace Slithin.Modules.Menu.Models.ItemContext; 4 | 5 | public interface IContextProvider 6 | { 7 | object ParentViewModel { get; set; } 8 | 9 | bool CanHandle(object obj); 10 | 11 | ICollection GetMenu(object obj); 12 | } 13 | -------------------------------------------------------------------------------- /Source/New/Models/Slithin.Modules.Menu.Models/ItemContext/UIContext.cs: -------------------------------------------------------------------------------- 1 | namespace Slithin.Modules.Menu.Models.ItemContext; 2 | 3 | public static class UIContext 4 | { 5 | public const string Notebook = nameof(Notebook); 6 | public const string Tools = nameof(Tools); 7 | public const string Templates = nameof(Templates); 8 | public const string Device = nameof(Device); 9 | public const string Resources = nameof(Resources); 10 | public const string Settings = nameof(Settings); 11 | } 12 | -------------------------------------------------------------------------------- /Source/New/Models/Slithin.Modules.Menu.Models/Menu/IPage.cs: -------------------------------------------------------------------------------- 1 | namespace Slithin.Modules.Menu.Models.Menu; 2 | 3 | public interface IPage 4 | { 5 | string Title { get; } 6 | 7 | bool IsEnabled(); 8 | } 9 | -------------------------------------------------------------------------------- /Source/New/Models/Slithin.Modules.Menu.Models/Menu/PageIconAttribute.cs: -------------------------------------------------------------------------------- 1 | namespace Slithin.Modules.Menu.Models.Menu; 2 | 3 | [AttributeUsage(AttributeTargets.Class)] 4 | public class PageIconAttribute : Attribute 5 | { 6 | public PageIconAttribute(string key) 7 | { 8 | Key = key; 9 | } 10 | 11 | public string Key { get; } 12 | } 13 | -------------------------------------------------------------------------------- /Source/New/Models/Slithin.Modules.Menu.Models/Menu/PreserveIndexAttribute.cs: -------------------------------------------------------------------------------- 1 | namespace Slithin.Modules.Menu.Models.Menu; 2 | 3 | [AttributeUsage(AttributeTargets.Class)] 4 | public class PreserveIndexAttribute : Attribute 5 | { 6 | public PreserveIndexAttribute(int index) 7 | { 8 | Index = index; 9 | } 10 | 11 | public int Index { get; set; } 12 | } 13 | -------------------------------------------------------------------------------- /Source/New/Models/Slithin.Modules.Menu.Models/Slithin.Modules.Menu.Models.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net7.0 5 | enable 6 | enable 7 | True 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /Source/New/Models/Slithin.Modules.Menu.Models/XmlNsDefinitions.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Metadata; 2 | 3 | [assembly: XmlnsDefinition("http://furesoft.org/slithin/", "Slithin.Modules.Menu.Models.ContextualMenu.ContextualElements")] 4 | -------------------------------------------------------------------------------- /Source/New/Models/Slithin.Modules.Notebooks.UI.Models/DirectoryModel.cs: -------------------------------------------------------------------------------- 1 | namespace Slithin.Modules.Notebooks.UI.Models; 2 | 3 | public class DirectoryModel : FileSystemModel 4 | { 5 | public DirectoryModel(string visibleName, object tag, bool isPinned) : base(visibleName, tag, isPinned) 6 | { 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /Source/New/Models/Slithin.Modules.Notebooks.UI.Models/FileModel.cs: -------------------------------------------------------------------------------- 1 | namespace Slithin.Modules.Notebooks.UI.Models; 2 | 3 | public class FileModel : FileSystemModel 4 | { 5 | public FileModel(string visibleName, object tag, bool isPinned) : base(visibleName, tag, isPinned) 6 | { 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /Source/New/Models/Slithin.Modules.Notebooks.UI.Models/IThumbnailLoader.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Media; 2 | 3 | namespace Slithin.Modules.Notebooks.UI.Models; 4 | 5 | public interface IThumbnailLoader 6 | { 7 | IImage LoadImage(FileSystemModel model); 8 | } 9 | -------------------------------------------------------------------------------- /Source/New/Models/Slithin.Modules.Notebooks.UI.Models/Slithin.Modules.Notebooks.UI.Models.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net7.0 5 | enable 6 | enable 7 | True 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /Source/New/Models/Slithin.Modules.Notebooks.UI.Models/TrashModel.cs: -------------------------------------------------------------------------------- 1 | using AuroraModularis.Core; 2 | using Slithin.Modules.I18N.Models; 3 | 4 | namespace Slithin.Modules.Notebooks.UI.Models; 5 | 6 | public class TrashModel : DirectoryModel 7 | { 8 | public TrashModel() : base(null, null, false) 9 | { 10 | var localisation = ServiceContainer.Current.Resolve(); 11 | 12 | VisibleName = localisation.GetString("Trash"); 13 | ID = "trash"; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /Source/New/Models/Slithin.Modules.Notebooks.UI.Models/UpDirectoryModel.cs: -------------------------------------------------------------------------------- 1 | using AuroraModularis.Core; 2 | using Slithin.Modules.I18N.Models; 3 | 4 | namespace Slithin.Modules.Notebooks.UI.Models; 5 | 6 | public class UpDirectoryModel : DirectoryModel 7 | { 8 | public UpDirectoryModel(FileSystemModel parentFolder) : base(null, null, false) 9 | { 10 | ParentFolder = parentFolder; 11 | var localisation = ServiceContainer.Current.Resolve(); 12 | 13 | VisibleName = localisation.GetString("Up .."); 14 | } 15 | 16 | public FileSystemModel ParentFolder { get; } 17 | } 18 | -------------------------------------------------------------------------------- /Source/New/Models/Slithin.Modules.Repository.Models/IDatabaseService.cs: -------------------------------------------------------------------------------- 1 | namespace Slithin.Modules.Repository.Models; 2 | 3 | public interface IDatabaseService : IDisposable 4 | { 5 | DatabaseAccessor GetDatabase(); 6 | } 7 | -------------------------------------------------------------------------------- /Source/New/Models/Slithin.Modules.Repository.Models/ILoadingService.cs: -------------------------------------------------------------------------------- 1 | namespace Slithin.Modules.Repository.Models; 2 | 3 | public interface ILoadingService 4 | { 5 | Task LoadNotebooksAsync(); 6 | 7 | Task LoadTemplatesAsync(); 8 | } 9 | -------------------------------------------------------------------------------- /Source/New/Models/Slithin.Modules.Repository.Models/ILoginService.cs: -------------------------------------------------------------------------------- 1 | using Slithin.Entities; 2 | 3 | namespace Slithin.Modules.Repository.Models; 4 | 5 | public interface ILoginService 6 | { 7 | LoginInfo GetCurrentCredential(); 8 | 9 | LoginInfo[] GetLoginCredentials(); 10 | 11 | void RememberLoginCredencials(LoginInfo loginInfo); 12 | 13 | void SetLoginCredential(LoginInfo loginInfo); 14 | 15 | void UpdateIPAfterUpdate(); 16 | 17 | void UpdateLoginCredential(LoginInfo info); 18 | 19 | void Init(); 20 | 21 | void Remove(LoginInfo loginInfo); 22 | } 23 | -------------------------------------------------------------------------------- /Source/New/Models/Slithin.Modules.Repository.Models/IMetadataRepository.cs: -------------------------------------------------------------------------------- 1 | using Slithin.Entities.Remarkable; 2 | 3 | namespace Slithin.Modules.Repository.Models; 4 | 5 | public interface IMetadataRepository 6 | { 7 | void AddMetadata(Metadata metadata, out bool alreadyAdded); 8 | 9 | void SaveToDisk(Metadata metadata); 10 | 11 | void Clear(); 12 | 13 | IEnumerable GetByParent(string parent); 14 | 15 | Metadata GetMetadata(string id); 16 | 17 | void Move(Metadata md, string folder); 18 | 19 | Metadata Load(string id); 20 | 21 | void Upload(Metadata md, bool onlyMetadata = false); 22 | 23 | void Remove(Metadata md); 24 | } 25 | -------------------------------------------------------------------------------- /Source/New/Models/Slithin.Modules.Repository.Models/IRepository.cs: -------------------------------------------------------------------------------- 1 | using Slithin.Entities.Remarkable; 2 | 3 | namespace Slithin.Modules.Repository.Models; 4 | 5 | public interface IRepository 6 | { 7 | void AddTemplate(Template template); 8 | 9 | Template[] GetTemplates(); 10 | 11 | void RemoveTemplate(Template template); 12 | } 13 | -------------------------------------------------------------------------------- /Source/New/Models/Slithin.Modules.Repository.Models/ITemplateStorage.cs: -------------------------------------------------------------------------------- 1 | using Slithin.Entities.Remarkable; 2 | 3 | namespace Slithin.Modules.Repository.Models; 4 | 5 | public interface ITemplateStorage 6 | { 7 | Template[] Templates { get; set; } 8 | 9 | void AppendTemplate(Template template); 10 | 11 | void Remove(Template tmpl); 12 | 13 | void Save(); 14 | 15 | void Load(); 16 | 17 | Task LoadTemplateAsync(Template template); 18 | } 19 | -------------------------------------------------------------------------------- /Source/New/Models/Slithin.Modules.Repository.Models/IVersionService.cs: -------------------------------------------------------------------------------- 1 | namespace Slithin.Modules.Repository.Models; 2 | 3 | public interface IVersionService 4 | { 5 | Version GetDeviceVersion(); 6 | 7 | Version GetLocalVersion(); 8 | 9 | Version GetSlithinVersion(); 10 | 11 | bool HasLocalVersion(); 12 | 13 | void UpdateVersion(Version version); 14 | } 15 | -------------------------------------------------------------------------------- /Source/New/Models/Slithin.Modules.Repository.Models/Slithin.Modules.Repository.Models.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net7.0 5 | enable 6 | enable 7 | True 8 | 1.0.21 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /Source/New/Models/Slithin.Modules.Resources.Models/AssetModel.cs: -------------------------------------------------------------------------------- 1 | using LiteDB; 2 | using MongoDB.Bson.Serialization.Attributes; 3 | 4 | namespace Slithin.Modules.Resources.Models; 5 | 6 | public class AssetModel 7 | { 8 | [BsonElement("creatorID")] 9 | public ObjectId CreatorID { get; set; } 10 | 11 | [BsonElement("fileID")] 12 | public string FileID { get; set; } 13 | 14 | [BsonElement("_id")] 15 | public ObjectId ID { get; set; } 16 | 17 | [BsonElement("uploadTime")] 18 | public DateTime UploadTime { get; set; } 19 | } 20 | -------------------------------------------------------------------------------- /Source/New/Models/Slithin.Modules.Resources.Models/Grant.cs: -------------------------------------------------------------------------------- 1 | using Newtonsoft.Json; 2 | 3 | namespace Slithin.Modules.Resources.Models; 4 | 5 | public sealed class Grant 6 | { 7 | [JsonProperty("grant_type")] 8 | public string GrantType { get; set; } 9 | 10 | public string Password { get; set; } 11 | 12 | public string Username { get; set; } 13 | } 14 | -------------------------------------------------------------------------------- /Source/New/Models/Slithin.Modules.Resources.Models/IMarketplaceAPIService.cs: -------------------------------------------------------------------------------- 1 | namespace Slithin.Modules.Resources.Models; 2 | 3 | public interface IMarketplaceAPIService 4 | { 5 | string Auth(string username, string password); 6 | 7 | Task AddAssetAsync(AssetModel model); 8 | 9 | Task UploadFileAsync(Stream strm); 10 | Task DownloadFileAsync(string id); 11 | } 12 | -------------------------------------------------------------------------------- /Source/New/Models/Slithin.Modules.Resources.Models/MarketplaceUser.cs: -------------------------------------------------------------------------------- 1 | namespace Slithin.Modules.Resources.Models; 2 | 3 | public sealed class MarketplaceUser 4 | { 5 | public string HashedPassword { get; set; } 6 | public string Username { get; set; } 7 | } 8 | -------------------------------------------------------------------------------- /Source/New/Models/Slithin.Modules.Resources.Models/Screen.cs: -------------------------------------------------------------------------------- 1 | namespace Slithin.Modules.Resources.Models; 2 | 3 | public sealed class Screen : AssetModel 4 | { 5 | public string Filename { get; set; } 6 | 7 | public string Name { get; set; } 8 | } 9 | -------------------------------------------------------------------------------- /Source/New/Models/Slithin.Modules.Resources.Models/Script.cs: -------------------------------------------------------------------------------- 1 | namespace Slithin.Modules.Resources.Models; 2 | 3 | public sealed class Script : AssetModel 4 | { 5 | public string Category { get; set; } 6 | public string Description { get; set; } 7 | public string Name { get; set; } 8 | } 9 | -------------------------------------------------------------------------------- /Source/New/Models/Slithin.Modules.Resources.Models/Sharable.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Media; 2 | using Slithin.Core.MVVM; 3 | 4 | namespace Slithin.Modules.Resources.Models; 5 | 6 | public class Sharable : NotifyObject 7 | { 8 | private IImage _image; 9 | public AssetModel Asset { get; set; } 10 | 11 | public IImage Image 12 | { 13 | get { return _image; } 14 | set { SetValue(ref _image, value); } 15 | } 16 | 17 | public bool IsInstalled { get; set; } 18 | } 19 | -------------------------------------------------------------------------------- /Source/New/Models/Slithin.Modules.Resources.Models/Slithin.Modules.Resources.Models.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net7.0 5 | enable 6 | enable 7 | True 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /Source/New/Models/Slithin.Modules.Resources.Models/Template.cs: -------------------------------------------------------------------------------- 1 | namespace Slithin.Modules.Resources.Models; 2 | 3 | public sealed class Template : AssetModel 4 | { 5 | public string[] Categories { get; set; } 6 | public string Creator { get; set; } 7 | public string Filename { get; set; } 8 | public string IconCode { get; set; } 9 | public bool IsLandscape { get; set; } 10 | public string Name { get; set; } 11 | public string SvgFileID { get; set; } 12 | } 13 | -------------------------------------------------------------------------------- /Source/New/Models/Slithin.Modules.Resources.Models/UploadRequest.cs: -------------------------------------------------------------------------------- 1 | namespace Slithin.Modules.Resources.Models; 2 | 3 | public class UploadRequest 4 | { 5 | public string UploadEndpoint { get; set; } 6 | } 7 | -------------------------------------------------------------------------------- /Source/New/Models/Slithin.Modules.Resources.Models/User.cs: -------------------------------------------------------------------------------- 1 | using MongoDB.Bson; 2 | using MongoDB.Bson.Serialization.Attributes; 3 | 4 | namespace Slithin.Modules.Resources.Models; 5 | 6 | public sealed class User 7 | { 8 | [BsonElement("hashedPassword")] 9 | public string HashedPassword { get; set; } 10 | 11 | [BsonElement("_id")] 12 | public ObjectId ID { get; set; } 13 | 14 | [BsonElement("role")] 15 | public string Role { get; set; } 16 | 17 | [BsonElement("username")] 18 | public string Username { get; set; } 19 | } 20 | -------------------------------------------------------------------------------- /Source/New/Models/Slithin.Modules.Settings.Models/Builder/Attributes/DisplaySettingsAttribute.cs: -------------------------------------------------------------------------------- 1 | namespace Slithin.Modules.Settings.Models.Builder.Attributes; 2 | 3 | [AttributeUsage(AttributeTargets.Class)] 4 | public class DisplaySettingsAttribute : SettingsAttribute 5 | { 6 | public DisplaySettingsAttribute(string label) 7 | : base(label) 8 | { 9 | } 10 | 11 | public bool IsExpanded { get; set; } 12 | } 13 | -------------------------------------------------------------------------------- /Source/New/Models/Slithin.Modules.Settings.Models/Builder/Attributes/SelectionAttribute.cs: -------------------------------------------------------------------------------- 1 | namespace Slithin.Modules.Settings.Models.Builder.Attributes; 2 | 3 | public class SelectionAttribute : SettingsAttribute 4 | { 5 | public string? SelectionPropertyName { get; } 6 | 7 | public SelectionAttribute(string label, string? selectionPropertyName = null) : base(label) 8 | { 9 | SelectionPropertyName = selectionPropertyName; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Source/New/Models/Slithin.Modules.Settings.Models/Builder/Attributes/SettingsAttribute.cs: -------------------------------------------------------------------------------- 1 | namespace Slithin.Modules.Settings.Models.Builder.Attributes; 2 | 3 | [AttributeUsage(AttributeTargets.Property)] 4 | public class SettingsAttribute : Attribute 5 | { 6 | public string Label { get; } 7 | 8 | public SettingsAttribute(string label) 9 | { 10 | Label = label; 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Source/New/Models/Slithin.Modules.Settings.Models/Builder/Attributes/ToggleAttribute.cs: -------------------------------------------------------------------------------- 1 | namespace Slithin.Modules.Settings.Models.Builder.Attributes; 2 | 3 | public class ToggleAttribute : SettingsAttribute 4 | { 5 | public ToggleAttribute(string label) 6 | : base(label) 7 | { 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /Source/New/Models/Slithin.Modules.Settings.Models/Builder/ISettingsControlProvider.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Controls; 2 | using Slithin.Modules.Settings.Models.Builder.Attributes; 3 | 4 | namespace Slithin.Modules.Settings.Models.Builder; 5 | 6 | public interface ISettingsControlProvider 7 | { 8 | public Type AttributeType { get; } 9 | public Control Build(string bindingName, object settingsObj, SettingsAttribute settingsAttribute); 10 | public bool CanHandle(Type propType); 11 | public bool HideLabel { get; } 12 | } 13 | -------------------------------------------------------------------------------- /Source/New/Models/Slithin.Modules.Settings.Models/Builder/ISettingsUIBuilder.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Controls; 2 | 3 | namespace Slithin.Modules.Settings.Models.Builder; 4 | 5 | public interface ISettingsUiBuilder 6 | { 7 | void RegisterControlProvider(); 8 | 9 | void RegisterSettingsModel(); 10 | Control Build(); 11 | } 12 | -------------------------------------------------------------------------------- /Source/New/Models/Slithin.Modules.Settings.Models/IScreenRememberService.cs: -------------------------------------------------------------------------------- 1 | namespace Slithin.Modules.Settings.Models; 2 | 3 | public interface IScreenRememberService 4 | { 5 | bool HasMultipleScreens(); 6 | 7 | void Remember(); 8 | 9 | void Restore(); 10 | } 11 | -------------------------------------------------------------------------------- /Source/New/Models/Slithin.Modules.Settings.Models/ISettingsService.cs: -------------------------------------------------------------------------------- 1 | namespace Slithin.Modules.Settings.Models; 2 | 3 | public interface ISettingsService 4 | { 5 | SettingsModel GetSettings(); 6 | 7 | void Save(SettingsModel settings); 8 | } 9 | -------------------------------------------------------------------------------- /Source/New/Models/Slithin.Modules.Settings.Models/SavableSettingsModel.cs: -------------------------------------------------------------------------------- 1 | using Slithin.Core.MVVM; 2 | 3 | namespace Slithin.Modules.Settings.Models; 4 | 5 | public abstract class SavableSettingsModel : NotifyObject 6 | { 7 | public abstract void Save(); 8 | } 9 | -------------------------------------------------------------------------------- /Source/New/Models/Slithin.Modules.Settings.Models/SettingExtension.cs: -------------------------------------------------------------------------------- 1 | using AuroraModularis.Core; 2 | using Avalonia.Data; 3 | using Avalonia.Markup.Xaml; 4 | 5 | namespace Slithin.Modules.Settings.Models; 6 | 7 | public class SettingExtension : MarkupExtension 8 | { 9 | public SettingExtension(string key) 10 | { 11 | Key = key; 12 | } 13 | 14 | public string Key { get; set; } 15 | 16 | public override object ProvideValue(IServiceProvider serviceProvider) 17 | { 18 | var settings = ServiceContainer.Current.Resolve(); 19 | 20 | var binding = new Binding(Key) 21 | { 22 | Source = settings, 23 | Mode = BindingMode.TwoWay 24 | }; 25 | 26 | return binding; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /Source/New/Models/Slithin.Modules.Settings.Models/Slithin.Modules.Settings.Models.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net7.0 5 | enable 6 | enable 7 | True 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /Source/New/Models/Slithin.Modules.Sync.Models/ISynchronizeService.cs: -------------------------------------------------------------------------------- 1 | namespace Slithin.Modules.Sync.Models; 2 | 3 | public interface ISynchronizeService 4 | { 5 | Task Synchronize(bool notificationsInNewWindow); 6 | } 7 | -------------------------------------------------------------------------------- /Source/New/Models/Slithin.Modules.Sync.Models/Slithin.Modules.Sync.Models.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net7.0 5 | enable 6 | enable 7 | True 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /Source/New/Models/Slithin.Modules.Sync.Models/SyncNotebook.cs: -------------------------------------------------------------------------------- 1 | using Slithin.Entities.Remarkable; 2 | 3 | namespace Slithin.Modules.Sync.Models; 4 | 5 | public class SyncNotebook 6 | { 7 | public IEnumerable Directories { get; set; } = Array.Empty(); 8 | public IEnumerable Files { get; set; } = Array.Empty(); 9 | public Metadata Metadata { get; set; } 10 | } 11 | -------------------------------------------------------------------------------- /Source/New/Models/Slithin.Modules.Tools.Models/ITool.cs: -------------------------------------------------------------------------------- 1 | using Avalonia; 2 | using Avalonia.Controls; 3 | using Avalonia.Media; 4 | using Avalonia.Media.Imaging; 5 | using Avalonia.Platform; 6 | 7 | namespace Slithin.Modules.Tools.Models; 8 | 9 | public interface ITool 10 | { 11 | IImage Image { get; } 12 | ToolInfo Info { get; } 13 | 14 | bool IsConfigurable { get; } 15 | 16 | Control? GetModal(); 17 | 18 | void Invoke(object data); 19 | } 20 | 21 | public static class IToolExtensions 22 | { 23 | public static Bitmap LoadImage(this ITool tool, string name) 24 | { 25 | var assets = AvaloniaLocator.Current.GetService(); 26 | 27 | return new Bitmap(assets.Open(new Uri($"avares://{tool.GetType().Namespace}/Resources/{name}"))); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /Source/New/Models/Slithin.Modules.Tools.Models/IToolInvokerService.cs: -------------------------------------------------------------------------------- 1 | namespace Slithin.Modules.Tools.Models; 2 | 3 | public interface IToolInvokerService 4 | { 5 | Dictionary Tools { get; } 6 | 7 | void Init(); 8 | 9 | void Invoke(string id, ToolProperties props); 10 | } 11 | -------------------------------------------------------------------------------- /Source/New/Models/Slithin.Modules.Tools.Models/Slithin.Modules.Tools.Models.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net7.0 5 | enable 6 | enable 7 | True 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /Source/New/Models/Slithin.Modules.Tools.Models/ToolInfo.cs: -------------------------------------------------------------------------------- 1 | namespace Slithin.Modules.Tools.Models; 2 | 3 | public record ToolInfo(string ID, string Name, string Category, string Description, bool IsAutomatable, 4 | bool IsListed) 5 | { 6 | public object? Config { get; set; } 7 | } 8 | -------------------------------------------------------------------------------- /Source/New/Models/Slithin.Modules.Tools.Models/ToolProperties.cs: -------------------------------------------------------------------------------- 1 | namespace Slithin.Modules.Tools.Models; 2 | 3 | public class ToolProperties : Dictionary 4 | { 5 | 6 | } 7 | -------------------------------------------------------------------------------- /Source/New/Models/Slithin.Modules.Updater.Models/IUpdater.cs: -------------------------------------------------------------------------------- 1 | namespace Slithin.Modules.Updater.Models; 2 | 3 | public interface IUpdaterService 4 | { 5 | public Task CheckForUpdate(); 6 | 7 | public Task StartUpdate(); 8 | } 9 | -------------------------------------------------------------------------------- /Source/New/Models/Slithin.Modules.Updater.Models/Slithin.Modules.Updater.Models.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net7.0 5 | enable 6 | enable 7 | True 8 | 1.0.21 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /Source/New/Models/Slithin.Modules.Updater.Models/ViewModels/ItemViewModel.cs: -------------------------------------------------------------------------------- 1 | using NuGet.Versioning; 2 | using Slithin.Core.MVVM; 3 | 4 | namespace Slithin.Modules.Updater.Models.ViewModels; 5 | 6 | public class ItemViewModel : BaseViewModel 7 | { 8 | private bool _isDone; 9 | 10 | public string Name { get; set; } 11 | public NuGetVersion Version { get; set; } 12 | 13 | public bool IsDone 14 | { 15 | get => _isDone; 16 | set => SetValue(ref _isDone, value); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Backup/Models/BackupModel.cs: -------------------------------------------------------------------------------- 1 | namespace Slithin.Modules.Backup.Models; 2 | 3 | internal class BackupModel 4 | { 5 | public BackupModel(string name, string filename) 6 | { 7 | Name = name; 8 | Filename = filename; 9 | } 10 | 11 | public string Filename { get; set; } 12 | public string Name { get; set; } 13 | } 14 | -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Backup/Module.cs: -------------------------------------------------------------------------------- 1 | using AuroraModularis.Core; 2 | 3 | namespace Slithin.Modules.Backup; 4 | 5 | internal class Module : AuroraModularis.Module 6 | { 7 | public override Task OnStart(ServiceContainer container) 8 | { 9 | return Task.CompletedTask; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Backup/Resources/backup.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/New/Modules/Slithin.Modules.Backup/Resources/backup.png -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Backup/Resources/restore.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/New/Modules/Slithin.Modules.Backup/Resources/restore.png -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Backup/SelectBackupModal.axaml: -------------------------------------------------------------------------------- 1 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Backup/SelectBackupModal.axaml.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Controls; 2 | using Avalonia.Markup.Xaml; 3 | 4 | namespace Slithin.Modules.Backup; 5 | 6 | public partial class SelectBackupModal : UserControl 7 | { 8 | public SelectBackupModal() 9 | { 10 | InitializeComponent(); 11 | } 12 | 13 | private void InitializeComponent() 14 | { 15 | AvaloniaXamlLoader.Load(this); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Backup/ViewModels/SelectBackupViewModel.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.ObjectModel; 2 | using Slithin.Core.MVVM; 3 | using Slithin.Modules.Backup.Models; 4 | 5 | namespace Slithin.Modules.Backup.ViewModels; 6 | 7 | internal class SelectBackupViewModel : ModalBaseViewModel 8 | { 9 | private BackupModel _selectedBackup; 10 | public ObservableCollection Backups { get; set; } = new(); 11 | 12 | public BackupModel SelectedBackup 13 | { 14 | get => _selectedBackup; 15 | set => SetValue(ref _selectedBackup, value); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.BaseServices/DeviceDiscoveryImpl.cs: -------------------------------------------------------------------------------- 1 | using System.Net; 2 | using System.Net.NetworkInformation; 3 | using System.Text; 4 | using Slithin.Modules.BaseServices.Models; 5 | 6 | namespace Slithin.Modules.BaseServices; 7 | 8 | internal class DeviceDiscoveryImpl : IDeviceDiscovery 9 | { 10 | public IPAddress? Discover() 11 | { 12 | try 13 | { 14 | return Dns.GetHostAddresses("remarkable") 15 | .FirstOrDefault(ip => ip.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork); 16 | } 17 | catch 18 | { 19 | return null; 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Device.Mock/device.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/New/Modules/Slithin.Modules.Device.Mock/device.zip -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Device.UI/Module.cs: -------------------------------------------------------------------------------- 1 | using AuroraModularis.Core; 2 | using Slithin.Modules.Device.UI.ViewModels; 3 | 4 | namespace Slithin.Modules.Device.UI; 5 | 6 | [Priority(ModulePriority.Max)] 7 | internal class Module : AuroraModularis.Module 8 | { 9 | public override Task OnStart(ServiceContainer container) 10 | { 11 | return Task.CompletedTask; 12 | } 13 | 14 | public override void RegisterServices(ServiceContainer container) 15 | { 16 | container.Register(); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Device.UI/Resources/DefaultScreens/batteryempty.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/New/Modules/Slithin.Modules.Device.UI/Resources/DefaultScreens/batteryempty.png -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Device.UI/Resources/DefaultScreens/lowbattery.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/New/Modules/Slithin.Modules.Device.UI/Resources/DefaultScreens/lowbattery.png -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Device.UI/Resources/DefaultScreens/poweroff.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/New/Modules/Slithin.Modules.Device.UI/Resources/DefaultScreens/poweroff.png -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Device.UI/Resources/DefaultScreens/rebooting.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/New/Modules/Slithin.Modules.Device.UI/Resources/DefaultScreens/rebooting.png -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Device.UI/Resources/DefaultScreens/splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/New/Modules/Slithin.Modules.Device.UI/Resources/DefaultScreens/splash.png -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Device.UI/Resources/DefaultScreens/starting.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/New/Modules/Slithin.Modules.Device.UI/Resources/DefaultScreens/starting.png -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Device.UI/Resources/DefaultScreens/suspended.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/New/Modules/Slithin.Modules.Device.UI/Resources/DefaultScreens/suspended.png -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Device/Module.cs: -------------------------------------------------------------------------------- 1 | using AuroraModularis.Core; 2 | using Slithin.Modules.Device.Models; 3 | 4 | namespace Slithin.Modules.Device; 5 | 6 | internal class Module : AuroraModularis.Module 7 | { 8 | public override Task OnStart(ServiceContainer container) 9 | { 10 | var xochitl = container.Resolve(); 11 | //xochitl.Init(); 12 | 13 | return Task.CompletedTask; 14 | } 15 | 16 | public override void RegisterServices(ServiceContainer container) 17 | { 18 | container.Register(new DeviceImplementation()).AsSingleton(); 19 | container.Register(new XochitlImpl(container)).AsSingleton(); 20 | container.Register(new DevicePathList()).AsSingleton(); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Diagnostics.Sentry/DiagnosticService.cs: -------------------------------------------------------------------------------- 1 | using Sentry; 2 | using Slithin.Modules.Diagnostics.Sentry.Models; 3 | 4 | namespace Slithin.Modules.Diagnostics.Sentry; 5 | 6 | internal class DiagnosticServiceImpl : IDiagnosticService 7 | { 8 | public IDisposable StartPerformanceMonitoring(string name, string operation) 9 | { 10 | return new PerformanceMonitor(name, operation); 11 | } 12 | 13 | public void TrackException(Exception exception) 14 | { 15 | SentrySdk.CaptureException(exception); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Diagnostics.Sentry/FeedbackService.cs: -------------------------------------------------------------------------------- 1 | using Sentry; 2 | using Slithin.Modules.Diagnostics.Sentry.Models; 3 | 4 | namespace Slithin.Modules.Diagnostics.Sentry; 5 | 6 | internal class FeedbackServiceImpl : IFeedbackService 7 | { 8 | public void SendFeedback(string message) 9 | { 10 | var eventId = SentrySdk.CaptureMessage("An event that will receive user feedback."); 11 | SentrySdk.CaptureUserFeedback(eventId, "fake@slithin.sl", message, Environment.UserName); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Diagnostics.Sentry/SettingsModel.cs: -------------------------------------------------------------------------------- 1 | namespace Slithin.Modules.Diagnostics.Sentry; 2 | 3 | internal class SettingsModel 4 | { 5 | public string Environment { get; set; } = "Debug"; 6 | public bool Debug { get; set; } = true; 7 | public double TracesSampleRate { get; set; } = 1.0; 8 | public string DSN { get; set; } = "https://9e8ac6689c704e8493d1753b8788fc57@o207953.ingest.sentry.io/6366736"; 9 | } 10 | -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Diagnostics.Sentry/Slithin.Modules.Diagnostics.Sentry.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net7.0 5 | enable 6 | enable 7 | True 8 | 1.0.21 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Export/ContextualMenuProvider.cs: -------------------------------------------------------------------------------- 1 | using AuroraModularis.Core; 2 | using Slithin.Modules.Export.Commands; 3 | using Slithin.Modules.Menu.Models.ContextualMenu; 4 | using Slithin.Modules.Menu.Models.ContextualMenu.ContextualElements; 5 | using Slithin.Modules.Menu.Models.ItemContext; 6 | 7 | namespace Slithin.Modules.Export; 8 | 9 | internal class ContextualMenuProvider : IContextualMenuProvider 10 | { 11 | public void RegisterContextualMenuElements(ContextualRegistrar registrar) 12 | { 13 | var exportCommand = ServiceContainer.Current.Resolve(); 14 | 15 | registrar.RegisterFor(UIContext.Notebook, 16 | new ContextualButton("Export", "Material.ExportVariant", exportCommand)); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Export/ExportModal.axaml.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Controls; 2 | using Avalonia.Markup.Xaml; 3 | 4 | namespace Slithin.Modules.Export; 5 | 6 | public partial class ExportModal : UserControl 7 | { 8 | public ExportModal() 9 | { 10 | InitializeComponent(); 11 | } 12 | 13 | private void InitializeComponent() 14 | { 15 | AvaloniaXamlLoader.Load(this); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Export/Rendering/RenderingServiceImpl.Png.cs: -------------------------------------------------------------------------------- 1 | using Slithin.Entities.Remarkable; 2 | using Slithin.Entities.Remarkable.Rendering; 3 | using Slithin.Modules.Export.Models; 4 | 5 | namespace Slithin.Modules.Export.Rendering; 6 | 7 | internal partial class RenderingServiceImpl : IRenderingService 8 | { 9 | public Stream RenderPng(Page page, int pageIndex, Metadata md, bool shouldHideTemplates = false, int width = 1404, 10 | int height = 1872) 11 | { 12 | throw new NotImplementedException(); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Export/Validators/ExportValidator.cs: -------------------------------------------------------------------------------- 1 | using FluentValidation; 2 | using Slithin.Modules.Export.ViewModels; 3 | using Slithin.Modules.I18N.Models; 4 | 5 | namespace Slithin.Modules.Export.Validators; 6 | 7 | public class ExportValidator : AbstractValidator 8 | { 9 | public ExportValidator(ILocalisationService localisationService) 10 | { 11 | RuleFor(x => x.PagesSelector).NotEmpty() 12 | .WithLocalisedMessage("Select at least one page"); 13 | 14 | RuleFor(x => x.ExportPath) 15 | .NotNull() 16 | .WithLocalisedMessage("No export path specified"); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.FirstStart/FirstStartWindow.axaml.cs: -------------------------------------------------------------------------------- 1 | using AuroraModularis.Core; 2 | using Avalonia; 3 | using Avalonia.Controls; 4 | using Avalonia.Markup.Xaml; 5 | using Slithin.Modules.FirstStart.ViewModels; 6 | 7 | namespace Slithin.Modules.FirstStart; 8 | 9 | public partial class FirstStartWindow : Window 10 | { 11 | public FirstStartWindow() 12 | { 13 | InitializeComponent(); 14 | #if DEBUG 15 | this.AttachDevTools(); 16 | #endif 17 | } 18 | 19 | private void InitializeComponent() 20 | { 21 | AvaloniaXamlLoader.Load(this); 22 | 23 | var vm = ServiceContainer.Current.Resolve(); 24 | vm.Load(); 25 | 26 | vm.OnRequestClose += () => Close(); 27 | 28 | DataContext = vm; 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.FirstStart/Resources/Icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/New/Modules/Slithin.Modules.FirstStart/Resources/Icon.png -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.FirstStart/Steps/DeviceStep.axaml.cs: -------------------------------------------------------------------------------- 1 | using AuroraModularis.Core; 2 | using Avalonia.Controls; 3 | using Avalonia.Markup.Xaml; 4 | using Slithin.Modules.FirstStart.ViewModels; 5 | 6 | namespace Slithin.Modules.FirstStart.Steps; 7 | 8 | public partial class DeviceStep : UserControl 9 | { 10 | public DeviceStep() 11 | { 12 | InitializeComponent(); 13 | } 14 | 15 | private void InitializeComponent() 16 | { 17 | AvaloniaXamlLoader.Load(this); 18 | 19 | DataContext = ServiceContainer.Current.Resolve(); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.FirstStart/Steps/FinishStep.axaml.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Controls; 2 | using Avalonia.Markup.Xaml; 3 | 4 | namespace Slithin.Modules.FirstStart.Steps; 5 | public partial class FinishStep : UserControl 6 | { 7 | public FinishStep() 8 | { 9 | InitializeComponent(); 10 | } 11 | 12 | private void InitializeComponent() 13 | { 14 | AvaloniaXamlLoader.Load(this); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.FirstStart/Steps/SettingsStep.axaml.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Controls; 2 | using Avalonia.Markup.Xaml; 3 | 4 | namespace Slithin.Modules.FirstStart.Steps; 5 | 6 | public partial class SettingsStep : UserControl 7 | { 8 | public SettingsStep() 9 | { 10 | InitializeComponent(); 11 | } 12 | 13 | private void InitializeComponent() 14 | { 15 | AvaloniaXamlLoader.Load(this); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.FirstStart/Steps/WelcomeStep.axaml.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Controls; 2 | using Avalonia.Markup.Xaml; 3 | 4 | namespace Slithin.Modules.FirstStart.Steps; 5 | public partial class WelcomeStep : UserControl 6 | { 7 | public WelcomeStep() 8 | { 9 | InitializeComponent(); 10 | } 11 | 12 | private void InitializeComponent() 13 | { 14 | AvaloniaXamlLoader.Load(this); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.FirstStart/ViewModels/DeviceStepViewModel.cs: -------------------------------------------------------------------------------- 1 | using Slithin.Core.MVVM; 2 | using Slithin.Entities; 3 | using Slithin.Modules.BaseServices.Models; 4 | 5 | namespace Slithin.Modules.FirstStart.ViewModels; 6 | 7 | internal class DeviceStepViewModel : BaseViewModel 8 | { 9 | private LoginInfo _selectedLogin = new(); 10 | 11 | public DeviceStepViewModel(IDeviceDiscovery deviceDiscovery) 12 | { 13 | var ip = deviceDiscovery.Discover(); 14 | 15 | if (ip != null) 16 | { 17 | SelectedLogin.IP = ip.ToString(); 18 | } 19 | } 20 | 21 | public LoginInfo SelectedLogin 22 | { 23 | get { return _selectedLogin; } 24 | set { SetValue(ref _selectedLogin, value); } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.FirstStart/ViewModels/LoginInfoViewModel.cs: -------------------------------------------------------------------------------- 1 | using Slithin.Core.MVVM; 2 | using Slithin.Entities; 3 | 4 | namespace Slithin.Modules.FirstStart.ViewModels; 5 | 6 | internal class LoginInfoViewModel : BaseViewModel 7 | { 8 | public LoginInfo SelectedLogin { get; set; } = new(); 9 | } 10 | -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.FirstStart/ViewModels/SettingsViewModel.cs: -------------------------------------------------------------------------------- 1 | using Slithin.Core.MVVM; 2 | using Slithin.Modules.Settings.Models; 3 | 4 | namespace Slithin.Modules.FirstStart.ViewModels; 5 | 6 | internal class SettingsViewModel : BaseViewModel 7 | { 8 | public SettingsModel Settings { get; set; } = new(); 9 | } 10 | -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.I18N/Module.cs: -------------------------------------------------------------------------------- 1 | using AuroraModularis.Core; 2 | using Slithin.Modules.I18N.Models; 3 | 4 | namespace Slithin.Modules.I18N; 5 | 6 | [Priority(ModulePriority.High)] 7 | internal class Module : AuroraModularis.Module 8 | { 9 | public override Task OnStart(ServiceContainer container) 10 | { 11 | return Task.CompletedTask; 12 | } 13 | 14 | public override void RegisterServices(ServiceContainer container) 15 | { 16 | var service = new LocalisationServiceImpl(); 17 | 18 | container.Register(service).AsSingleton(); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Import/Module.cs: -------------------------------------------------------------------------------- 1 | using AuroraModularis.Core; 2 | using Slithin.Modules.Import.Models; 3 | 4 | namespace Slithin.Modules.Import; 5 | 6 | [Priority] 7 | public class Module : AuroraModularis.Module 8 | { 9 | public override Task OnStart(ServiceContainer container) 10 | { 11 | var factoryProvider = container.Resolve(); 12 | factoryProvider.Init(); 13 | 14 | return Task.CompletedTask; 15 | } 16 | 17 | public override void RegisterServices(ServiceContainer container) 18 | { 19 | container.Register(new ImportProviderFactoryImpl()).AsSingleton(); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Import/Providers/NotebookImportProvider.cs: -------------------------------------------------------------------------------- 1 | using Slithin.Modules.Import.Models; 2 | 3 | namespace Slithin.Modules.Import.Providers; 4 | 5 | [ImportProviderBaseType(".pdf")] 6 | [ImportProviderBaseType(".epub")] 7 | public class NotebookImportProvider : IImportProvider 8 | { 9 | public bool CanHandle(string filename) 10 | => Path.GetExtension(filename) is ".pdf" or ".epub"; 11 | 12 | public Stream Import(Stream source) 13 | => source; 14 | } 15 | -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Import/Providers/PngImportProvider.cs: -------------------------------------------------------------------------------- 1 | using Slithin.Modules.Import.Models; 2 | 3 | namespace Slithin.Modules.Import.Providers; 4 | 5 | [ImportProviderBaseType(".png")] 6 | public class PngImportProvider : IImportProvider 7 | { 8 | public bool CanHandle(string filename) 9 | => Path.GetExtension(filename) == ".png"; 10 | 11 | public Stream Import(Stream source) 12 | => source; 13 | } 14 | -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Import/Slithin.Modules.Import.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net7.0 5 | enable 6 | enable 7 | True 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Menu/Views/DefaultContextualMenu.axaml.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Controls; 2 | using Avalonia.Markup.Xaml; 3 | 4 | namespace Slithin.Modules.Menu.Views; 5 | 6 | public partial class DefaultContextualMenu : UserControl 7 | { 8 | public DefaultContextualMenu() 9 | { 10 | InitializeComponent(); 11 | } 12 | 13 | private void InitializeComponent() 14 | { 15 | AvaloniaXamlLoader.Load(this); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Menu/Views/EmptyContextualMenu.axaml: -------------------------------------------------------------------------------- 1 | 7 | 8 | -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Menu/Views/EmptyContextualMenu.axaml.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Controls; 2 | using Avalonia.Markup.Xaml; 3 | 4 | namespace Slithin.Modules.Menu.Views; 5 | 6 | public partial class EmptyContextualMenu : UserControl 7 | { 8 | public EmptyContextualMenu() 9 | { 10 | InitializeComponent(); 11 | } 12 | 13 | private void InitializeComponent() 14 | { 15 | AvaloniaXamlLoader.Load(this); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Notebooks.UI/Module.cs: -------------------------------------------------------------------------------- 1 | using AuroraModularis.Core; 2 | using Slithin.Core.FeatureToggle; 3 | using Slithin.Modules.Notebooks.UI.ViewModels; 4 | 5 | namespace Slithin.Modules.Notebooks.UI; 6 | 7 | [Priority(ModulePriority.Max)] 8 | internal class Module : AuroraModularis.Module 9 | { 10 | public override Task OnStart(ServiceContainer container) 11 | { 12 | return Task.CompletedTask; 13 | } 14 | 15 | public override void OnInit() 16 | { 17 | Features.Collect(); 18 | Features.EnableAll(); 19 | } 20 | 21 | public override void RegisterServices(ServiceContainer container) 22 | { 23 | container.Register(); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Notebooks.UI/Resources/Icons.axaml: -------------------------------------------------------------------------------- 1 |  3 | 4 | 5 | -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Notebooks.UI/Resources/notebook.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/New/Modules/Slithin.Modules.Notebooks.UI/Resources/notebook.png -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Notebooks.UI/Resources/pdf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/New/Modules/Slithin.Modules.Notebooks.UI/Resources/pdf.png -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Notebooks.UI/UI/ViewDropDown.axaml.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Controls; 2 | using Avalonia.Markup.Xaml; 3 | 4 | namespace Slithin.Modules.Notebooks.UI.UI; 5 | 6 | public partial class ViewDropDown : UserControl 7 | { 8 | public ViewDropDown() 9 | { 10 | InitializeComponent(); 11 | } 12 | 13 | private void InitializeComponent() 14 | { 15 | AvaloniaXamlLoader.Load(this); 16 | } 17 | } 18 | 19 | -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.PdfNotebookTools/Models/NotebookCustomPage.cs: -------------------------------------------------------------------------------- 1 | namespace Slithin.Modules.PdfNotebookTools.Models; 2 | 3 | public class NotebookCustomPage 4 | { 5 | public NotebookCustomPage(string filename, int count) 6 | { 7 | Filename = filename; 8 | Count = count; 9 | ShortName = Path.GetFileName(filename); 10 | } 11 | 12 | public int Count { get; set; } 13 | public string Filename { get; set; } 14 | public string ShortName { get; set; } 15 | } -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.PdfNotebookTools/Models/NotebookPage.cs: -------------------------------------------------------------------------------- 1 | using Slithin.Entities.Remarkable; 2 | 3 | namespace Slithin.Modules.PdfNotebookTools.Models; 4 | 5 | public class NotebookPage 6 | { 7 | public NotebookPage(Template template, int count) 8 | { 9 | Template = template; 10 | Count = count; 11 | } 12 | 13 | public int Count { get; set; } 14 | public Template Template { get; set; } 15 | } 16 | -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.PdfNotebookTools/Module.cs: -------------------------------------------------------------------------------- 1 | using AuroraModularis.Core; 2 | using Slithin.Modules.PdfNotebookTools.Validators; 3 | 4 | namespace Slithin.Modules.PdfNotebookTools; 5 | 6 | internal class Module : AuroraModularis.Module 7 | { 8 | public override Task OnStart(ServiceContainer container) 9 | { 10 | return Task.CompletedTask; 11 | } 12 | 13 | public override void RegisterServices(ServiceContainer container) 14 | { 15 | container.Register(); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.PdfNotebookTools/Resources/Cover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/New/Modules/Slithin.Modules.PdfNotebookTools/Resources/Cover.png -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.PdfNotebookTools/Resources/Covers/Folder-DBlue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/New/Modules/Slithin.Modules.PdfNotebookTools/Resources/Covers/Folder-DBlue.png -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.PdfNotebookTools/Resources/Covers/Folder-Green.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/New/Modules/Slithin.Modules.PdfNotebookTools/Resources/Covers/Folder-Green.png -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.PdfNotebookTools/Resources/Covers/Folder-Grey.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/New/Modules/Slithin.Modules.PdfNotebookTools/Resources/Covers/Folder-Grey.png -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.PdfNotebookTools/Resources/Covers/Folder-LBlue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/New/Modules/Slithin.Modules.PdfNotebookTools/Resources/Covers/Folder-LBlue.png -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.PdfNotebookTools/Resources/Covers/Folder-Lime.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/New/Modules/Slithin.Modules.PdfNotebookTools/Resources/Covers/Folder-Lime.png -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.PdfNotebookTools/Resources/Covers/Folder-Orange.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/New/Modules/Slithin.Modules.PdfNotebookTools/Resources/Covers/Folder-Orange.png -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.PdfNotebookTools/Resources/Covers/Folder-Pink.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/New/Modules/Slithin.Modules.PdfNotebookTools/Resources/Covers/Folder-Pink.png -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.PdfNotebookTools/Resources/Covers/Folder-Purple.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/New/Modules/Slithin.Modules.PdfNotebookTools/Resources/Covers/Folder-Purple.png -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.PdfNotebookTools/Resources/Covers/Folder-Red.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/New/Modules/Slithin.Modules.PdfNotebookTools/Resources/Covers/Folder-Red.png -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.PdfNotebookTools/Resources/Covers/Folder-Turquoise.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/New/Modules/Slithin.Modules.PdfNotebookTools/Resources/Covers/Folder-Turquoise.png -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.PdfNotebookTools/Resources/Covers/Folder-White.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/New/Modules/Slithin.Modules.PdfNotebookTools/Resources/Covers/Folder-White.png -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.PdfNotebookTools/Resources/Covers/Folder-Yellow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/New/Modules/Slithin.Modules.PdfNotebookTools/Resources/Covers/Folder-Yellow.png -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.PdfNotebookTools/Resources/pdf_append.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/New/Modules/Slithin.Modules.PdfNotebookTools/Resources/pdf_append.png -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.PdfNotebookTools/Validators/AppendNotebookValidator.cs: -------------------------------------------------------------------------------- 1 | using FluentValidation; 2 | using Slithin.Modules.I18N.Models; 3 | using Slithin.Modules.PdfNotebookTools.ViewModels; 4 | 5 | namespace Slithin.Modules.PdfNotebookTools.Validators; 6 | 7 | public class AppendNotebookValidator : AbstractValidator 8 | { 9 | public AppendNotebookValidator() 10 | { 11 | RuleFor(x => x.Pages).Must(_ => _.Count > 0) 12 | .WithLocalisedMessage("You have to add at least 1 new page"); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.PdfNotebookTools/Validators/CreateNotebookValidator.cs: -------------------------------------------------------------------------------- 1 | using FluentValidation; 2 | using Slithin.Modules.I18N.Models; 3 | using Slithin.Modules.PdfNotebookTools.ViewModels; 4 | 5 | namespace Slithin.Modules.PdfNotebookTools.Validators; 6 | 7 | public class CreateNotebookValidator : AbstractValidator 8 | { 9 | public CreateNotebookValidator() 10 | { 11 | RuleFor(x => x.Title).NotEmpty().WithLocalisedMessage("Title cannot be empty"); 12 | RuleFor(x => x.Pages).Must(_ => _.Count > 0) 13 | .WithLocalisedMessage("A notebook has to have at least 1 page"); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.PdfNotebookTools/Views/AppendNotebookModal.axaml.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Controls; 2 | using Avalonia.Markup.Xaml; 3 | 4 | namespace Slithin.Modules.PdfNotebookTools.Views; 5 | 6 | public partial class AppendNotebookModal : UserControl 7 | { 8 | public AppendNotebookModal() 9 | { 10 | InitializeComponent(); 11 | } 12 | 13 | private void InitializeComponent() 14 | { 15 | AvaloniaXamlLoader.Load(this); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Resources.UI/AuthenticationResult.cs: -------------------------------------------------------------------------------- 1 | using Newtonsoft.Json; 2 | 3 | namespace Slithin.Modules.Resources.UI; 4 | 5 | public class AuthenticationResult 6 | { 7 | [JsonProperty("access_token")] 8 | public string AccessToken { get; set; } 9 | } 10 | -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Resources.UI/LoginModal.axaml.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Controls; 2 | using Avalonia.Markup.Xaml; 3 | using Slithin.Core.MVVM; 4 | using Slithin.Modules.Resources.UI.ViewModels; 5 | 6 | namespace Slithin.Modules.Resources.UI; 7 | 8 | public partial class LoginModal : UserControl 9 | { 10 | public LoginModal() 11 | { 12 | InitializeComponent(); 13 | } 14 | 15 | private void InitializeComponent() 16 | { 17 | AvaloniaXamlLoader.Load(this); 18 | 19 | BaseViewModel.ApplyViewModel(this); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Resources.UI/Module.cs: -------------------------------------------------------------------------------- 1 | using AuroraModularis.Core; 2 | 3 | namespace Slithin.Modules.Resources.UI; 4 | 5 | internal class Module : AuroraModularis.Module 6 | { 7 | public override Task OnStart(ServiceContainer container) 8 | { 9 | return Task.CompletedTask; 10 | } 11 | 12 | public override void RegisterServices(ServiceContainer serviceContainer) 13 | { 14 | serviceContainer.Register().AsSingleton(); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Resources.UI/Pages/ListPage.axaml.cs: -------------------------------------------------------------------------------- 1 | using AuroraModularis.Core; 2 | using Avalonia.Controls; 3 | using Avalonia.Markup.Xaml; 4 | using Slithin.Modules.Resources.UI.ViewModels; 5 | 6 | namespace Slithin.Modules.Resources.UI.Pages; 7 | 8 | public partial class ListPage : UserControl 9 | { 10 | public ListPage() 11 | { 12 | InitializeComponent(); 13 | } 14 | 15 | private void InitializeComponent() 16 | { 17 | AvaloniaXamlLoader.Load(this); 18 | 19 | DataContext = ServiceContainer.Current.Resolve(); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Resources.UI/Pages/LoginFramePage.axaml: -------------------------------------------------------------------------------- 1 | 9 | 10 | -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Resources.UI/Pages/LoginFramePage.axaml.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Controls; 2 | using Avalonia.Markup.Xaml; 3 | 4 | namespace Slithin.Modules.Resources.UI.Pages; 5 | public partial class LoginFramePage : UserControl 6 | { 7 | public LoginFramePage() 8 | { 9 | InitializeComponent(); 10 | } 11 | 12 | private void InitializeComponent() 13 | { 14 | AvaloniaXamlLoader.Load(this); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Resources.UI/Pages/RegisterFramePage.axaml: -------------------------------------------------------------------------------- 1 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Resources.UI/Pages/RegisterFramePage.axaml.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Controls; 2 | using Avalonia.Markup.Xaml; 3 | 4 | namespace Slithin.Modules.Resources.UI.Pages; 5 | 6 | public partial class RegisterFramePage : UserControl 7 | { 8 | public RegisterFramePage() 9 | { 10 | InitializeComponent(); 11 | } 12 | 13 | private void InitializeComponent() 14 | { 15 | AvaloniaXamlLoader.Load(this); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Resources.UI/Pages/ResourcesMainPage.axaml.cs: -------------------------------------------------------------------------------- 1 | using AuroraModularis.Core; 2 | using Avalonia.Controls; 3 | using Avalonia.Markup.Xaml; 4 | using Slithin.Modules.Resources.UI.ViewModels; 5 | 6 | namespace Slithin.Modules.Resources.UI.Pages; 7 | 8 | public partial class ResourcesMainPage : UserControl 9 | { 10 | public ResourcesMainPage() 11 | { 12 | InitializeComponent(); 13 | } 14 | 15 | private void InitializeComponent() 16 | { 17 | AvaloniaXamlLoader.Load(this); 18 | 19 | if (!Design.IsDesignMode) 20 | { 21 | DataContext = ServiceContainer.Current.Resolve(); 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Resources.UI/Resources/Icons.xml: -------------------------------------------------------------------------------- 1 | 3 | 4 | -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Resources.UI/ResourcesPage.axaml: -------------------------------------------------------------------------------- 1 | 8 | 9 | -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Resources.UI/ViewModels/ResourceListViewModel.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.ObjectModel; 2 | using Slithin.Core.MVVM; 3 | using Slithin.Modules.Resources.Models; 4 | 5 | namespace Slithin.Modules.Resources.UI.ViewModels; 6 | 7 | public class ResourceListViewModel : BaseViewModel 8 | { 9 | private ObservableCollection _items; 10 | 11 | public ObservableCollection Items 12 | { 13 | get { return _items; } 14 | set { SetValue(ref _items, value); } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Settings.UI/Builder/ControlProviders/DateTimeProvider.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Controls; 2 | using Slithin.Modules.Settings.Models.Builder; 3 | using Slithin.Modules.Settings.Models.Builder.Attributes; 4 | 5 | namespace Slithin.Modules.Settings.UI.Builder.ControlProviders; 6 | 7 | public class DateTimeProvider : ISettingsControlProvider 8 | { 9 | public Type AttributeType => typeof(SettingsAttribute); 10 | public Control Build(string bindingName, object settingsObj, SettingsAttribute settingsAttribute) 11 | { 12 | return new DatePicker() { }; 13 | } 14 | 15 | public bool CanHandle(Type propType) 16 | { 17 | return propType == typeof(DateTime) || propType == typeof(DateOnly); 18 | } 19 | 20 | public bool HideLabel { get; } 21 | } 22 | -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Settings.UI/Builder/ControlProviders/TimeProvider.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Controls; 2 | using Slithin.Modules.Settings.Models.Builder; 3 | using Slithin.Modules.Settings.Models.Builder.Attributes; 4 | 5 | namespace Slithin.Modules.Settings.UI.Builder.ControlProviders; 6 | 7 | public class TimeProvider : ISettingsControlProvider 8 | { 9 | public Type AttributeType => typeof(SettingsAttribute); 10 | public Control Build(string bindingName, object settingsObj, SettingsAttribute settingsAttribute) 11 | { 12 | return new TimePicker(); 13 | } 14 | 15 | public bool CanHandle(Type propType) 16 | { 17 | return propType == typeof(TimeOnly); 18 | } 19 | 20 | public bool HideLabel { get; } 21 | } 22 | -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Settings.UI/Commands/BuyCoffeeCommand.cs: -------------------------------------------------------------------------------- 1 | using System.Windows.Input; 2 | using Slithin.Core; 3 | 4 | namespace Slithin.Modules.Settings.UI.Commands; 5 | 6 | public class BuyCoffeeCommand : ICommand 7 | { 8 | public bool CanExecute(object? parameter) => true; 9 | public void Execute(object? parameter) 10 | { 11 | Utils.OpenUrl("https://www.buymeacoffee.com/furesoft"); 12 | } 13 | 14 | public event EventHandler? CanExecuteChanged; 15 | } 16 | -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Settings.UI/Commands/FeedbackCommand.cs: -------------------------------------------------------------------------------- 1 | using System.Windows.Input; 2 | 3 | namespace Slithin.Modules.Settings.UI.Commands; 4 | 5 | public class FeedbackCommand : ICommand 6 | { 7 | public bool CanExecute(object? parameter) => true; 8 | public void Execute(object? parameter) 9 | { 10 | var feedbackWindow = new FeedbackWindow(); 11 | feedbackWindow.Show(); 12 | } 13 | 14 | public event EventHandler? CanExecuteChanged; 15 | } 16 | -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Settings.UI/FeedbackWindow.axaml.cs: -------------------------------------------------------------------------------- 1 | using Avalonia; 2 | using Avalonia.Controls; 3 | using Avalonia.Markup.Xaml; 4 | using Slithin.Core.MVVM; 5 | using Slithin.Modules.Settings.UI.ViewModels; 6 | 7 | namespace Slithin.Modules.Settings.UI; 8 | 9 | public partial class FeedbackWindow : Window 10 | { 11 | public FeedbackWindow() 12 | { 13 | InitializeComponent(); 14 | #if DEBUG 15 | this.AttachDevTools(); 16 | #endif 17 | } 18 | 19 | private void InitializeComponent() 20 | { 21 | AvaloniaXamlLoader.Load(this); 22 | 23 | BaseViewModel.ApplyViewModel(this); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Settings.UI/Icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/New/Modules/Slithin.Modules.Settings.UI/Icon.png -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Settings.UI/Modals/AboutModal.axaml.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Controls; 2 | using Avalonia.Markup.Xaml; 3 | 4 | namespace Slithin.Modules.Settings.UI.Modals; 5 | 6 | public partial class AboutModal : UserControl 7 | { 8 | public AboutModal() 9 | { 10 | InitializeComponent(); 11 | } 12 | 13 | private void InitializeComponent() 14 | { 15 | AvaloniaXamlLoader.Load(this); 16 | } 17 | } 18 | 19 | -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Settings.UI/Modals/SupportModal.axaml.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Controls; 2 | using Avalonia.Markup.Xaml; 3 | 4 | namespace Slithin.Modules.Settings.UI.Modals; 5 | 6 | public partial class SupportModal : UserControl 7 | { 8 | public SupportModal() 9 | { 10 | InitializeComponent(); 11 | } 12 | 13 | private void InitializeComponent() 14 | { 15 | AvaloniaXamlLoader.Load(this); 16 | } 17 | } 18 | 19 | -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Settings.UI/SettingsPage.axaml: -------------------------------------------------------------------------------- 1 | 7 | 8 | -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Sync/Module.cs: -------------------------------------------------------------------------------- 1 | using AuroraModularis.Core; 2 | using Slithin.Modules.Sync.Models; 3 | 4 | namespace Slithin.Modules.Sync; 5 | 6 | public class Module : AuroraModularis.Module 7 | { 8 | public override Task OnStart(ServiceContainer container) 9 | { 10 | return Task.CompletedTask; 11 | } 12 | 13 | public override void RegisterServices(ServiceContainer container) 14 | { 15 | container.Register().AsSingleton(); 16 | container.Register().AsSingleton(); 17 | container.Register(new SynchronizeImpl()).AsSingleton(); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.TemplateCreator/Module.cs: -------------------------------------------------------------------------------- 1 | using AuroraModularis.Core; 2 | 3 | namespace Slithin.Modules.TemplateCreator; 4 | 5 | public class Module : AuroraModularis.Module 6 | { 7 | public override Task OnStart(ServiceContainer serviceContainer) 8 | { 9 | 10 | return Task.CompletedTask; 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.TemplateCreator/TemplateEditorControl.axaml.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Controls; 2 | using Avalonia.Markup.Xaml; 3 | 4 | namespace Slithin.Modules.TemplateCreator; 5 | 6 | public class TemplateEditorControl : UserControl 7 | { 8 | public TemplateEditorControl() 9 | { 10 | InitializeComponent(); 11 | } 12 | 13 | private void InitializeComponent() 14 | { 15 | AvaloniaXamlLoader.Load(this); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.TemplateCreator/TemplateEditorTool.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Controls; 2 | using Avalonia.Media; 3 | using Slithin.Modules.Tools.Models; 4 | 5 | namespace Slithin.Modules.TemplateCreator; 6 | 7 | public class TemplateEditorTool : ITool 8 | { 9 | public IImage Image { get; } 10 | 11 | public ToolInfo Info => new("templateeditor", "Template Creator", "Templates", "Create custom Templates", false, 12 | false); 13 | public bool IsConfigurable => false; 14 | public Control? GetModal() 15 | { 16 | return null; 17 | } 18 | 19 | public void Invoke(object data) 20 | { 21 | 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Templates.UI/AddTemplateModal.axaml.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Controls; 2 | using Avalonia.Markup.Xaml; 3 | 4 | namespace Slithin.Modules.Templates.UI; 5 | 6 | public partial class AddTemplateModal : UserControl 7 | { 8 | public AddTemplateModal() 9 | { 10 | InitializeComponent(); 11 | } 12 | 13 | private void InitializeComponent() 14 | { 15 | AvaloniaXamlLoader.Load(this); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Templates.UI/FilterPopup.axaml.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Controls; 2 | using Avalonia.Markup.Xaml; 3 | 4 | namespace Slithin.Modules.Templates.UI; 5 | 6 | public partial class FilterPopup : UserControl 7 | { 8 | public FilterPopup() 9 | { 10 | InitializeComponent(); 11 | } 12 | 13 | private void InitializeComponent() 14 | { 15 | AvaloniaXamlLoader.Load(this); 16 | } 17 | } 18 | 19 | -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Templates.UI/Models/IconCodeItem.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Media; 2 | 3 | namespace Slithin.Modules.Templates.UI.Models; 4 | 5 | public class IconCodeItem 6 | { 7 | public IImage Image { get; set; } 8 | public string Name { get; set; } 9 | 10 | public override string ToString() => Name; 11 | } 12 | -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Templates.UI/Module.cs: -------------------------------------------------------------------------------- 1 | using AuroraModularis.Core; 2 | using Slithin.Modules.Templates.UI.Validators; 3 | using Slithin.Modules.Templates.UI.ViewModels; 4 | 5 | namespace Slithin.Modules.Templates.UI; 6 | 7 | internal class Module : AuroraModularis.Module 8 | { 9 | public override Task OnStart(ServiceContainer container) 10 | { 11 | return Task.CompletedTask; 12 | } 13 | 14 | public override void RegisterServices(ServiceContainer container) 15 | { 16 | container.Register().AsSingleton(); 17 | container.Register().AsSingleton(); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e970.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e970.png -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e975.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e975.png -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e976.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e976.png -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e977.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e977.png -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e978.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e978.png -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e979.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e979.png -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e97b.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e97b.png -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e982.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e982.png -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e98c.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e98c.png -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e98d.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e98d.png -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e98e.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e98e.png -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e98f.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e98f.png -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e990.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e990.png -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e991.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e991.png -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e993.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e993.png -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e994.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e994.png -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e995.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e995.png -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e996.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e996.png -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e997.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e997.png -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e999.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e999.png -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e99a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e99a.png -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e99b.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e99b.png -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e99c.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e99c.png -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e99d.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e99d.png -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e99e.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e99e.png -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e99f.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e99f.png -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e9a0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e9a0.png -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e9a1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e9a1.png -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e9a5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e9a5.png -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e9a6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e9a6.png -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e9a7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e9a7.png -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e9a8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e9a8.png -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e9a9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e9a9.png -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e9aa.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e9aa.png -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e9ab.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e9ab.png -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e9ac.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e9ac.png -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e9ad.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e9ad.png -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e9b2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e9b2.png -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e9b4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e9b4.png -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e9b5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e9b5.png -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e9b6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e9b6.png -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e9b7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e9b7.png -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e9b8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e9b8.png -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e9b9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e9b9.png -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e9ba.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e9ba.png -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e9bb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e9bb.png -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e9bc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e9bc.png -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e9c0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e9c0.png -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e9c5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e9c5.png -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e9c8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e9c8.png -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e9c9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e9c9.png -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e9ca.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e9ca.png -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e9cb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e9cb.png -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e9cc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e9cc.png -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e9cd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e9cd.png -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e9ce.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e9ce.png -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e9cf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e9cf.png -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e9d0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e9d0.png -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e9d1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e9d1.png -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e9d2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e9d2.png -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e9d3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e9d3.png -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e9d4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e9d4.png -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e9d5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e9d5.png -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e9d6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e9d6.png -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e9d7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e9d7.png -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e9d8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e9d8.png -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e9d9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e9d9.png -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e9da.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e9da.png -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e9db.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e9db.png -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e9dc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e9dc.png -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e9f8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e9f8.png -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e9f9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e9f9.png -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e9fa.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e9fa.png -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e9fb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e9fb.png -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e9fc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e9fc.png -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e9fd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e9fd.png -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e9fe.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e9fe.png -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e9ff.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/e9ff.png -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/ea00.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/New/Modules/Slithin.Modules.Templates.UI/Resources/IconTiles/ea00.png -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Templates.UI/Resources/Icons.axaml: -------------------------------------------------------------------------------- 1 | 3 | 4 | -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Templates.UI/Resources/Icons.xml: -------------------------------------------------------------------------------- 1 | 3 | 4 | -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Tools.UI/Module.cs: -------------------------------------------------------------------------------- 1 | using AuroraModularis.Core; 2 | using Slithin.Modules.Tools.UI.ViewModels; 3 | 4 | namespace Slithin.Modules.Tools.UI; 5 | 6 | [Priority(ModulePriority.Max)] 7 | internal class Module : AuroraModularis.Module 8 | { 9 | public override Task OnStart(ServiceContainer container) 10 | { 11 | return Task.CompletedTask; 12 | } 13 | 14 | public override void RegisterServices(ServiceContainer container) 15 | { 16 | container.Register(); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Tools.UI/Resources/Icons.axaml: -------------------------------------------------------------------------------- 1 | 3 | 4 | -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Tools.UI/Resources/Icons.xml: -------------------------------------------------------------------------------- 1 | 3 | 4 | -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Tools.UI/ToolsContextualMenu.axaml.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Controls; 2 | using Avalonia.Markup.Xaml; 3 | 4 | namespace Slithin.Modules.Tools.UI; 5 | 6 | public partial class ToolsContextualMenu : UserControl 7 | { 8 | public ToolsContextualMenu() 9 | { 10 | InitializeComponent(); 11 | } 12 | 13 | private void InitializeComponent() 14 | { 15 | AvaloniaXamlLoader.Load(this); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Tools/Module.cs: -------------------------------------------------------------------------------- 1 | using AuroraModularis.Core; 2 | using Slithin.Modules.Tools.Models; 3 | 4 | namespace Slithin.Modules.Tools; 5 | 6 | internal class Module : AuroraModularis.Module 7 | { 8 | public override Task OnStart(ServiceContainer container) 9 | { 10 | return Task.CompletedTask; 11 | } 12 | 13 | public override void RegisterServices(ServiceContainer container) 14 | { 15 | container.Register(new ToolInvokerServiceImpl()).AsSingleton(); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Tools/Slithin.Modules.Tools.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net7.0 5 | enable 6 | enable 7 | True 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.UI/Modals/PromptModal.axaml: -------------------------------------------------------------------------------- 1 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.UI/Modals/PromptModal.axaml.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Controls; 2 | using Avalonia.Markup.Xaml; 3 | 4 | namespace Slithin.Modules.UI.Modals; 5 | 6 | public partial class PromptModal : UserControl 7 | { 8 | public PromptModal() 9 | { 10 | InitializeComponent(); 11 | } 12 | 13 | private void InitializeComponent() 14 | { 15 | AvaloniaXamlLoader.Load(this); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.UI/Modals/ShowDialogModal.axaml: -------------------------------------------------------------------------------- 1 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.UI/Modals/ShowDialogModal.axaml.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Controls; 2 | using Avalonia.Markup.Xaml; 3 | 4 | namespace Slithin.Modules.UI.Modals; 5 | 6 | public partial class ShowDialogModal : UserControl 7 | { 8 | public ShowDialogModal() 9 | { 10 | InitializeComponent(); 11 | } 12 | 13 | private void InitializeComponent() 14 | { 15 | AvaloniaXamlLoader.Load(this); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.UI/Modals/StatusModal.axaml.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Controls; 2 | using Avalonia.Markup.Xaml; 3 | 4 | namespace Slithin.Modules.UI.Modals; 5 | 6 | public partial class StatusModal : UserControl 7 | { 8 | public StatusModal() 9 | { 10 | InitializeComponent(); 11 | } 12 | 13 | private void InitializeComponent() 14 | { 15 | AvaloniaXamlLoader.Load(this); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.UI/Module.cs: -------------------------------------------------------------------------------- 1 | using AuroraModularis.Core; 2 | using Slithin.Modules.UI.Implementations; 3 | using Slithin.Modules.UI.Models; 4 | 5 | namespace Slithin.Modules.UI; 6 | 7 | internal class Module : AuroraModularis.Module 8 | { 9 | public override Task OnStart(ServiceContainer container) 10 | { 11 | return Task.CompletedTask; 12 | } 13 | 14 | public override void RegisterServices(ServiceContainer container) 15 | { 16 | container.Register(new NotificationServiceImpl()).AsSingleton(); 17 | container.Register(new DialogServiceImpl()).AsSingleton(); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.UI/ViewModels/ShowDialogModalViewModel.cs: -------------------------------------------------------------------------------- 1 | using Slithin.Core.MVVM; 2 | 3 | namespace Slithin.Modules.UI.ViewModels; 4 | 5 | public class ShowDialogModalViewModel : ModalBaseViewModel 6 | { 7 | private object _content; 8 | private string _title; 9 | 10 | public object Content 11 | { 12 | get => _content; 13 | set => SetValue(ref _content, value); 14 | } 15 | 16 | public string Title 17 | { 18 | get => _title; 19 | set => SetValue(ref _title, value); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Updater/Module.cs: -------------------------------------------------------------------------------- 1 | using AuroraModularis.Core; 2 | using Slithin.Modules.Updater.Models; 3 | 4 | namespace Slithin.Modules.Updater; 5 | 6 | internal class Module : AuroraModularis.Module 7 | { 8 | public override Task OnStart(ServiceContainer container) 9 | { 10 | return Task.CompletedTask; 11 | } 12 | 13 | public override void OnInit() 14 | { 15 | } 16 | 17 | public override void RegisterServices(ServiceContainer container) 18 | { 19 | container.Register(new UpdaterImplementation()).AsSingleton(); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Updater/Resources/Icons.xml: -------------------------------------------------------------------------------- 1 | 3 | 5 | -------------------------------------------------------------------------------- /Source/New/Modules/Slithin.Modules.Updater/UpdaterWindow.axaml.cs: -------------------------------------------------------------------------------- 1 | using Avalonia; 2 | using Avalonia.Controls; 3 | using Avalonia.Markup.Xaml; 4 | 5 | namespace Slithin.Modules.Updater; 6 | 7 | public partial class UpdaterWindow : Window 8 | { 9 | public UpdaterWindow() 10 | { 11 | InitializeComponent(); 12 | } 13 | 14 | private void InitializeComponent() 15 | { 16 | AvaloniaXamlLoader.Load(this); 17 | 18 | this.AttachDevTools(); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Source/New/Slithin.Core/Debouncer.cs: -------------------------------------------------------------------------------- 1 | namespace Slithin.Core; 2 | 3 | public static class Debouncer 4 | { 5 | //Used for delayed binding 6 | public static Action Debounce(this Action func, int milliseconds = 1000) 7 | { 8 | var last = 0; 9 | return arg => 10 | { 11 | var current = Interlocked.Increment(ref last); 12 | Task.Delay(milliseconds).ContinueWith(task => 13 | { 14 | if (current == last) func(arg); 15 | task.Dispose(); 16 | }); 17 | }; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /Source/New/Slithin.Core/FeatureToggle/Feature.cs: -------------------------------------------------------------------------------- 1 | namespace Slithin.Core.FeatureToggle; 2 | 3 | public static class Feature 4 | where T : IFeature 5 | { 6 | public static bool IsEnabled { get; private set; } 7 | 8 | public static void Disable() 9 | { 10 | IsEnabled = false; 11 | } 12 | 13 | public static void Enable() 14 | { 15 | IsEnabled = true; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Source/New/Slithin.Core/FeatureToggle/FeatureEnabledExtension.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Markup.Xaml; 2 | 3 | namespace Slithin.Core.FeatureToggle; 4 | 5 | public class FeatureEnabledExtension : MarkupExtension 6 | { 7 | public FeatureEnabledExtension(string featureName) 8 | { 9 | FeatureName = featureName; 10 | } 11 | 12 | public string FeatureName { get; set; } 13 | 14 | public override object ProvideValue(IServiceProvider serviceProvider) 15 | { 16 | return Features.FromString(FeatureName).IsEnabled; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /Source/New/Slithin.Core/FeatureToggle/IFeature.cs: -------------------------------------------------------------------------------- 1 | namespace Slithin.Core.FeatureToggle; 2 | 3 | public interface IFeature 4 | { 5 | } 6 | -------------------------------------------------------------------------------- /Source/New/Slithin.Core/FilterBase.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.ObjectModel; 2 | using Slithin.Core.MVVM; 3 | 4 | namespace Slithin.Core; 5 | 6 | public abstract class FilterBase : NotifyObject 7 | { 8 | private T _selection; 9 | 10 | private ObservableCollection _items = new(); 11 | 12 | public event Action SelectionChanged; 13 | 14 | public T Selection 15 | { 16 | get => _selection; 17 | set 18 | { 19 | SetValue(ref _selection, value); 20 | SelectionChanged?.Invoke(value); 21 | } 22 | } 23 | 24 | public ObservableCollection Items 25 | { 26 | get => _items; 27 | set => SetValue(ref _items, value); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /Source/New/Slithin.Core/IFilterable.cs: -------------------------------------------------------------------------------- 1 | namespace Slithin.Core; 2 | 3 | public interface IFilterable 4 | where T : new() 5 | { 6 | T Filter { get; } 7 | } 8 | -------------------------------------------------------------------------------- /Source/New/Slithin.Core/KeyGenerator.cs: -------------------------------------------------------------------------------- 1 | using System.Text; 2 | 3 | namespace Slithin.Core; 4 | 5 | public class KeyGenerator 6 | { 7 | public static byte[] Generate() 8 | { 9 | int keyBits = 4096; 10 | 11 | var keygen = new SshKeyGenerator.SshKeyGenerator(keyBits); 12 | 13 | return Encoding.ASCII.GetBytes(keygen.ToPrivateKey()); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /Source/New/Slithin.Core/LocalisationExtension.cs: -------------------------------------------------------------------------------- 1 | using AuroraModularis.Core; 2 | using Slithin.Modules.I18N.Models; 3 | 4 | namespace Slithin.Core; 5 | 6 | public class LocalisationExtension : Avalonia.Markup.Xaml.MarkupExtension 7 | { 8 | public LocalisationExtension(string key) 9 | { 10 | Key = key; 11 | } 12 | 13 | public string Key { get; set; } 14 | 15 | public override object ProvideValue(IServiceProvider serviceProvider) 16 | { 17 | var service = ServiceContainer.Current.Resolve(); 18 | 19 | return service.GetString(Key); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /Source/New/Slithin.Core/MVVM/ModalBaseViewModel.cs: -------------------------------------------------------------------------------- 1 | using System.Windows.Input; 2 | 3 | namespace Slithin.Core.MVVM; 4 | 5 | public class ModalBaseViewModel : BaseViewModel 6 | { 7 | public ICommand AcceptCommand { get; set; } 8 | public ICommand CancelCommand { get; set; } 9 | 10 | 11 | } 12 | -------------------------------------------------------------------------------- /Source/New/Slithin.Core/MVVM/NotifyObject.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel; 2 | using System.Runtime.CompilerServices; 3 | 4 | namespace Slithin.Core.MVVM; 5 | 6 | public class NotifyObject : INotifyPropertyChanged 7 | { 8 | public event PropertyChangedEventHandler PropertyChanged; 9 | 10 | protected void OnChange([CallerMemberName] string property = null) 11 | { 12 | PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(property)); 13 | } 14 | 15 | protected void SetValue(ref T field, T value, [CallerMemberName] string property = null) 16 | { 17 | if (Equals(field, value)) 18 | return; 19 | 20 | field = value; 21 | 22 | OnChange(property); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /Source/New/Slithin.Core/OpenLinkExtension.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Markup.Xaml; 2 | using Slithin.Core.MVVM; 3 | 4 | namespace Slithin.Core; 5 | 6 | public class OpenLinkExtension : MarkupExtension 7 | { 8 | public OpenLinkExtension(string link) 9 | { 10 | Link = link; 11 | } 12 | 13 | public string Link { get; set; } 14 | 15 | public override object ProvideValue(IServiceProvider serviceProvider) 16 | { 17 | return new DelegateCommand(_ => Utils.OpenUrl(Link)); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /Source/New/Slithin.Core/ValidationExtensions.cs: -------------------------------------------------------------------------------- 1 | using FluentValidation.Results; 2 | 3 | namespace Slithin.Core; 4 | 5 | public static class ValidationExtensions 6 | { 7 | public static string AsString(this List errors) 8 | { 9 | return string.Join('\n', errors); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Source/New/Slithin.Entities/Features/DarkModeFeature.cs: -------------------------------------------------------------------------------- 1 | using Slithin.Core.FeatureToggle; 2 | 3 | namespace Slithin.Entities.Features; 4 | 5 | public class DarkModeFeature : IFeature 6 | { 7 | } 8 | -------------------------------------------------------------------------------- /Source/New/Slithin.Entities/Features/ExportEpubFeature.cs: -------------------------------------------------------------------------------- 1 | using Slithin.Core.FeatureToggle; 2 | 3 | namespace Slithin.Entities.Features; 4 | 5 | public class ExportEpubFeature : IFeature 6 | { 7 | } 8 | -------------------------------------------------------------------------------- /Source/New/Slithin.Entities/Features/ListViewFeature.cs: -------------------------------------------------------------------------------- 1 | using Slithin.Core.FeatureToggle; 2 | 3 | namespace Slithin.Entities.Features; 4 | 5 | public class ListViewFeature : IFeature 6 | { 7 | } 8 | -------------------------------------------------------------------------------- /Source/New/Slithin.Entities/Features/ResourcesFeature.cs: -------------------------------------------------------------------------------- 1 | using Slithin.Core.FeatureToggle; 2 | 3 | namespace Slithin.Entities.Features; 4 | 5 | public class ResourcesFeature : IFeature 6 | { 7 | } 8 | -------------------------------------------------------------------------------- /Source/New/Slithin.Entities/Features/TemplateEditorFeature.cs: -------------------------------------------------------------------------------- 1 | using Slithin.Core.FeatureToggle; 2 | 3 | namespace Slithin.Entities.Features; 4 | 5 | public class TemplateEditorFeature : IFeature 6 | { 7 | } 8 | -------------------------------------------------------------------------------- /Source/New/Slithin.Entities/Page.cs: -------------------------------------------------------------------------------- 1 | namespace Slithin.Entities; 2 | 3 | public class Page 4 | { 5 | public object DataContext { get; set; } 6 | public string Header { get; set; } 7 | public object Icon { get; set; } 8 | public object Tag { get; set; } 9 | } 10 | -------------------------------------------------------------------------------- /Source/New/Slithin.Entities/Remarkable/PageData.cs: -------------------------------------------------------------------------------- 1 | namespace Slithin.Entities.Remarkable; 2 | 3 | public struct PageData 4 | { 5 | public string[] Data { get; set; } 6 | 7 | public static PageData Parse(string content) 8 | { 9 | return new() 10 | { 11 | Data = content.Split('\n', StringSplitOptions.RemoveEmptyEntries) 12 | }; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /Source/New/Slithin.Entities/Slithin.Entities.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net7.0 5 | enable 6 | enable 7 | True 8 | 1.0.19 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /Source/New/Slithin.UpdateInstaller/Program.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Diagnostics; 3 | using System.IO; 4 | 5 | namespace Slithin.UpdateInstaller; 6 | 7 | public static class Program 8 | { 9 | public static void Main(string[] args) 10 | { 11 | var executable = args[0]; 12 | var slithinPath = new FileInfo(executable).Directory.ToString(); 13 | var basePath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "SlithinUpdate"); 14 | 15 | foreach (var file in Directory.GetFiles(basePath)) 16 | { 17 | File.Copy(file, Path.Combine(slithinPath, Path.GetFileName(file)), true); 18 | } 19 | 20 | Process.Start(new ProcessStartInfo("dotnet", executable)); 21 | 22 | Environment.Exit(0); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /Source/New/Slithin.UpdateInstaller/Slithin.UpdateInstaller.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | WinExe 4 | net7.0 5 | enable 6 | true 7 | furesoft 8 | slithin 9 | 1.0.25 10 | 11 | 12 | -------------------------------------------------------------------------------- /Source/New/Slithin/Changelog.txt: -------------------------------------------------------------------------------- 1 | Version 1.0.21 2 | 3 | - General Bugfixes 4 | - Stability Improvements 5 | - Design Improvements -------------------------------------------------------------------------------- /Source/New/Slithin/Icon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/New/Slithin/Icon.ico -------------------------------------------------------------------------------- /Source/New/Slithin/Icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/New/Slithin/Icon.png -------------------------------------------------------------------------------- /Source/New/Slithin/Module.cs: -------------------------------------------------------------------------------- 1 | using AuroraModularis.Core; 2 | using AuroraModularis.Logging.Models; 3 | using Slithin.Modules.Repository.Models; 4 | using Slithin.Validators; 5 | 6 | namespace Slithin; 7 | 8 | [Priority(ModulePriority.Normal)] 9 | public class Module : AuroraModularis.Module 10 | { 11 | public override Task OnStart(ServiceContainer container) 12 | { 13 | container.Resolve().Info("Slithin started"); 14 | 15 | return Task.CompletedTask; 16 | } 17 | 18 | public override void RegisterServices(ServiceContainer container) 19 | { 20 | container.Register(); 21 | } 22 | 23 | public override void OnExit() 24 | { 25 | ServiceContainer.Current.Resolve().Dispose(); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /Source/New/Slithin/Program.cs: -------------------------------------------------------------------------------- 1 | using Avalonia; 2 | 3 | namespace Slithin; 4 | 5 | public class Program 6 | { 7 | // Avalonia configuration, don't remove; also used by visual designer. 8 | public static AppBuilder BuildAvaloniaApp() 9 | => AppBuilder.Configure() 10 | .UsePlatformDetect() 11 | .LogToTrace(); 12 | 13 | [STAThread] 14 | public static void Main() 15 | { 16 | BuildAvaloniaApp() 17 | .StartWithClassicDesktopLifetime(Environment.GetCommandLineArgs()); 18 | } 19 | } -------------------------------------------------------------------------------- /Source/New/Slithin/Resources/Cover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/New/Slithin/Resources/Cover.png -------------------------------------------------------------------------------- /Source/New/Slithin/Resources/Icon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/New/Slithin/Resources/Icon.ico -------------------------------------------------------------------------------- /Source/New/Slithin/Resources/Icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/New/Slithin/Resources/Icon.png -------------------------------------------------------------------------------- /Source/New/Slithin/Resources/copy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/New/Slithin/Resources/copy.png -------------------------------------------------------------------------------- /Source/New/Slithin/Resources/cubes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/New/Slithin/Resources/cubes.png -------------------------------------------------------------------------------- /Source/New/Slithin/Resources/data-transfer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/New/Slithin/Resources/data-transfer.png -------------------------------------------------------------------------------- /Source/New/Slithin/Resources/epub.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/New/Slithin/Resources/epub.png -------------------------------------------------------------------------------- /Source/New/Slithin/Resources/error.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/New/Slithin/Resources/error.png -------------------------------------------------------------------------------- /Source/New/Slithin/Resources/nav.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/New/Slithin/Resources/nav.png -------------------------------------------------------------------------------- /Source/New/Slithin/Resources/new_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/New/Slithin/Resources/new_logo.png -------------------------------------------------------------------------------- /Source/New/Slithin/Views/AddDeviceWindow.axaml.cs: -------------------------------------------------------------------------------- 1 | using Avalonia; 2 | using Avalonia.Controls; 3 | using Avalonia.Markup.Xaml; 4 | 5 | namespace Slithin.Views; 6 | 7 | public partial class AddDeviceWindow : Window 8 | { 9 | public AddDeviceWindow() 10 | { 11 | InitializeComponent(); 12 | #if DEBUG 13 | this.AttachDevTools(); 14 | #endif 15 | } 16 | 17 | private void InitializeComponent() 18 | { 19 | AvaloniaXamlLoader.Load(this); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /Source/New/Slithin/Views/ConnectWindow.axaml.cs: -------------------------------------------------------------------------------- 1 | using Avalonia; 2 | using Avalonia.Controls; 3 | using Avalonia.Markup.Xaml; 4 | using Slithin.Core.MVVM; 5 | using Slithin.ViewModels; 6 | 7 | namespace Slithin.Views; 8 | 9 | public partial class ConnectWindow : Window 10 | { 11 | public ConnectWindow() 12 | { 13 | InitializeComponent(); 14 | 15 | #if DEBUG 16 | this.AttachDevTools(); 17 | #endif 18 | } 19 | 20 | private void InitializeComponent() 21 | { 22 | AvaloniaXamlLoader.Load(this); 23 | 24 | BaseViewModel.ApplyViewModel(this); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /Source/New/Slithin/Views/ContextualMenus/EmptyContextualMenu.axaml: -------------------------------------------------------------------------------- 1 | 7 | 8 | -------------------------------------------------------------------------------- /Source/New/Slithin/Views/ContextualMenus/EmptyContextualMenu.axaml.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Controls; 2 | using Avalonia.Markup.Xaml; 3 | 4 | namespace Slithin.Views.ContextualMenus; 5 | 6 | public partial class EmptyContextualMenu : UserControl 7 | { 8 | public EmptyContextualMenu() 9 | { 10 | InitializeComponent(); 11 | } 12 | 13 | private void InitializeComponent() 14 | { 15 | AvaloniaXamlLoader.Load(this); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Source/New/Slithin/linux.desktop: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | 3 | # The type as listed above 4 | Type=Application 5 | 6 | # The version of the desktop entry specification to which this file complies 7 | Version=1.0 8 | 9 | # The name of the application 10 | Name=Slithin 11 | 12 | # A comment which can/will be used as a tooltip 13 | Comment=Remarkable Management Application 14 | 15 | # The path to the folder in which the executable is run 16 | Path= /usr/share/Slithin 17 | 18 | # The executable of the application, possibly with arguments. 19 | Exec=Slithin 20 | 21 | # The name of the icon that will be used to display this entry 22 | Icon=Slithin 23 | 24 | # Describes whether this application needs to be run in a terminal or not 25 | Terminal=false 26 | -------------------------------------------------------------------------------- /Source/Slithin.Controls/ImageButton.cs: -------------------------------------------------------------------------------- 1 | using Avalonia; 2 | using Avalonia.Controls; 3 | using Avalonia.Media; 4 | 5 | namespace Slithin.Controls; 6 | 7 | public class ImageButton : Button 8 | { 9 | public static StyledProperty ImageProperty = 10 | AvaloniaProperty.Register("Kind"); 11 | 12 | public static StyledProperty TextProperty = 13 | AvaloniaProperty.Register("Text"); 14 | 15 | public Drawing Image 16 | { 17 | get => GetValue(ImageProperty); 18 | set => SetValue(ImageProperty, value); 19 | } 20 | 21 | public string Text 22 | { 23 | get => GetValue(TextProperty); 24 | set => SetValue(TextProperty, value); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /Source/Slithin.Controls/Navigation/FrameNavigationOptions.cs: -------------------------------------------------------------------------------- 1 | namespace Slithin.Controls.Navigation; 2 | 3 | /// 4 | /// Represents options for a frame navigation, including whether it is recorded in the 5 | /// navigation stack and what transition animation is used. 6 | /// 7 | public class FrameNavigationOptions 8 | { 9 | /// 10 | /// Gets or sets a value that indicates whether navigation is recorded in the Frame's ForwardStack or BackStack. 11 | /// 12 | public bool IsNavigationStackEnabled { get; set; } 13 | 14 | /// 15 | /// Gets or sets a value that indicates the animated transition associated with the navigation. 16 | /// 17 | public NavigationTransitionInfo TransitionInfoOverride { get; set; } 18 | } 19 | -------------------------------------------------------------------------------- /Source/Slithin.Controls/Navigation/NavigationMode.cs: -------------------------------------------------------------------------------- 1 | namespace Slithin.Controls.Navigation; 2 | 3 | /// 4 | /// Specifies the navigation stack characteristics of a navigation. 5 | /// 6 | public enum NavigationMode 7 | { 8 | /// 9 | /// Navigation is to a new instance of a page (not going forward or backward in the stack). 10 | /// 11 | New = 0, 12 | 13 | /// 14 | /// Navigation is going backward in the stack. 15 | /// 16 | Back, 17 | 18 | /// 19 | /// Navigation is going forward in the stack. 20 | /// 21 | Forward, 22 | 23 | /// 24 | /// Navigation is to the current page (perhaps with different data). 25 | /// 26 | Refresh 27 | } 28 | -------------------------------------------------------------------------------- /Source/Slithin.Controls/Navigation/NavigationTransitionInfo.cs: -------------------------------------------------------------------------------- 1 | using Avalonia; 2 | using Avalonia.Animation; 3 | 4 | namespace Slithin.Controls.Navigation; 5 | 6 | //NOTE: These are custom implementations of these classes as the source is still closed... 7 | 8 | /// 9 | /// Provides parameter info for the Frame.Navigate method. Controls how the transition animation 10 | /// runs during the navigation action. 11 | /// 12 | public abstract class NavigationTransitionInfo : AvaloniaObject 13 | { 14 | /// 15 | /// Executes a predefined animation on the desired object 16 | /// 17 | /// The object to animate 18 | public abstract void RunAnimation(Animatable ctrl); 19 | } 20 | -------------------------------------------------------------------------------- /Source/Slithin.Controls/Notifications/ActionNotificationControl.axaml.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Controls; 2 | using Avalonia.Markup.Xaml; 3 | 4 | namespace Slithin.Controls.Notifications; 5 | 6 | public partial class ActionNotificationControl : UserControl 7 | { 8 | public ActionNotificationControl() 9 | { 10 | InitializeComponent(); 11 | } 12 | 13 | private void InitializeComponent() 14 | { 15 | AvaloniaXamlLoader.Load(this); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Source/Slithin.Controls/Notifications/StatusNotificationControl.axaml.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Controls; 2 | using Avalonia.Markup.Xaml; 3 | 4 | namespace Slithin.Controls.Notifications; 5 | 6 | public partial class StatusNotificationControl : UserControl 7 | { 8 | public StatusNotificationControl() 9 | { 10 | InitializeComponent(); 11 | } 12 | 13 | private void InitializeComponent() 14 | { 15 | AvaloniaXamlLoader.Load(this); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Source/Slithin.Controls/Ports/ResizeRotateControl/RotatedEventArgs.cs: -------------------------------------------------------------------------------- 1 | using Avalonia; 2 | using Avalonia.Interactivity; 3 | 4 | namespace Slithin.Controls.Ports.ResizeRotateControl; 5 | 6 | /// 7 | /// event if the DragFinished is execute on the 8 | /// 9 | public class RotatedEventArgs : RoutedEventArgs 10 | { 11 | /// 12 | /// Angle 13 | /// 14 | /// 15 | public double Angle { get; set; } 16 | 17 | /// 18 | /// moved position 19 | /// 20 | /// 21 | public Vector Vector { get; set; } 22 | } 23 | -------------------------------------------------------------------------------- /Source/Slithin.Controls/Ports/RoutedEventArgsOfT.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Interactivity; 2 | 3 | namespace Slithin.Controls.Ports; 4 | 5 | public class RoutedEventArgsOfT : RoutedEventArgs 6 | { 7 | public RoutedEventArgsOfT(T info) 8 | { 9 | Info = info; 10 | } 11 | 12 | public RoutedEventArgsOfT(RoutedEvent routedEvent, IInteractive source) : base(routedEvent, source) 13 | { 14 | } 15 | 16 | public T Info { get; set; } 17 | } 18 | -------------------------------------------------------------------------------- /Source/Slithin.Controls/Ports/StepBar/StepStatus.cs: -------------------------------------------------------------------------------- 1 | namespace Slithin.Controls.Ports.StepBar; 2 | 3 | //ported from https://github.com/HandyOrg/HandyControl 4 | 5 | /// 6 | /// status per step 7 | /// 8 | public enum StepStatus 9 | { 10 | /// 11 | /// Complete 12 | /// 13 | Complete, 14 | 15 | /// 16 | /// in progress 17 | /// 18 | UnderWay, 19 | 20 | /// 21 | /// waiting 22 | /// 23 | Waiting 24 | } 25 | -------------------------------------------------------------------------------- /Source/Slithin.Controls/RadioImage.cs: -------------------------------------------------------------------------------- 1 | using Avalonia; 2 | using Avalonia.Controls; 3 | using Avalonia.Media; 4 | 5 | namespace Slithin.Controls; 6 | 7 | public class RadioImage : RadioButton 8 | { 9 | public static readonly StyledProperty ImageProperty = 10 | AvaloniaProperty.Register(nameof(Image)); 11 | 12 | public IImage Image 13 | { 14 | get => GetValue(ImageProperty); 15 | set => SetValue(ImageProperty, value); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Source/Slithin.Controls/Settings/SettingsGroup.cs: -------------------------------------------------------------------------------- 1 | using Avalonia; 2 | using Avalonia.Controls.Primitives; 3 | 4 | namespace Slithin.Controls.Settings; 5 | 6 | public class SettingsGroup : HeaderedContentControl 7 | { 8 | } 9 | -------------------------------------------------------------------------------- /Source/Slithin.Controls/Step.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Controls; 2 | 3 | namespace Slithin.Controls; 4 | 5 | public class Step 6 | { 7 | public UserControl Control { get; set; } 8 | public string Title { get; set; } 9 | } 10 | -------------------------------------------------------------------------------- /Source/Slithin.Controls/Theme/Styles/System/SplitViewStyle.axaml: -------------------------------------------------------------------------------- 1 |  3 | 4 | 9 | 10 | 14 | -------------------------------------------------------------------------------- /Source/Slithin.Modules.UI/DialogServiceExtensions.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Controls; 2 | 3 | namespace Slithin.Modules.UI.Models; 4 | 5 | public static class DialogServiceExtensions 6 | { 7 | public static Task Show(this IDialogService service, string message) 8 | { 9 | var tb = new TextBlock(); 10 | tb.MaxWidth = 100; 11 | tb.TextAlignment = Avalonia.Media.TextAlignment.Left; 12 | tb.TextWrapping = Avalonia.Media.TextWrapping.Wrap; 13 | tb.Text = message; 14 | 15 | return service.Show("Information", tb); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Source/Slithin.Modules.UI/IDialogService.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Controls; 2 | 3 | namespace Slithin.Modules.UI.Models; 4 | 5 | public interface IDialogService 6 | { 7 | Task Show(string title, Control content); 8 | 9 | Task ShowPrompt(string title, string message, string defaultValue = ""); 10 | } 11 | -------------------------------------------------------------------------------- /Source/Slithin.Modules.UI/INotificationService.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Controls.Notifications; 2 | 3 | namespace Slithin.Modules.UI.Models; 4 | 5 | public interface INotificationService 6 | { 7 | void Init(WindowNotificationManager manager); 8 | 9 | void Show(string message); 10 | 11 | void ShowError(string message); 12 | void ShowErrorNewWindow(string message); 13 | 14 | IStatusController ShowStatus(string message, bool isCancellable = false, bool showInNewWindow = false); 15 | } 16 | -------------------------------------------------------------------------------- /Source/Slithin.Modules.UI/IStatusController.cs: -------------------------------------------------------------------------------- 1 | namespace Slithin.Modules.UI.Models; 2 | 3 | public interface IStatusController : IDisposable 4 | { 5 | CancellationToken Token { get; } 6 | 7 | void Cancel(); 8 | 9 | void Step(string message); 10 | 11 | void Finish(); 12 | } 13 | -------------------------------------------------------------------------------- /Source/Slithin.Modules.UI/Slithin.Modules.UI.Models.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net7.0 5 | enable 6 | enable 7 | true 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /Source/Slithin/.gitignore: -------------------------------------------------------------------------------- 1 | .idea/ 2 | .vscode/ 3 | .vs/ 4 | 5 | bin/ 6 | obj/ 7 | 8 | *.user 9 | 10 | *.db 11 | 12 | Source/.idea/ -------------------------------------------------------------------------------- /Source/Slithin/Core/Sync/IRepository.cs: -------------------------------------------------------------------------------- 1 | namespace Slithin.Core.Sync; 2 | 3 | public interface IRepository 4 | { 5 | void AddTemplate(Template template); 6 | 7 | Template[] GetTemplates(); 8 | 9 | void RemoveTemplate(Template template); 10 | } 11 | -------------------------------------------------------------------------------- /Source/Slithin/Icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/Slithin/Icon.png -------------------------------------------------------------------------------- /Source/Slithin/Properties/launchSettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "profiles": { 3 | "Slithin": { 4 | "commandName": "Project" 5 | } 6 | } 7 | } -------------------------------------------------------------------------------- /Source/Slithin/Validators/AppendNotebookValidator.cs: -------------------------------------------------------------------------------- 1 | using FluentValidation; 2 | 3 | namespace Slithin.Validators; 4 | 5 | public class AppendNotebookValidator : AbstractValidator 6 | { 7 | public AppendNotebookValidator(ILocalisationService localisationService) 8 | { 9 | RuleFor(x => x.Pages).Must(_ => _.Count > 0) 10 | .WithMessage(localisationService.GetString("You have to add at least 1 new page")); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Source/Slithin/Validators/CreateNotebookValidator.cs: -------------------------------------------------------------------------------- 1 | using FluentValidation; 2 | 3 | namespace Slithin.Validators; 4 | 5 | public class CreateNotebookValidator : AbstractValidator 6 | { 7 | public CreateNotebookValidator(ILocalisationService localisationService) 8 | { 9 | RuleFor(x => x.Title).NotEmpty().WithMessage(localisationService.GetString("Title cannot be empty")); 10 | RuleFor(x => x.Pages).Must(_ => _.Count > 0) 11 | .WithMessage(localisationService.GetString("A notebook has to have at least 1 page")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /Source/SlithinMarketplace/Content/favicon-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/SlithinMarketplace/Content/favicon-16x16.png -------------------------------------------------------------------------------- /Source/SlithinMarketplace/Content/favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/SlithinMarketplace/Content/favicon-32x32.png -------------------------------------------------------------------------------- /Source/SlithinMarketplace/Content/index.css: -------------------------------------------------------------------------------- 1 | html { 2 | box-sizing: border-box; 3 | overflow: -moz-scrollbars-vertical; 4 | overflow-y: scroll; 5 | } 6 | 7 | *, 8 | *:before, 9 | *:after { 10 | box-sizing: inherit; 11 | } 12 | 13 | body { 14 | margin: 0; 15 | background: #fafafa; 16 | } 17 | -------------------------------------------------------------------------------- /Source/SlithinMarketplace/Content/swagger-initializer.js: -------------------------------------------------------------------------------- 1 | window.onload = function () { 2 | // 3 | window.ui = SwaggerUIBundle({ 4 | url: "/swagger", 5 | dom_id: '#swagger-ui', 6 | deepLinking: true, 7 | presets: [ 8 | SwaggerUIBundle.presets.apis 9 | ] 10 | }) 11 | 12 | // 13 | }; -------------------------------------------------------------------------------- /Source/SlithinMarketplace/Controller/RegisterUserController.cs: -------------------------------------------------------------------------------- 1 | using EmbedIO; 2 | using EmbedIO.Routing; 3 | using EmbedIO.WebApi; 4 | 5 | namespace SlithinMarketplace.Controller; 6 | 7 | public sealed class RegisterUserController : WebApiController 8 | { 9 | [Route(HttpVerbs.Put, "/register")] 10 | public void Register() 11 | { 12 | var user = HttpContext.GetRequestObjectAsync().Result; 13 | 14 | ServiceLocator.Repository.AddUser(user.Username, user.HashedPassword); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /Source/SlithinMarketplace/Properties/launchSettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "profiles": { 3 | "SlithinMarketplace": { 4 | "commandName": "Project" 5 | }, 6 | "Docker": { 7 | "commandName": "Docker" 8 | } 9 | } 10 | } -------------------------------------------------------------------------------- /Source/Windows-Store/Images/LargeTile.scale-100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/Windows-Store/Images/LargeTile.scale-100.png -------------------------------------------------------------------------------- /Source/Windows-Store/Images/LargeTile.scale-125.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/Windows-Store/Images/LargeTile.scale-125.png -------------------------------------------------------------------------------- /Source/Windows-Store/Images/LargeTile.scale-150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/Windows-Store/Images/LargeTile.scale-150.png -------------------------------------------------------------------------------- /Source/Windows-Store/Images/LargeTile.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/Windows-Store/Images/LargeTile.scale-200.png -------------------------------------------------------------------------------- /Source/Windows-Store/Images/LargeTile.scale-400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/Windows-Store/Images/LargeTile.scale-400.png -------------------------------------------------------------------------------- /Source/Windows-Store/Images/LockScreenLogo.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/Windows-Store/Images/LockScreenLogo.scale-200.png -------------------------------------------------------------------------------- /Source/Windows-Store/Images/SmallTile.scale-100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/Windows-Store/Images/SmallTile.scale-100.png -------------------------------------------------------------------------------- /Source/Windows-Store/Images/SmallTile.scale-125.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/Windows-Store/Images/SmallTile.scale-125.png -------------------------------------------------------------------------------- /Source/Windows-Store/Images/SmallTile.scale-150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/Windows-Store/Images/SmallTile.scale-150.png -------------------------------------------------------------------------------- /Source/Windows-Store/Images/SmallTile.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/Windows-Store/Images/SmallTile.scale-200.png -------------------------------------------------------------------------------- /Source/Windows-Store/Images/SmallTile.scale-400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/Windows-Store/Images/SmallTile.scale-400.png -------------------------------------------------------------------------------- /Source/Windows-Store/Images/SplashScreen.scale-100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/Windows-Store/Images/SplashScreen.scale-100.png -------------------------------------------------------------------------------- /Source/Windows-Store/Images/SplashScreen.scale-125.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/Windows-Store/Images/SplashScreen.scale-125.png -------------------------------------------------------------------------------- /Source/Windows-Store/Images/SplashScreen.scale-150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/Windows-Store/Images/SplashScreen.scale-150.png -------------------------------------------------------------------------------- /Source/Windows-Store/Images/SplashScreen.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/Windows-Store/Images/SplashScreen.scale-200.png -------------------------------------------------------------------------------- /Source/Windows-Store/Images/SplashScreen.scale-400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/Windows-Store/Images/SplashScreen.scale-400.png -------------------------------------------------------------------------------- /Source/Windows-Store/Images/Square150x150Logo.scale-100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/Windows-Store/Images/Square150x150Logo.scale-100.png -------------------------------------------------------------------------------- /Source/Windows-Store/Images/Square150x150Logo.scale-125.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/Windows-Store/Images/Square150x150Logo.scale-125.png -------------------------------------------------------------------------------- /Source/Windows-Store/Images/Square150x150Logo.scale-150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/Windows-Store/Images/Square150x150Logo.scale-150.png -------------------------------------------------------------------------------- /Source/Windows-Store/Images/Square150x150Logo.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/Windows-Store/Images/Square150x150Logo.scale-200.png -------------------------------------------------------------------------------- /Source/Windows-Store/Images/Square150x150Logo.scale-400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/Windows-Store/Images/Square150x150Logo.scale-400.png -------------------------------------------------------------------------------- /Source/Windows-Store/Images/Square44x44Logo.altform-lightunplated_targetsize-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/Windows-Store/Images/Square44x44Logo.altform-lightunplated_targetsize-16.png -------------------------------------------------------------------------------- /Source/Windows-Store/Images/Square44x44Logo.altform-lightunplated_targetsize-24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/Windows-Store/Images/Square44x44Logo.altform-lightunplated_targetsize-24.png -------------------------------------------------------------------------------- /Source/Windows-Store/Images/Square44x44Logo.altform-lightunplated_targetsize-256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/Windows-Store/Images/Square44x44Logo.altform-lightunplated_targetsize-256.png -------------------------------------------------------------------------------- /Source/Windows-Store/Images/Square44x44Logo.altform-lightunplated_targetsize-32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/Windows-Store/Images/Square44x44Logo.altform-lightunplated_targetsize-32.png -------------------------------------------------------------------------------- /Source/Windows-Store/Images/Square44x44Logo.altform-lightunplated_targetsize-48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/Windows-Store/Images/Square44x44Logo.altform-lightunplated_targetsize-48.png -------------------------------------------------------------------------------- /Source/Windows-Store/Images/Square44x44Logo.altform-unplated_targetsize-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/Windows-Store/Images/Square44x44Logo.altform-unplated_targetsize-16.png -------------------------------------------------------------------------------- /Source/Windows-Store/Images/Square44x44Logo.altform-unplated_targetsize-256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/Windows-Store/Images/Square44x44Logo.altform-unplated_targetsize-256.png -------------------------------------------------------------------------------- /Source/Windows-Store/Images/Square44x44Logo.altform-unplated_targetsize-32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/Windows-Store/Images/Square44x44Logo.altform-unplated_targetsize-32.png -------------------------------------------------------------------------------- /Source/Windows-Store/Images/Square44x44Logo.altform-unplated_targetsize-48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/Windows-Store/Images/Square44x44Logo.altform-unplated_targetsize-48.png -------------------------------------------------------------------------------- /Source/Windows-Store/Images/Square44x44Logo.scale-100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/Windows-Store/Images/Square44x44Logo.scale-100.png -------------------------------------------------------------------------------- /Source/Windows-Store/Images/Square44x44Logo.scale-125.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/Windows-Store/Images/Square44x44Logo.scale-125.png -------------------------------------------------------------------------------- /Source/Windows-Store/Images/Square44x44Logo.scale-150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/Windows-Store/Images/Square44x44Logo.scale-150.png -------------------------------------------------------------------------------- /Source/Windows-Store/Images/Square44x44Logo.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/Windows-Store/Images/Square44x44Logo.scale-200.png -------------------------------------------------------------------------------- /Source/Windows-Store/Images/Square44x44Logo.scale-400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/Windows-Store/Images/Square44x44Logo.scale-400.png -------------------------------------------------------------------------------- /Source/Windows-Store/Images/Square44x44Logo.targetsize-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/Windows-Store/Images/Square44x44Logo.targetsize-16.png -------------------------------------------------------------------------------- /Source/Windows-Store/Images/Square44x44Logo.targetsize-24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/Windows-Store/Images/Square44x44Logo.targetsize-24.png -------------------------------------------------------------------------------- /Source/Windows-Store/Images/Square44x44Logo.targetsize-24_altform-unplated.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/Windows-Store/Images/Square44x44Logo.targetsize-24_altform-unplated.png -------------------------------------------------------------------------------- /Source/Windows-Store/Images/Square44x44Logo.targetsize-256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/Windows-Store/Images/Square44x44Logo.targetsize-256.png -------------------------------------------------------------------------------- /Source/Windows-Store/Images/Square44x44Logo.targetsize-32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/Windows-Store/Images/Square44x44Logo.targetsize-32.png -------------------------------------------------------------------------------- /Source/Windows-Store/Images/Square44x44Logo.targetsize-48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/Windows-Store/Images/Square44x44Logo.targetsize-48.png -------------------------------------------------------------------------------- /Source/Windows-Store/Images/StoreLogo.backup.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/Windows-Store/Images/StoreLogo.backup.png -------------------------------------------------------------------------------- /Source/Windows-Store/Images/StoreLogo.scale-100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/Windows-Store/Images/StoreLogo.scale-100.png -------------------------------------------------------------------------------- /Source/Windows-Store/Images/StoreLogo.scale-125.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/Windows-Store/Images/StoreLogo.scale-125.png -------------------------------------------------------------------------------- /Source/Windows-Store/Images/StoreLogo.scale-150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/Windows-Store/Images/StoreLogo.scale-150.png -------------------------------------------------------------------------------- /Source/Windows-Store/Images/StoreLogo.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/Windows-Store/Images/StoreLogo.scale-200.png -------------------------------------------------------------------------------- /Source/Windows-Store/Images/StoreLogo.scale-400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/Windows-Store/Images/StoreLogo.scale-400.png -------------------------------------------------------------------------------- /Source/Windows-Store/Images/Wide310x150Logo.scale-100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/Windows-Store/Images/Wide310x150Logo.scale-100.png -------------------------------------------------------------------------------- /Source/Windows-Store/Images/Wide310x150Logo.scale-125.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/Windows-Store/Images/Wide310x150Logo.scale-125.png -------------------------------------------------------------------------------- /Source/Windows-Store/Images/Wide310x150Logo.scale-150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/Windows-Store/Images/Wide310x150Logo.scale-150.png -------------------------------------------------------------------------------- /Source/Windows-Store/Images/Wide310x150Logo.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/Windows-Store/Images/Wide310x150Logo.scale-200.png -------------------------------------------------------------------------------- /Source/Windows-Store/Images/Wide310x150Logo.scale-400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/furesoft/Slithin/da03d680181bc1282dacb7cd03e916128ad0bc7a/Source/Windows-Store/Images/Wide310x150Logo.scale-400.png -------------------------------------------------------------------------------- /Tools/LocalisationSearcher/LocalisationSearcher.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Exe 5 | net7.0 6 | enable 7 | enable 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /Tools/LocalisationSearcher/Properties/launchSettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "profiles": { 3 | "LocalisationSearcher": { 4 | "commandName": "Project", 5 | "commandLineArgs": "Source", 6 | "workingDirectory": "C:\\Users\\chris\\Documents\\Projekte\\Slithin" 7 | } 8 | } 9 | } -------------------------------------------------------------------------------- /crowdin.yml: -------------------------------------------------------------------------------- 1 | files: 2 | - source: /Source/New/Modules/Slithin.Modules.I18N/*.json 3 | translation: /Source/New/Modules/Slithin.Modules.I18N/Resources/Locales/%two_letters_code%.json 4 | -------------------------------------------------------------------------------- /docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '3' 2 | services: 3 | slithin-api: 4 | build: . 5 | networks: 6 | - proxy 7 | environment: 8 | - MINIO_HOST= 9 | - MINIO_ACCESS_KEY= 10 | - MINIO_SECRET_KEY= 11 | labels: 12 | - "traefik.enable=true" 13 | - "traefik.http.routers.slithin-api.entrypoints=https" 14 | - "traefik.http.routers.slithin-api.tls.certresolver=http" 15 | - "traefik.http.routers.slithin-api.rule=Host(`slithin-api.example.org`)" 16 | - "traefik.http.services.slithin-api.loadbalancer.server.port=6969" 17 | - "traefik.docker.network=proxy" 18 | 19 | networks: 20 | proxy: 21 | external: true 22 | --------------------------------------------------------------------------------