4 Commits

Author SHA1 Message Date
mbabienco df11b65c05 Fix focusing and clipboard use 2026-04-08 12:54:35 +09:00
mbabienco fc963d88f7 Fix deprecations regarding Watermark 2026-04-08 12:54:28 +09:00
mbabienco 600ae58f25 Use OpenGL rendering 2026-04-08 12:54:18 +09:00
mbabienco 0783e0b544 Update packages to Avalonia 12 compatible 2026-04-08 12:54:11 +09:00
20 changed files with 61 additions and 263 deletions
+1 -1
View File
@@ -3,7 +3,7 @@
; Non-commercial use only ; Non-commercial use only
#define MyAppName "MayShow" #define MyAppName "MayShow"
#define MyAppVersion "1.4.3" #define MyAppVersion "1.4.2"
#define MyAppPublisher "Quickity Quack Productions" #define MyAppPublisher "Quickity Quack Productions"
#define MyAppExeName "MayShow.exe" #define MyAppExeName "MayShow.exe"
+1 -1
View File
@@ -1,6 +1,6 @@
#!/bin/bash #!/bin/bash
VERSION="1.4.3" VERSION="1.4.2"
SRC_DIR="src" # user ran script from main folder SRC_DIR="src" # user ran script from main folder
if [ ! -d "$SRC_DIR" ]; then if [ ! -d "$SRC_DIR" ]; then
SRC_DIR= "../src" # try SRC_DIR= "../src" # try
+1 -1
View File
@@ -1,5 +1,5 @@
<Project> <Project>
<PropertyGroup> <PropertyGroup>
<AvaloniaVersion>11.3.13</AvaloniaVersion> <AvaloniaVersion>12.0.0</AvaloniaVersion>
</PropertyGroup> </PropertyGroup>
</Project> </Project>
+1 -20
View File
@@ -1,34 +1,15 @@
using System.Collections.Generic;
using MayShow.Models;
namespace MayShow.Helpers; namespace MayShow.Helpers;
class Constants class Constants
{ {
public static string AppVersion = "1.4.3"; public static string AppVersion = "1.4.2";
public static string[] AllowedFileExtensionPatterns = [ "*.png", "*.jpg", "*.jpeg", "*.gif", "*.bmp", "*.webp", "*.pdf", "*.heic", ]; public static string[] AllowedFileExtensionPatterns = [ "*.png", "*.jpg", "*.jpeg", "*.gif", "*.bmp", "*.webp", "*.pdf", "*.heic", ];
public static string[] AllowedFileExtensionsNoStar = [ "png", "jpg", "jpeg", "gif", "bmp", "webp", "pdf", "heic", ]; public static string[] AllowedFileExtensionsNoStar = [ "png", "jpg", "jpeg", "gif", "bmp", "webp", "pdf", "heic", ];
public static string ReportSavedDataFileName = "report_data.json"; public static string ReportSavedDataFileName = "report_data.json";
public static List<DateDisplayFormat> GetDateDisplayFormats()
{
return [
new DateDisplayFormat("Month/Day/Year", "4/5/2026", "M/d/yyyy"),
new DateDisplayFormat("Year-Month-Day", "2026-04-05", "yyyy-MM-dd"),
new DateDisplayFormat("Month Day, Year", "April 5, 2026", "MMMM d, yyyy"),
new DateDisplayFormat("DOW, Month Day, Year", "Sunday, April 5, 2026", "dddd, MMMM d, yyyy"),
new DateDisplayFormat("Abbreviated-Month Day, Year", "Apr 5, 2026", "MMM d, yyyy"),
new DateDisplayFormat("DOW, Abbreviated-Month Day, Year", "Sunday, Apr 5, 2026", "dddd, MMM d, yyyy"),
new DateDisplayFormat("Day Month, Year", "5 April 2026", "d MMMM yyyy"),
new DateDisplayFormat("Day Abbreviated-Month, Year", "5 Apr 2026", "d MMM yyyy"),
new DateDisplayFormat("Day Month, Year", "05 April 2026", "dd MMMM yyyy"),
new DateDisplayFormat("Day Abbreviated-Month, Year", "05 Apr 2026", "dd MMM yyyy"),
];
}
public static string[] GetQuotes() public static string[] GetQuotes()
{ {
// sources: // sources:
-35
View File
@@ -1,35 +0,0 @@
using System;
using System.Collections.Generic;
using System.Globalization;
using Avalonia.Data.Converters;
namespace MayShow.Helpers;
public class DateFormatConverter : IMultiValueConverter
{
public object? Convert(
IList<object?> values,
Type targetType,
object? parameter,
CultureInfo culture)
{
if (values.Count >= 2 && values[0] is DateOnly date && values[1] is string format)
{
return date.ToString(format);
}
if (values.Count >= 2 && values[0] is string dateFormat && values[1] is DateOnly dateOnly)
{
return dateOnly.ToString(dateFormat);
}
if (values.Count >= 2 && values[0] is DateTime dateTime && values[1] is string format3)
{
return dateTime.ToString(format3);
}
if (values.Count >= 2 && values[0] is string format4 && values[1] is DateTime dateTime2)
{
return dateTime2.ToString(format4);
}
return "";
}
}
+1 -1
View File
@@ -2,7 +2,7 @@ using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Threading; using System.Threading;
namespace MayShow.Helpers; namespace MayShows.Helpers;
public static class ThreadSafeRandom public static class ThreadSafeRandom
{ {
+1 -1
View File
@@ -8,7 +8,7 @@ using System.Text.Json.Serialization;
using System.Text.RegularExpressions; using System.Text.RegularExpressions;
using Tmds.DBus.Protocol; using Tmds.DBus.Protocol;
namespace MayShow.Helpers; namespace MayShows.Helpers;
class Utilities class Utilities
{ {
+7 -9
View File
@@ -12,7 +12,7 @@
<PublishTrimmed>true</PublishTrimmed> <PublishTrimmed>true</PublishTrimmed>
<PublishAot>true</PublishAot> <PublishAot>true</PublishAot>
<AssemblyName>MayShow</AssemblyName> <AssemblyName>MayShow</AssemblyName>
<AssemblyVersion>1.4.3</AssemblyVersion> <!-- Also update Constants version --> <AssemblyVersion>1.4.2</AssemblyVersion> <!-- Also update Constants version -->
<ApplicationIcon>MayShow-icon.ico</ApplicationIcon> <ApplicationIcon>MayShow-icon.ico</ApplicationIcon>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
@@ -53,17 +53,15 @@
<PackageReference Include="Avalonia.Themes.Fluent" Version="$(AvaloniaVersion)" /> <PackageReference Include="Avalonia.Themes.Fluent" Version="$(AvaloniaVersion)" />
<PackageReference Include="Avalonia.Fonts.Inter" Version="$(AvaloniaVersion)" /> <PackageReference Include="Avalonia.Fonts.Inter" Version="$(AvaloniaVersion)" />
<PackageReference Include="Avalonia.Controls.DataGrid" Version="$(AvaloniaVersion)" /> <PackageReference Include="Avalonia.Controls.DataGrid" Version="$(AvaloniaVersion)" />
<PackageReference Include="Avalonia.Diagnostics" Version="$(AvaloniaVersion)"> <!-- <PackageReference Include="Avalonia.Diagnostics" Version="$(AvaloniaVersion)">
<IncludeAssets Condition="'$(Configuration)' != 'Debug'">None</IncludeAssets> <IncludeAssets Condition="'$(Configuration)' != 'Debug'">None</IncludeAssets>
<PrivateAssets Condition="'$(Configuration)' != 'Debug'">All</PrivateAssets> <PrivateAssets Condition="'$(Configuration)' != 'Debug'">All</PrivateAssets>
</PackageReference> </PackageReference> -->
<PackageReference Include="PDFsharp-MigraDoc" Version="6.2.4" /> <PackageReference Include="PDFsharp-MigraDoc" Version="6.2.4" />
<PackageReference Include="Magick.NET-Q8-AnyCPU" Version="14.11.1" Condition="'$(RuntimeIdentifier)' != 'osx-x64'" /> <PackageReference Include="Magick.NET-Q8-AnyCPU" Version="14.11.1" />
<!-- DO NOT UPDATE BEYOND 14.9.1 OR YOU WILL BREAK macOS MONTEREY USERS --> <PackageReference Include="Deadpikle.AvaloniaProgressRing" Version="0.11.0" />
<PackageReference Include="Magick.NET-Q8-x64" Version="14.9.1" Condition="'$(RuntimeIdentifier)' == 'osx-x64'" /> <PackageReference Include="DialogHost.Avalonia" Version="0.11.1" />
<PackageReference Include="Deadpikle.AvaloniaProgressRing" Version="0.10.11-preview20251127001" /> <PackageReference Include="Xaml.Behaviors.Interactions.DragAndDrop.DataGrid" Version="12.0.0-rc1" />
<PackageReference Include="DialogHost.Avalonia" Version="0.10.4" />
<PackageReference Include="Xaml.Behaviors.Interactions.DragAndDrop.DataGrid" Version="11.3.9.5" />
<PackageReference Include="Docnet.Core" Version="2.6.0" /> <PackageReference Include="Docnet.Core" Version="2.6.0" />
<PackageReference Include="SixLabors.ImageSharp" Version="3.1.12" /> <PackageReference Include="SixLabors.ImageSharp" Version="3.1.12" />
</ItemGroup> </ItemGroup>
-35
View File
@@ -1,35 +0,0 @@
using MayShow.Helpers;
namespace MayShow.Models;
class DateDisplayFormat : ChangeNotifier
{
private string _title;
private string _example;
private string _value;
public DateDisplayFormat(string title, string example, string value)
{
_title = title;
_example = example;
_value = value;
}
public string Title
{
get => _title;
set { _title = value; NotifyPropertyChanged(); }
}
public string Example
{
get => _example;
set { _example = value; NotifyPropertyChanged(); }
}
public string Value
{
get => _value;
set { _value = value; NotifyPropertyChanged(); }
}
}
+3 -3
View File
@@ -23,7 +23,7 @@ class ReportFile : ChangeNotifier
public ReportFile(ReportFile other) public ReportFile(ReportFile other)
{ {
Title = _title = other.Title; Title = _title = other.Title;
ReceiptDateTime = _receiptDateTime = other.ReceiptDateTime ?? DateTime.Now; ReceiptDateTime = _receiptDateTime = other.ReceiptDateTime;
Notes = _notes = other.Notes; Notes = _notes = other.Notes;
FilePath = _filePath = other.FilePath; FilePath = _filePath = other.FilePath;
} }
@@ -34,12 +34,12 @@ class ReportFile : ChangeNotifier
set { _title = value; NotifyPropertyChanged(); } set { _title = value; NotifyPropertyChanged(); }
} }
public DateTime? ReceiptDateTime public DateTime ReceiptDateTime
{ {
get => _receiptDateTime; get => _receiptDateTime;
set set
{ {
_receiptDateTime = value ?? DateTime.Now; _receiptDateTime = value;
NotifyPropertyChanged(); NotifyPropertyChanged();
NotifyPropertyChanged(nameof(ReceiptDate)); NotifyPropertyChanged(nameof(ReceiptDate));
} }
+1 -20
View File
@@ -6,6 +6,7 @@ using System.Text.Json;
using System.Text.Json.Serialization; using System.Text.Json.Serialization;
using System.Threading.Tasks; using System.Threading.Tasks;
using MayShow.Helpers; using MayShow.Helpers;
using MayShows.Helpers;
namespace MayShow.Models; namespace MayShow.Models;
@@ -18,8 +19,6 @@ class Settings : ChangeNotifier
private decimal _imageResizeThreshold; private decimal _imageResizeThreshold;
private bool _saveReportJsonDataInInternalDir; private bool _saveReportJsonDataInInternalDir;
private Dictionary<string, string> _workingFolderToInternalFolderName; private Dictionary<string, string> _workingFolderToInternalFolderName;
public string _dataGridDateFormat;
public string _reportDateFormat;
public int _settingsVersion; public int _settingsVersion;
public Settings() public Settings()
@@ -32,8 +31,6 @@ class Settings : ChangeNotifier
_saveReportJsonDataInInternalDir = false; _saveReportJsonDataInInternalDir = false;
_workingFolderToInternalFolderName = []; _workingFolderToInternalFolderName = [];
_settingsVersion = 1; _settingsVersion = 1;
_dataGridDateFormat = "dd/MM/yyyy";
_reportDateFormat = "yyyy-MM-dd";
} }
public Settings(Settings other) public Settings(Settings other)
@@ -46,8 +43,6 @@ class Settings : ChangeNotifier
_saveReportJsonDataInInternalDir = other.SaveReportJsonDataInInternalDir; _saveReportJsonDataInInternalDir = other.SaveReportJsonDataInInternalDir;
_workingFolderToInternalFolderName = other.WorkingFolderToInternalFolderName; _workingFolderToInternalFolderName = other.WorkingFolderToInternalFolderName;
_settingsVersion = other.SettingsVersion; _settingsVersion = other.SettingsVersion;
_dataGridDateFormat = "yyyy-MM-dd";
_reportDateFormat = "yyyy-MM-dd";
} }
[JsonInclude] [JsonInclude]
@@ -107,20 +102,6 @@ class Settings : ChangeNotifier
set { _settingsVersion = value; NotifyPropertyChanged(); } set { _settingsVersion = value; NotifyPropertyChanged(); }
} }
[JsonInclude]
public string DataGridDateFormat
{
get => _dataGridDateFormat;
set { _dataGridDateFormat = value; NotifyPropertyChanged(); }
}
[JsonInclude]
public string ReportDateFormat
{
get => _reportDateFormat;
set { _reportDateFormat = value; NotifyPropertyChanged(); }
}
public static string SettingsFileName = "settings.json"; public static string SettingsFileName = "settings.json";
public static string GetSettingsPath() public static string GetSettingsPath()
+12 -1
View File
@@ -17,5 +17,16 @@ class Program
=> AppBuilder.Configure<App>() => AppBuilder.Configure<App>()
.UsePlatformDetect() .UsePlatformDetect()
.WithInterFont() .WithInterFont()
.LogToTrace(); .LogToTrace()
.With(new AvaloniaNativePlatformOptions
{
// https://github.com/AvaloniaUI/Avalonia/issues/20971
RenderingMode =
[
// put OpenGL first, to have higher priority over Metal
AvaloniaNativeRenderingMode.OpenGl,
AvaloniaNativeRenderingMode.Metal,
AvaloniaNativeRenderingMode.Software
]
});
} }
+8 -28
View File
@@ -19,6 +19,7 @@ using PdfSharp.Snippets.Font;
using MayShow.Helpers; using MayShow.Helpers;
using MayShow.Interfaces; using MayShow.Interfaces;
using MayShow.Models; using MayShow.Models;
using MayShows.Helpers;
using Docnet.Core.Models; using Docnet.Core.Models;
using Docnet.Core; using Docnet.Core;
@@ -28,8 +29,7 @@ using SixLabors.ImageSharp.Processing;
using System.Reflection.Metadata.Ecma335; using System.Reflection.Metadata.Ecma335;
using Docnet.Core.Readers; using Docnet.Core.Readers;
using MigraDoc.DocumentObjectModel.Visitors; using MigraDoc.DocumentObjectModel.Visitors;
using System.Collections.Generic; using Avalonia.Input.Platform;
using System.Runtime.InteropServices;
namespace MayShow.ViewModels; namespace MayShow.ViewModels;
@@ -46,7 +46,6 @@ class MainViewModel : BaseViewModel, IFontResolver, ICanCheckShutdown
private DateTime? _lastGeneratedTime; private DateTime? _lastGeneratedTime;
private Settings _settings; private Settings _settings;
private List<DateDisplayFormat> _dateDisplayFormats;
private bool _hasUnsavedWork; private bool _hasUnsavedWork;
@@ -59,9 +58,7 @@ class MainViewModel : BaseViewModel, IFontResolver, ICanCheckShutdown
var quotes = Constants.GetQuotes(); var quotes = Constants.GetQuotes();
Random random = new Random(); Random random = new Random();
var quoteIndex = random.Next(0, quotes.Length); var quoteIndex = random.Next(0, quotes.Length);
var compDetails = RuntimeInformation.OSDescription + " | " + _programLog = "----- MayShow v" + Constants.AppVersion + " ------" + Environment.NewLine;
RuntimeInformation.OSArchitecture.ToString();
_programLog = "----- MayShow v" + Constants.AppVersion + " | " + compDetails + " ------" + Environment.NewLine;
_programLog += quotes[quoteIndex] + Environment.NewLine; _programLog += quotes[quoteIndex] + Environment.NewLine;
_programLog += "---------------------------------------" + Environment.NewLine; _programLog += "---------------------------------------" + Environment.NewLine;
_programLog += "Loaded and ready to create report!" + Environment.NewLine; _programLog += "Loaded and ready to create report!" + Environment.NewLine;
@@ -71,9 +68,6 @@ class MainViewModel : BaseViewModel, IFontResolver, ICanCheckShutdown
_reportTitle = ""; _reportTitle = "";
_lastGeneratedTime = null; _lastGeneratedTime = null;
_settings = Settings.LoadSettings(); _settings = Settings.LoadSettings();
_dateDisplayFormats = Constants.GetDateDisplayFormats();
NotifyPropertyChanged(nameof(DataGridDateFormat));
NotifyPropertyChanged(nameof(DataGridDateFormatWatermark));
if (!string.IsNullOrWhiteSpace(_settings.LastUsedPath)) if (!string.IsNullOrWhiteSpace(_settings.LastUsedPath))
{ {
LogInfo("Loading data at last used path of {0}", _settings.LastUsedPath); LogInfo("Loading data at last used path of {0}", _settings.LastUsedPath);
@@ -180,16 +174,6 @@ class MainViewModel : BaseViewModel, IFontResolver, ICanCheckShutdown
} }
} }
public string DataGridDateFormat
{
get => _settings.DataGridDateFormat;
}
public string DataGridDateFormatWatermark
{
get => _dateDisplayFormats.FirstOrDefault(x => x.Value == _settings.DataGridDateFormat)?.Example ?? "2025-12-04";
}
private void LogInfo(string message, params object[]? arguments) private void LogInfo(string message, params object[]? arguments)
{ {
var timestamp = string.Format("[{0:s}]", DateTime.Now); var timestamp = string.Format("[{0:s}]", DateTime.Now);
@@ -316,8 +300,6 @@ class MainViewModel : BaseViewModel, IFontResolver, ICanCheckShutdown
_settings = (Settings)updatedSettings; _settings = (Settings)updatedSettings;
await _settings.SaveSettingsAsync(); await _settings.SaveSettingsAsync();
LogInfo("Saved updated settings!"); LogInfo("Saved updated settings!");
NotifyPropertyChanged(nameof(DataGridDateFormat));
NotifyPropertyChanged(nameof(DataGridDateFormatWatermark));
} }
} }
@@ -528,15 +510,13 @@ class MainViewModel : BaseViewModel, IFontResolver, ICanCheckShutdown
{ {
LogInfo(e.StackTrace); LogInfo(e.StackTrace);
} }
var otherException = e.InnerException; if (e.InnerException != null)
while (otherException != null)
{ {
LogInfo(">> Inner exception: " + otherException.Message); LogInfo("Inner exception: " + e.InnerException.Message);
if (otherException.StackTrace != null) if (e.InnerException.StackTrace != null)
{ {
LogInfo(otherException.StackTrace); LogInfo(e.InnerException.StackTrace);
} }
otherException = otherException.InnerException;
} }
LogInfo("Please report this error to a programmer or fix the issue listed above."); LogInfo("Please report this error to a programmer or fix the issue listed above.");
IsCreatingPDF = false; IsCreatingPDF = false;
@@ -830,7 +810,7 @@ class MainViewModel : BaseViewModel, IFontResolver, ICanCheckShutdown
receiptDatePar.Format.Font.Size = 12; receiptDatePar.Format.Font.Size = 12;
receiptDatePar.Format.Font.Bold = true; receiptDatePar.Format.Font.Bold = true;
receiptDatePar.Format.Font.Name = "Noto Sans JP"; // has english letters in it, too receiptDatePar.Format.Font.Name = "Noto Sans JP"; // has english letters in it, too
receiptDatePar.AddText(file.ReceiptDate.ToString(_settings.ReportDateFormat)); receiptDatePar.AddText(file.ReceiptDate.ToString("yyyy-MM-dd"));
receiptDatePar.Tag = "ReceiptDatePar"; receiptDatePar.Tag = "ReceiptDatePar";
if (!string.IsNullOrWhiteSpace(file.Notes)) if (!string.IsNullOrWhiteSpace(file.Notes))
{ {
+1 -42
View File
@@ -18,7 +18,7 @@ using PdfSharp.Snippets.Font;
using MayShow.Interfaces; using MayShow.Interfaces;
using MayShow.Models; using MayShow.Models;
using MayShow.Helpers; using MayShow.Helpers;
using System.Collections.Generic; using MayShows.Helpers;
namespace MayShow.ViewModels; namespace MayShow.ViewModels;
@@ -28,9 +28,6 @@ class SettingsViewModel: ChangeNotifier
private Settings _settings; private Settings _settings;
private string _errorMessage; private string _errorMessage;
private ITopLevelGrabber? _topLevelGrabber; private ITopLevelGrabber? _topLevelGrabber;
private List<DateDisplayFormat> _dateFormats;
private int _gridDisplayDateFormatSelectedIndex;
private int _reportDisplayDateFormatSelectedIndex;
public SettingsViewModel(Settings settingsToEdit, ITopLevelGrabber? topLevelGrabber) public SettingsViewModel(Settings settingsToEdit, ITopLevelGrabber? topLevelGrabber)
{ {
@@ -38,17 +35,6 @@ class SettingsViewModel: ChangeNotifier
_settings = new Settings(settingsToEdit); // clone it _settings = new Settings(settingsToEdit); // clone it
_errorMessage = ""; _errorMessage = "";
_topLevelGrabber = topLevelGrabber; _topLevelGrabber = topLevelGrabber;
_dateFormats = Constants.GetDateDisplayFormats();
_gridDisplayDateFormatSelectedIndex = _dateFormats.FindIndex(x => x.Value == _previousSettings.DataGridDateFormat);
if (_gridDisplayDateFormatSelectedIndex == -1)
{
_gridDisplayDateFormatSelectedIndex = 0;
}
_reportDisplayDateFormatSelectedIndex = _dateFormats.FindIndex(x => x.Value == _previousSettings.ReportDateFormat);
if (_reportDisplayDateFormatSelectedIndex == -1)
{
_reportDisplayDateFormatSelectedIndex = 0;
}
} }
public bool UseDocnetPDFImageRendering public bool UseDocnetPDFImageRendering
@@ -123,33 +109,6 @@ class SettingsViewModel: ChangeNotifier
} }
} }
public List<DateDisplayFormat> DateFormats
{
get => _dateFormats;
}
public int DataGridDisplayDateFormatSelectedIndex
{
get => _gridDisplayDateFormatSelectedIndex;
set
{
_gridDisplayDateFormatSelectedIndex = value;
_settings.DataGridDateFormat = _dateFormats[value].Value;
NotifyPropertyChanged();
}
}
public int ReportDisplayDateFormatSelectedIndex
{
get => _reportDisplayDateFormatSelectedIndex;
set
{
_reportDisplayDateFormatSelectedIndex = value;
_settings.ReportDateFormat = _dateFormats[value].Value;
NotifyPropertyChanged();
}
}
public async void ChooseOutputFolder() public async void ChooseOutputFolder()
{ {
var topLevel = _topLevelGrabber?.GetTopLevel(); var topLevel = _topLevelGrabber?.GetTopLevel();
+1 -1
View File
@@ -11,7 +11,7 @@
MaxWidth="450"> MaxWidth="450">
<StackPanel Orientation="Vertical" <StackPanel Orientation="Vertical"
Spacing="4"> Spacing="4">
<TextBlock Text="MayShow 1.4.3" <TextBlock Text="MayShow 1.4.2"
HorizontalAlignment="Center" HorizontalAlignment="Center"
TextWrapping="Wrap" TextWrapping="Wrap"
FontSize="18" FontSize="18"
+2 -2
View File
@@ -20,12 +20,12 @@
FontSize="16" FontSize="16"
FontWeight="Bold" /> FontWeight="Bold" />
<Label Content="Title" /> <Label Content="Title" />
<TextBox Watermark="Title" <TextBox PlaceholderText="Title"
Text="{Binding ClonedFile.Title}" Text="{Binding ClonedFile.Title}"
VerticalAlignment="Stretch" VerticalAlignment="Stretch"
TextWrapping="Wrap" /> TextWrapping="Wrap" />
<Label Content="Notes" /> <Label Content="Notes" />
<TextBox Watermark="Notes" <TextBox PlaceholderText="Notes"
Text="{Binding ClonedFile.Notes}" Text="{Binding ClonedFile.Notes}"
VerticalAlignment="Stretch" VerticalAlignment="Stretch"
AcceptsReturn="True" AcceptsReturn="True"
+16 -32
View File
@@ -10,9 +10,6 @@
xmlns:vm="clr-namespace:MayShow.ViewModels" xmlns:vm="clr-namespace:MayShow.ViewModels"
xmlns:progRing="clr-namespace:AvaloniaProgressRing;assembly=AvaloniaProgressRing" xmlns:progRing="clr-namespace:AvaloniaProgressRing;assembly=AvaloniaProgressRing"
x:DataType="vm:MainViewModel"> x:DataType="vm:MainViewModel">
<UserControl.Resources>
<helpers:DateFormatConverter x:Key="DateFormatter" />
</UserControl.Resources>
<Grid ColumnDefinitions="*" <Grid ColumnDefinitions="*"
RowDefinitions="Auto, 2*, Auto, Auto, *"> RowDefinitions="Auto, 2*, Auto, Auto, *">
<Button Command="{Binding ShowSettings}" <Button Command="{Binding ShowSettings}"
@@ -53,7 +50,7 @@
IsVisible="{Binding IsTitleBoxVisible}" /> IsVisible="{Binding IsTitleBoxVisible}" />
<TextBox Text="{Binding ReportTitle}" <TextBox Text="{Binding ReportTitle}"
IsVisible="{Binding IsTitleBoxVisible}" IsVisible="{Binding IsTitleBoxVisible}"
Watermark="Receipts December 2024" PlaceholderText="Receipts December 2024"
Margin="2,0,2,4" Margin="2,0,2,4"
Classes="clearButton" Classes="clearButton"
Name="TitleTextBox"> Name="TitleTextBox">
@@ -100,7 +97,7 @@
<DataGridTemplateColumn.CellTemplate> <DataGridTemplateColumn.CellTemplate>
<DataTemplate> <DataTemplate>
<Grid ColumnDefinitions="Auto, *"> <Grid ColumnDefinitions="Auto, *">
<Button Command="{Binding $parent[UserControl].((vm:MainViewModel)DataContext).LocateFile}" <Button Command="{Binding $parent[DataGrid].((vm:MainViewModel)DataContext).LocateFile}"
CommandParameter="{Binding}" CommandParameter="{Binding}"
IsVisible="{Binding !IsFileFoundOnDisk}" IsVisible="{Binding !IsFileFoundOnDisk}"
Margin="2" Margin="2"
@@ -110,7 +107,7 @@
Grid.Column="0" Grid.Column="0"
FontFamily="{StaticResource FontAwesomeSolid}" FontFamily="{StaticResource FontAwesomeSolid}"
ToolTip.Tip="File not found; click to locate..." ToolTip.Tip="File not found; click to locate..."
IsEnabled="{Binding !$parent[UserControl].((vm:MainViewModel)DataContext).IsCreatingPDF}"/> IsEnabled="{Binding !$parent[DataGrid].((vm:MainViewModel)DataContext).IsCreatingPDF}"/>
<TextBlock Text="{Binding Title}" <TextBlock Text="{Binding Title}"
TextTrimming="CharacterEllipsis" TextTrimming="CharacterEllipsis"
TextWrapping="NoWrap" TextWrapping="NoWrap"
@@ -124,7 +121,7 @@
<DataGridTemplateColumn.CellEditingTemplate> <DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate DataType="models:ReportFile"> <DataTemplate DataType="models:ReportFile">
<TextBox Text="{Binding Title}" <TextBox Text="{Binding Title}"
Watermark="Title" PlaceholderText="Title"
ToolTip.Tip="{Binding Title}" ToolTip.Tip="{Binding Title}"
Classes="clearButton"> Classes="clearButton">
<TextBox.KeyBindings> <TextBox.KeyBindings>
@@ -136,29 +133,19 @@
</DataGridTemplateColumn> </DataGridTemplateColumn>
<DataGridTemplateColumn Header="Receipt Date" <DataGridTemplateColumn Header="Receipt Date"
IsReadOnly="False" IsReadOnly="False"
Width="150"> Width="125">
<DataGridTemplateColumn.CellTemplate> <DataGridTemplateColumn.CellTemplate>
<DataTemplate> <DataTemplate>
<Label VerticalAlignment="Center" <Label Content="{Binding ReceiptDate}"
VerticalAlignment="Center"
Margin="8,0,8,0" Margin="8,0,8,0"
HorizontalAlignment="Left"> HorizontalAlignment="Left"/>
<Label.Content>
<MultiBinding Converter="{StaticResource DateFormatter}">
<Binding Path="ReceiptDate" />
<Binding Path="$parent[UserControl].((vm:MainViewModel)DataContext).DataGridDateFormat" />
</MultiBinding>
</Label.Content>
</Label>
</DataTemplate> </DataTemplate>
</DataGridTemplateColumn.CellTemplate> </DataGridTemplateColumn.CellTemplate>
<DataGridTemplateColumn.CellEditingTemplate> <DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate DataType="models:ReportFile"> <DataTemplate DataType="models:ReportFile">
<CalendarDatePicker SelectedDate="{Binding ReceiptDateTime}" <CalendarDatePicker SelectedDate="{Binding ReceiptDateTime}"
DisplayDate="{Binding ReceiptDateTime}" DisplayDate="{Binding ReceiptDateTime}"/>
SelectedDateFormat="Custom"
HorizontalAlignment="Stretch"
Watermark="{Binding $parent[UserControl].((vm:MainViewModel)DataContext).DataGridDateFormatWatermark}"
CustomDateFormatString="{Binding $parent[UserControl].((vm:MainViewModel)DataContext).DataGridDateFormat}"/>
</DataTemplate> </DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate> </DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn> </DataGridTemplateColumn>
@@ -169,7 +156,6 @@
<DataTemplate> <DataTemplate>
<TextBlock Text="{Binding FileName}" <TextBlock Text="{Binding FileName}"
VerticalAlignment="Center" VerticalAlignment="Center"
TextTrimming="PrefixCharacterEllipsis"
ToolTip.Tip="{Binding FileName}" ToolTip.Tip="{Binding FileName}"
Margin="8,0,8,0" Margin="8,0,8,0"
HorizontalAlignment="Left"/> HorizontalAlignment="Left"/>
@@ -178,27 +164,25 @@
</DataGridTemplateColumn> </DataGridTemplateColumn>
<DataGridTemplateColumn Header="" <DataGridTemplateColumn Header=""
IsReadOnly="True" IsReadOnly="True"
Width="200"> Width="*">
<DataGridTemplateColumn.CellTemplate> <DataGridTemplateColumn.CellTemplate>
<DataTemplate> <DataTemplate>
<StackPanel Orientation="Horizontal" <StackPanel Orientation="Horizontal"
Spacing="4"> Spacing="4">
<Button Command="{Binding $parent[UserControl].((vm:MainViewModel)DataContext).EditFileProperties}" <Button Command="{Binding $parent[DataGrid].((vm:MainViewModel)DataContext).EditFileProperties}"
CommandParameter="{Binding}" CommandParameter="{Binding}"
Classes="accent" Classes="accent"
Margin="2" Margin="2"
FontSize="12" IsEnabled="{Binding !$parent[DataGrid].((vm:MainViewModel)DataContext).IsCreatingPDF}">
IsEnabled="{Binding !$parent[UserControl].((vm:MainViewModel)DataContext).IsCreatingPDF}">
<Button.Content> <Button.Content>
<TextBlock><Run Text="&#xf044;" FontFamily="{StaticResource FontAwesomeSolid}"/> Edit</TextBlock> <TextBlock><Run Text="&#xf044;" FontFamily="{StaticResource FontAwesomeSolid}"/> Edit</TextBlock>
</Button.Content> </Button.Content>
</Button> </Button>
<Button Command="{Binding $parent[UserControl].((vm:MainViewModel)DataContext).RemoveFile}" <Button Command="{Binding $parent[DataGrid].((vm:MainViewModel)DataContext).RemoveFile}"
CommandParameter="{Binding}" CommandParameter="{Binding}"
Classes="Danger" Classes="Danger"
Margin="2" Margin="2"
FontSize="12" IsEnabled="{Binding !$parent[DataGrid].((vm:MainViewModel)DataContext).IsCreatingPDF}">
IsEnabled="{Binding !$parent[UserControl].((vm:MainViewModel)DataContext).IsCreatingPDF}">
<Button.Content> <Button.Content>
<TextBlock><Run Text="&#xf1f8;" FontFamily="{StaticResource FontAwesomeSolid}"/> Remove</TextBlock> <TextBlock><Run Text="&#xf1f8;" FontFamily="{StaticResource FontAwesomeSolid}"/> Remove</TextBlock>
</Button.Content> </Button.Content>
@@ -222,13 +206,13 @@
Spacing="8" Spacing="8"
Margin="4" Margin="4"
Grid.Row="2"> Grid.Row="2">
<Button Command="{Binding $parent[UserControl].((vm:MainViewModel)DataContext).OpenFileLocation}" <Button Command="{Binding $parent[DataGrid].((vm:MainViewModel)DataContext).OpenFileLocation}"
CommandParameter="{Binding}"> CommandParameter="{Binding}">
<Button.Content> <Button.Content>
<TextBlock FontSize="12"><Run Text="&#xf07c;" FontFamily="{StaticResource FontAwesomeSolid}"/> Open File Location</TextBlock> <TextBlock FontSize="12"><Run Text="&#xf07c;" FontFamily="{StaticResource FontAwesomeSolid}"/> Open File Location</TextBlock>
</Button.Content> </Button.Content>
</Button> </Button>
<Button Command="{Binding $parent[UserControl].((vm:MainViewModel)DataContext).OpenFile}" <Button Command="{Binding $parent[DataGrid].((vm:MainViewModel)DataContext).OpenFile}"
CommandParameter="{Binding}"> CommandParameter="{Binding}">
<Button.Content> <Button.Content>
<TextBlock FontSize="12"><Run Text="&#xf07c;" FontFamily="{StaticResource FontAwesomeSolid}"/> Open File</TextBlock> <TextBlock FontSize="12"><Run Text="&#xf07c;" FontFamily="{StaticResource FontAwesomeSolid}"/> Open File</TextBlock>
+1 -1
View File
@@ -27,7 +27,7 @@ public partial class MainView : UserControl
public void UnfocusTextbox() public void UnfocusTextbox()
{ {
var topLevel = TopLevel.GetTopLevel(this); var topLevel = TopLevel.GetTopLevel(this);
topLevel?.FocusManager?.ClearFocus(); topLevel?.FocusManager?.Focus(null);
if (DataContext is MainViewModel mvm) if (DataContext is MainViewModel mvm)
{ {
mvm?.HasUnsavedWork = true; mvm?.HasUnsavedWork = true;
-26
View File
@@ -46,32 +46,6 @@
HorizontalAlignment="Left" HorizontalAlignment="Left"
VerticalAlignment="Top"/> VerticalAlignment="Top"/>
</Grid> </Grid>
<Label Content="File List Date Format"
HorizontalAlignment="Left"
FontSize="14" />
<ComboBox SelectedIndex="{Binding DataGridDisplayDateFormatSelectedIndex}"
ItemsSource="{Binding DateFormats}"
MaxDropDownHeight="300">
<ComboBox.ItemTemplate>
<DataTemplate x:DataType="models:DateDisplayFormat">
<TextBlock Text="{Binding Example}"
TextWrapping="Wrap"/>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
<Label Content="PDF Report Date Format"
HorizontalAlignment="Left"
FontSize="14" />
<ComboBox SelectedIndex="{Binding ReportDisplayDateFormatSelectedIndex}"
ItemsSource="{Binding DateFormats}"
MaxDropDownHeight="300">
<ComboBox.ItemTemplate>
<DataTemplate x:DataType="models:DateDisplayFormat">
<TextBlock Text="{Binding Example}"
TextWrapping="Wrap"/>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
<CheckBox IsChecked="{Binding SaveReportJsonDataInInternalDir}">Save report data (names, notes, etc.) in MayShow settings directory (saves in working directory by default)</CheckBox> <CheckBox IsChecked="{Binding SaveReportJsonDataInInternalDir}">Save report data (names, notes, etc.) in MayShow settings directory (saves in working directory by default)</CheckBox>
<Button Command="{Binding OpenSettingsDir}"> <Button Command="{Binding OpenSettingsDir}">
<TextBlock> <TextBlock>
+1 -1
View File
@@ -3,7 +3,7 @@
<!-- This manifest is used on Windows only. <!-- This manifest is used on Windows only.
Don't remove it as it might cause problems with window transparency and embedded controls. Don't remove it as it might cause problems with window transparency and embedded controls.
For more details visit https://learn.microsoft.com/en-us/windows/win32/sbscs/application-manifests --> For more details visit https://learn.microsoft.com/en-us/windows/win32/sbscs/application-manifests -->
<assemblyIdentity version="1.4.3.0" name="MayShow.Desktop"/> <assemblyIdentity version="1.4.2.0" name="MayShow.Desktop"/>
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1"> <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
<application> <application>