Commit graph

26 commits

Author SHA1 Message Date
3c722a66df feat: Add AI extraction service and related view models
- Introduced `IAiExtractionService` and its implementation `AiExtractionService` for processing images and extracting text.
- Created `AiResultItem` model to hold results from AI extraction.
- Added `ImageProcessingCoordinator` to manage image processing tasks and provide progress updates.
- Implemented view models for AI settings, path settings, processing state, race upload settings, and visual settings to support UI binding.
- Updated `Program.cs` to register new services and dependencies.
- Modified project file to skip MinVer execution during local builds.
2026-03-12 18:48:13 +01:00
15b1da4371 feat: Add race upload functionality and file transfer endpoints
- Implemented IRaceUploadCommunicationClient with methods for saving races, creating race points, indexing race points, retrieving race details, and uploading files to the receiver.
- Added ReceiveFilePath option to CatalogCommunicationOptions for file transfer configuration.
- Enhanced CatalogCommunicationServiceCollectionExtensions to validate ReceiveFilePath.
- Developed RaceUploadCommunicationClient to handle race-related API interactions, including saving race data and uploading processed images.
- Updated API documentation to reflect new race upload and file transfer endpoints.
- Modified Avalonia UI to support race creation and processed image uploads, including new input fields and buttons.
- Introduced RaceSaveRequest and ReceiveFileUploadRequest models for structured data handling.
2026-02-28 16:54:08 +01:00
4a0973b681 Added avalonia integration and remote proof of concept 2026-02-28 15:30:57 +01:00
73597689ed Cross-platform: remove System.Drawing deps, add #if WINDOWS
Refactored image creation APIs to use byte[] for logo data instead of System.Drawing.Image, enabling cross-platform support. Wrapped all GDI+/Windows-specific code in #if WINDOWS and updated project files to conditionally include Windows-only dependencies. Defaulted to ImageSharp on non-Windows, and updated UI and settings to reflect platform capabilities. Application now builds and runs on Linux/macOS with Avalonia and ImageSharp, while retaining full Windows functionality.
2026-02-26 19:17:23 +01:00
311b3e76f0 Add Avalonia UI frontend alongside WinForms and WPF
Introduce Avalonia as a new cross-platform UI option, including new XAML and code-behind files for the application and main window. Update Program.cs to support a --avalonia launch argument and add corresponding launch profile. Integrate Avalonia NuGet packages and ensure DataModel supports UI-thread invocation for all frontends. All business logic and state are shared via DI, enabling consistent behavior across WinForms, WPF, and Avalonia.
2026-02-26 18:43:07 +01:00
d068b4b3e1 Support UI selection via --wpf command-line argument
Refactored Program.cs to accept command-line arguments and select between WinForms (default) and WPF UI based on the presence of --wpf. Removed old commented-out UI selection code. Updated launchSettings.json to provide separate profiles for WinForms and WPF launches. If WPF is requested but unavailable, the app falls back to WinForms.
2026-02-21 17:27:16 +01:00
9007a27fb2 Upgrade UI to MahApps.Metro with runtime theming
Modernize WPF UI using MahApps.Metro: switch MainWindow to MetroWindow, add MetroTabControl/MetroTabItem, custom tab styles, and icon-based theme toggle. Move version display to window commands. Integrate MahApps resource dictionaries and ThemeManager for runtime theme switching. Update startup logic for proper theming. WinForms fallback retained.
2026-02-21 16:49:13 +01:00
c70ab9e5de Renamed image creators 2026-02-21 15:53:52 +01:00
da9d9875b0 Switch to MinVer, add CI/CD, unify thumbnail options
- Add .gitlab-ci.yml for Windows CI/CD: build, publish, and GitLab Release with artifact upload
- Replace GitVersion.MsBuild with MinVer for versioning; update all versioning logic in .csproj
- Remove GitVersion CLI fallback for Visual Studio builds
- Update post-publish renaming to use MinVer's Version property
- Replace multiple thumbnail text checkboxes with a single ComboBox selector in MainWindow.xaml
- Change default UI startup: prefer WPF MainWindow, fallback to WinForms MainForm
2026-02-16 21:49:46 +01:00
214e540170 Mutually exclusive thumbnail mode selection in UI
Implement mutually exclusive logic for thumbnail display modes in DataModel and MainForm. Add ThumbnailMode property for authoritative state. Replace radio button bindings with event handlers. Synchronize UI with model changes. Explicitly map thumbnail flags to PicSettings. Force WinForms startup, disabling WPF branch.
2026-02-16 18:58:15 +01:00
10cc574acb Add WPF UI alongside WinForms; improve cancellation logic
Introduced MainWindow.xaml and code-behind for a modern WPF interface with tabbed settings. Enabled WPF in project file. Refactored startup to launch WPF or WinForms UI based on availability. Registered WPF MainWindow in DI. Improved DataModel cancellation to be synchronous and log exceptions. Minor logging and comment updates. App now supports both WPF and WinForms frontends.
2026-02-15 11:14:19 +01:00
e48c0d266b Add IImageCreator abstraction and runtime provider selection
Introduce IImageCreator interface for image creation, and update ImageCreatorSharp to implement it. Add ImageCreatorAlternate (adapter) and ImageCreatorMapper (runtime selector) classes. Extend PicSettings with ImageCreatorProvider to control backend selection. Update DI registrations and refactor ImageCreationStuff to depend on IImageCreator, enabling backend switching via configuration.
2026-02-15 00:14:04 +01:00
69fdf01de3 Modernize versioning and display in app and build output
- Switch to explicit "3.2.0" next-version in GitVersion.yml
- Update NuGet packages and set assembly name to "ImageCatalog"
- Add MSBuild target to rename published exe with year and version
- Add AppVersion property to DataModel, set via IVersionProvider
- Replace static version label with data-bound versionLabel in UI
- Remove manual version label logic from MainForm
- Update DI to inject IVersionProvider into DataModel
- Ensures UI always shows correct version and builds are versioned
2026-02-14 22:18:56 +01:00
509d5357a8 Integrate GitVersion and add version provider abstraction
- Added GitVersion for semantic versioning and build metadata
- Introduced IVersionProvider and VersionProvider for UI-friendly version display
- MainForm now uses IVersionProvider for version label
- Registered VersionProvider in DI container
- Improved logging: filtered out AutoMapper license logs
- General code cleanup in Program.cs
2026-02-14 21:14:06 +01:00
5cb491f1b5 Persist last-used dialog folders in user preferences
Dialogs now remember last-used folders for source, destination, logo, and settings files by storing these paths in a user preferences file under LocalApplicationData. Preferences are saved on form close, reducing unnecessary writes. SettingsService now uses a temporary ParametriSetup for settings files to avoid polluting user preferences. Error handling ensures preference save failures do not disrupt the user. This separation improves user experience and keeps user preferences distinct from project settings.
2026-02-14 20:38:51 +01:00
ba965e8266 Fixes and mapping 2026-02-04 23:16:06 +01:00
1db874ce77 Migration to MVVM 2026-02-04 19:48:03 +01:00
Marco
12d1bd57dc Override mode fix 2025-07-28 14:45:03 +02:00
Marco
fa889a5cd3 Refactored image creator code 2025-07-28 11:25:46 +02:00
Marco
63aac7f911 modernized picsettings 2025-07-28 10:22:08 +02:00
Marco
65aeabdfee Updated libraries and made horizontal text property 2025-07-28 09:49:55 +02:00
Marco
af987f840d Removed old code 2025-07-28 09:15:45 +02:00
Marco
b98623f092 optimizations 2025-07-23 17:16:06 +02:00
Marco
d8d8b152bd Errors fix, removed old library, Added logging 2025-07-23 15:08:25 +02:00
d3327089ff Initialized ViewModel 2024-10-14 23:05:18 +02:00
39a9baf5c6 Added dependency injection 2024-10-14 22:18:03 +02:00