Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/new_version.yml
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ jobs:
- name: Setup .NET
uses: actions/setup-dotnet@v4
with:
dotnet-version: 8.0.x
dotnet-version: 10.0.x
- name: Get version
id: get_version
run: echo "version=$((Select-Xml -Path .\$( $env:PROJECT_NAME ).csproj -XPath '/Project/PropertyGroup/AssemblyVersion').Node.InnerXML)" >> $env:GITHUB_OUTPUT
Expand Down
26 changes: 14 additions & 12 deletions AssM.csproj
Original file line number Diff line number Diff line change
@@ -1,33 +1,35 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>WinExe</OutputType>
<TargetFramework>net8.0</TargetFramework>
<TargetFramework>net10.0</TargetFramework>
<Nullable>enable</Nullable>
<BuiltInComInteropSupport>true</BuiltInComInteropSupport>
<ApplicationManifest>app.manifest</ApplicationManifest>
<Version>1.7.1</Version>
<Version>1.8.0</Version>
<Authors>SubZeroPL</Authors>
<PackageProjectUrl>https://github.com/SubZeroPL/AssM</PackageProjectUrl>
<AssemblyVersion>1.7.1</AssemblyVersion>
<FileVersion>1.7.1</FileVersion>
<AssemblyVersion>1.8.0</AssemblyVersion>
<FileVersion>1.8.0</FileVersion>
<Title>AssM</Title>
<PackageLicenseUrl>https://github.com/SubZeroPL/AssM/blob/master/LICENSE</PackageLicenseUrl>
<RepositoryUrl>https://github.com/SubZeroPL/AssM/</RepositoryUrl>
<ApplicationIcon>Assets\assm.ico</ApplicationIcon>
<LangVersion>14</LangVersion>
<PackageIcon>Assets\assm.png</PackageIcon>
</PropertyGroup>

<ItemGroup>
<PackageReference Include="Avalonia" Version="11.3.9" />
<PackageReference Include="Avalonia.Controls.DataGrid" Version="11.3.9" />
<PackageReference Include="Avalonia.Desktop" Version="11.3.9" />
<PackageReference Include="Avalonia.Themes.Fluent" Version="11.3.9" />
<PackageReference Include="Avalonia.Fonts.Inter" Version="11.3.9" />
<PackageReference Include="Avalonia" Version="11.3.10" />
<PackageReference Include="Avalonia.Controls.DataGrid" Version="11.3.10" />
<PackageReference Include="Avalonia.Desktop" Version="11.3.10" />
<PackageReference Include="Avalonia.Themes.Fluent" Version="11.3.10" />
<PackageReference Include="Avalonia.Fonts.Inter" Version="11.3.10" />
<!--Condition below is needed to remove Avalonia.Diagnostics package from build output in Release configuration.-->
<PackageReference Condition="'$(Configuration)' == 'Debug'" Include="Avalonia.Diagnostics" Version="11.3.9" />
<PackageReference Condition="'$(Configuration)' == 'Debug'" Include="Avalonia.Diagnostics" Version="11.3.10" />
<PackageReference Include="BouncyCastle.Cryptography" Version="2.6.2" />
<PackageReference Include="Markdown.Avalonia" Version="11.0.3-a1"/>
<PackageReference Include="MessageBox.Avalonia" Version="3.3.0" />
<PackageReference Include="NLog" Version="6.0.6" />
<PackageReference Include="MessageBox.Avalonia" Version="3.3.1.1" />
<PackageReference Include="NLog" Version="6.0.7" />
<PackageReference Include="Octokit" Version="14.0.0" />
</ItemGroup>

Expand Down
1 change: 0 additions & 1 deletion Classes/Functions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,6 @@ public static void LoadExistingData(Game game, Configuration configuration, stri
if (!LoadTitleFromReadme(readmePath, game))
{
Logger.Error($"Failed to load title from {readmePath}");
throw new ProcessingException($"Failed to load title from {readmePath}. Readme file is malformed");
}
}

Expand Down
15 changes: 7 additions & 8 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@
It is a piece of software that assists in creating entries for [Arkadyzja savestates repository](https://github.com/ActionPL/duckstation_openbios_savestates). It allows creating and editing README files for games that will have savestates uploaded to the repository. Those savestates will then be available for [Arkadyzja](https://arkadyzja.honmaru.pl/).

## ⚠️ Requirements
For the application to work, [.NET Framework 8](https://dotnet.microsoft.com/en-us/download/dotnet/8.0) is required.
For the application to work, [.NET Framework 10](https://dotnet.microsoft.com/en-us/download/dotnet/10.0) is required.

Application is developed and tested on Windows 11 OS. It should also work on Linux/Mac hovewer it was not tested (extensively) on those platforms (only a bit on Linux and not at all on Mac) and currently only Win and Linux builds are released (see below).
Application is developed and tested on Windows 11 OS. It should also work on Linux/Mac, however, it was not tested (extensively) on those platforms (only a bit on Linux and not at all on Mac), and currently only Win and Linux builds are released (see below).

## 📦 Releases
Each release starting with 1.4.0 has four variants:
Expand All @@ -16,10 +16,10 @@ Each release starting with 1.4.0 has four variants:

_**Linux releases are highly experimental, use at your own risk!**_

The application has some basic new version check implemented. When it detects that new version is available, this button will be shown:\
The application has some basic new version checks implemented. When it detects that a new version is available, this button will be shown:\
![New version button](.github/assets/new_ver.png "New version button")

Clicking it will open default browser on the latest release page.
Clicking it will open the default browser on the latest release page.

## 🪧 Usage
[![Last Release](https://img.shields.io/github/v/release/SubZeroPL/AssM?logo=github&label=latest)](https://github.com/SubZeroPL/AssM/releases)
Expand All @@ -30,23 +30,22 @@ Clicking it will open default browser on the latest release page.
![Application main window](.github/assets/app.png "Application main window")
First, you should select the Output directory, where the created README files will be stored. The files are created in a specific directory structure:
`OutputPath\Platform\GameID`.\
The output directory is saved between sessions, so when you start the application next time it will be automatically read and existing entries inserted into the table.\
The output directory is saved between sessions, so when you start the application next time, it will be automatically read and existing entries inserted into the table.\
**You should not modify existing directory structure if you plan to use the output directory again later!**
The fields `Title` and `Description` can be freely edited, the changes are reflected immediately in the table.

Then you can use `Add` and `Add folder` buttons to add more source `.cue` files
Then you can use `Add` and `Add folder` buttons to add more source `.cue/.iso` files

When you click `Start processing` the application will go through the list and perform required operations according to the configuration.

## ⚙️ Configuration
![Configuration options](.github/assets/config.png "Configuration options")
- Get game title from CUE file name - by default, game name is extracted from cue/bin image; this option uses CUE file name instead
- Get game title from CUE/ISO file name - by default, game name is extracted from the image; this option uses CUE/ISO file name instead
- Use Game ID as the name for CHD file – by default, game title (as set by a previous option) is used for CHD file name; this option uses Game ID instead

Other configuration options should be self-explanatory.

## 📝 TODO
- some nice icon
- [you tell me](https://github.com/SubZeroPL/AssM/issues)

## 🔗 Dependencies
Expand Down
15 changes: 9 additions & 6 deletions Windows/MainWindow.axaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -130,7 +130,7 @@ private void AddGame(string imagePath)
{
MessageBoxManager.GetMessageBoxStandard("Error",
$"Failed to add game to list from {imagePath}{Environment.NewLine}Id not present in image",
ButtonEnum.Ok, MsBox.Avalonia.Enums.Icon.Error, WindowStartupLocation.CenterOwner)
ButtonEnum.Ok, MsBox.Avalonia.Enums.Icon.Error, null, WindowStartupLocation.CenterOwner)
.ShowWindowDialogAsync(this);
return;
}
Expand Down Expand Up @@ -172,7 +172,7 @@ private void AddFolderButton_OnClick(object? sender, RoutedEventArgs e)
{
MessageBoxManager.GetMessageBoxStandard("Error",
string.Join(Environment.NewLine, errors),
ButtonEnum.Ok, MsBox.Avalonia.Enums.Icon.Error, WindowStartupLocation.CenterOwner)
ButtonEnum.Ok, MsBox.Avalonia.Enums.Icon.Error, null, WindowStartupLocation.CenterOwner)
.ShowWindowDialogAsync(this);
}
});
Expand Down Expand Up @@ -228,15 +228,16 @@ private void StartProcessingButton_OnClick(object? sender, RoutedEventArgs e)
if (string.IsNullOrWhiteSpace(TextBoxOutputDirectory.Text))
{
MessageBoxManager.GetMessageBoxStandard("Error", "Please provide a valid output directory",
ButtonEnum.Ok, MsBox.Avalonia.Enums.Icon.Error, WindowStartupLocation.CenterOwner)
ButtonEnum.Ok, MsBox.Avalonia.Enums.Icon.Error, null, WindowStartupLocation.CenterOwner)
.ShowWindowDialogAsync(this).GetAwaiter().GetResult();
return;
}

if (GameList.ToList().Count == 0)
{
MessageBoxManager.GetMessageBoxStandard("Error", "Please provide at least one game", ButtonEnum.Ok,
MsBox.Avalonia.Enums.Icon.Error, WindowStartupLocation.CenterOwner).ShowWindowDialogAsync(this)
MsBox.Avalonia.Enums.Icon.Error, null, WindowStartupLocation.CenterOwner)
.ShowWindowDialogAsync(this)
.GetAwaiter().GetResult();
return;
}
Expand All @@ -249,15 +250,17 @@ private void StartProcessingButton_OnClick(object? sender, RoutedEventArgs e)
{
progress.Close();
MessageBoxManager.GetMessageBoxStandard("Processing finished", "Processing finished",
ButtonEnum.Ok, MsBox.Avalonia.Enums.Icon.Success, WindowStartupLocation.CenterOwner)
ButtonEnum.Ok, MsBox.Avalonia.Enums.Icon.Success, null, WindowStartupLocation.CenterOwner)
.ShowWindowDialogAsync(this);
DataGridGameList.CollectionView.Refresh();
});
}
catch (Exception ex)
{
MessageBoxManager.GetMessageBoxStandard(progress.Title ?? "Error", ex.Message, ButtonEnum.Ok,
MsBox.Avalonia.Enums.Icon.Error).ShowWindowDialogAsync(this).GetAwaiter().GetResult();
MsBox.Avalonia.Enums.Icon.Error, null, WindowStartupLocation.CenterOwner)
.ShowWindowDialogAsync(this)
.GetAwaiter().GetResult();
}
}

Expand Down
Loading