mirror of
https://github.com/AntinomyCollective/Retime-Phoneme-Util-GUI.git
synced 2025-04-24 15:23:43 +03:00
Compare commits
7 Commits
Author | SHA1 | Date | |
---|---|---|---|
164d15ed2f | |||
d1cc58f9aa | |||
fbad1e770e | |||
41d4f8d5a3 | |||
|
000000009e | ||
|
000000001d | ||
e49c0b9977 |
76
.github/CODE_OF_CONDUCT.md
vendored
Normal file
76
.github/CODE_OF_CONDUCT.md
vendored
Normal file
@ -0,0 +1,76 @@
|
|||||||
|
# Contributor Covenant Code of Conduct
|
||||||
|
|
||||||
|
## Our Pledge
|
||||||
|
|
||||||
|
In the interest of fostering an open and welcoming environment, we as
|
||||||
|
contributors and maintainers pledge to making participation in our project and
|
||||||
|
our community a harassment-free experience for everyone, regardless of age, body
|
||||||
|
size, disability, ethnicity, sex characteristics, gender identity and expression,
|
||||||
|
level of experience, education, socio-economic status, nationality, personal
|
||||||
|
appearance, race, religion, or sexual identity and orientation.
|
||||||
|
|
||||||
|
## Our Standards
|
||||||
|
|
||||||
|
Examples of behavior that contributes to creating a positive environment
|
||||||
|
include:
|
||||||
|
|
||||||
|
* Using welcoming and inclusive language
|
||||||
|
* Being respectful of differing viewpoints and experiences
|
||||||
|
* Gracefully accepting constructive criticism
|
||||||
|
* Focusing on what is best for the community
|
||||||
|
* Showing empathy towards other community members
|
||||||
|
|
||||||
|
Examples of unacceptable behavior by participants include:
|
||||||
|
|
||||||
|
* The use of sexualized language or imagery and unwelcome sexual attention or
|
||||||
|
advances
|
||||||
|
* Trolling, insulting/derogatory comments, and personal or political attacks
|
||||||
|
* Public or private harassment
|
||||||
|
* Publishing others' private information, such as a physical or electronic
|
||||||
|
address, without explicit permission
|
||||||
|
* Other conduct which could reasonably be considered inappropriate in a
|
||||||
|
professional setting
|
||||||
|
|
||||||
|
## Our Responsibilities
|
||||||
|
|
||||||
|
Project maintainers are responsible for clarifying the standards of acceptable
|
||||||
|
behavior and are expected to take appropriate and fair corrective action in
|
||||||
|
response to any instances of unacceptable behavior.
|
||||||
|
|
||||||
|
Project maintainers have the right and responsibility to remove, edit, or
|
||||||
|
reject comments, commits, code, wiki edits, issues, and other contributions
|
||||||
|
that are not aligned to this Code of Conduct, or to ban temporarily or
|
||||||
|
permanently any contributor for other behaviors that they deem inappropriate,
|
||||||
|
threatening, offensive, or harmful.
|
||||||
|
|
||||||
|
## Scope
|
||||||
|
|
||||||
|
This Code of Conduct applies both within project spaces and in public spaces
|
||||||
|
when an individual is representing the project or its community. Examples of
|
||||||
|
representing a project or community include using an official project e-mail
|
||||||
|
address, posting via an official social media account, or acting as an appointed
|
||||||
|
representative at an online or offline event. Representation of a project may be
|
||||||
|
further defined and clarified by project maintainers.
|
||||||
|
|
||||||
|
## Enforcement
|
||||||
|
|
||||||
|
Instances of abusive, harassing, or otherwise unacceptable behavior may be
|
||||||
|
reported by contacting the project team at developer@epicm.org. All
|
||||||
|
complaints will be reviewed and investigated and will result in a response that
|
||||||
|
is deemed necessary and appropriate to the circumstances. The project team is
|
||||||
|
obligated to maintain confidentiality with regard to the reporter of an incident.
|
||||||
|
Further details of specific enforcement policies may be posted separately.
|
||||||
|
|
||||||
|
Project maintainers who do not follow or enforce the Code of Conduct in good
|
||||||
|
faith may face temporary or permanent repercussions as determined by other
|
||||||
|
members of the project's leadership.
|
||||||
|
|
||||||
|
## Attribution
|
||||||
|
|
||||||
|
This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
|
||||||
|
available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html
|
||||||
|
|
||||||
|
[homepage]: https://www.contributor-covenant.org
|
||||||
|
|
||||||
|
For answers to common questions about this code of conduct, see
|
||||||
|
https://www.contributor-covenant.org/faq
|
17
.github/CONTRIBUTING.md
vendored
Normal file
17
.github/CONTRIBUTING.md
vendored
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
# Contributing
|
||||||
|
|
||||||
|
When contributing to this repository, please first discuss the change you wish to make via issue,
|
||||||
|
email, or any other method with the owners of this repository before making a change.
|
||||||
|
|
||||||
|
Please note we have a code of conduct, please follow it in all your interactions with the project.
|
||||||
|
|
||||||
|
## Pull Request Process
|
||||||
|
|
||||||
|
1. Ensure any install or build dependencies are removed before the end of the layer when doing a
|
||||||
|
build.
|
||||||
|
2. Update the README.md with details of changes to the interface, this includes new environment
|
||||||
|
variables, exposed ports, useful file locations and container parameters.
|
||||||
|
3. Increase the version numbers in any examples files and the README.md to the new version that this
|
||||||
|
Pull Request would represent.
|
||||||
|
4. You may merge the Pull Request in once you have the sign-off of two other developers, or if you
|
||||||
|
do not have permission to do that, you may request the second reviewer to merge it for you.
|
13
.github/FUNDING.yml
vendored
Normal file
13
.github/FUNDING.yml
vendored
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
# These are supported funding model platforms
|
||||||
|
patreon: epicmorg
|
||||||
|
ko_fi: epicmorg
|
||||||
|
custom: https://ko-fi.com/alexz696
|
||||||
|
|
||||||
|
#github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
|
||||||
|
#open_collective: # Replace with a single Open Collective username
|
||||||
|
#tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
|
||||||
|
#community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
|
||||||
|
#liberapay: # Replace with a single Liberapay username
|
||||||
|
#issuehunt: # Replace with a single IssueHunt username
|
||||||
|
#otechie: # Replace with a single Otechie username
|
||||||
|
#custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']
|
27
.github/ISSUE_TEMPLATE/bug_report.md
vendored
Normal file
27
.github/ISSUE_TEMPLATE/bug_report.md
vendored
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
---
|
||||||
|
name: Bug report
|
||||||
|
about: Create a report to help us improve
|
||||||
|
title: ''
|
||||||
|
labels: 'bug, Regular Priority'
|
||||||
|
assignees: 'stamepicmorg'
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Describe the bug**
|
||||||
|
A clear and concise description of what the bug is.
|
||||||
|
|
||||||
|
**To Reproduce**
|
||||||
|
Steps to reproduce the behavior:
|
||||||
|
1. Go to '...'
|
||||||
|
2. Click on '....'
|
||||||
|
3. Scroll down to '....'
|
||||||
|
4. See error
|
||||||
|
|
||||||
|
**Expected behavior**
|
||||||
|
A clear and concise description of what you expected to happen.
|
||||||
|
|
||||||
|
**Screenshots**
|
||||||
|
If applicable, add screenshots to help explain your problem.
|
||||||
|
|
||||||
|
**Additional context**
|
||||||
|
Add any other context about the problem here.
|
18
.github/ISSUE_TEMPLATE/cve_report.md
vendored
Normal file
18
.github/ISSUE_TEMPLATE/cve_report.md
vendored
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
---
|
||||||
|
name: CVE report
|
||||||
|
about: Create a report of some CVE
|
||||||
|
title: '[CVE] '
|
||||||
|
labels: 'CVE, High Priority'
|
||||||
|
assignees: 'stamepicmorg'
|
||||||
|
|
||||||
|
---
|
||||||
|
**CVE number or URL**
|
||||||
|
|
||||||
|
**Describe**
|
||||||
|
A clear and concise description of what the CVE is.
|
||||||
|
|
||||||
|
**Screenshots**
|
||||||
|
If applicable, add screenshots to help explain your problem.
|
||||||
|
|
||||||
|
**Additional context**
|
||||||
|
Add any other context about the problem here.
|
21
.github/ISSUE_TEMPLATE/feature_request.md
vendored
Normal file
21
.github/ISSUE_TEMPLATE/feature_request.md
vendored
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
---
|
||||||
|
name: Feature request
|
||||||
|
about: Suggest an idea for this project
|
||||||
|
title: ''
|
||||||
|
labels: 'Feature request, help wanted'
|
||||||
|
assignees: 'stamepicmorg'
|
||||||
|
milestone: 'Due 2021 🙏'
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Is your feature request related to a problem? Please describe.**
|
||||||
|
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
|
||||||
|
|
||||||
|
**Describe the solution you'd like**
|
||||||
|
A clear and concise description of what you want to happen.
|
||||||
|
|
||||||
|
**Describe alternatives you've considered**
|
||||||
|
A clear and concise description of any alternative solutions or features you've considered.
|
||||||
|
|
||||||
|
**Additional context**
|
||||||
|
Add any other context or screenshots about the feature request here.
|
17
.github/ISSUE_TEMPLATE/task_generic.md
vendored
Normal file
17
.github/ISSUE_TEMPLATE/task_generic.md
vendored
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
---
|
||||||
|
name: Generic task
|
||||||
|
about: Create a generic task
|
||||||
|
title: ''
|
||||||
|
labels: 'task, Regular Priority'
|
||||||
|
assignees: 'stamepicmorg'
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Describe**
|
||||||
|
A clear and concise description of what the bug is.
|
||||||
|
|
||||||
|
**Screenshots**
|
||||||
|
If applicable, add screenshots to help explain your problem.
|
||||||
|
|
||||||
|
**Additional context**
|
||||||
|
Add any other context about the problem here.
|
13
.github/pull_request_template.md
vendored
Normal file
13
.github/pull_request_template.md
vendored
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
## Purpose
|
||||||
|
_Describe the problem or feature in addition to a link to the issues._
|
||||||
|
|
||||||
|
## Approach
|
||||||
|
_How does this change address the problem?_
|
||||||
|
|
||||||
|
#### Open Questions and Pre-Merge TODOs
|
||||||
|
- [ ] Use github checklists. When solved, check the box and explain the answer.
|
||||||
|
|
||||||
|
## Learning
|
||||||
|
_Describe the research stage_
|
||||||
|
|
||||||
|
_Links to blog posts, patterns, libraries or addons used to solve this problem_
|
14
README.md
14
README.md
@ -1,2 +1,12 @@
|
|||||||
# Retime-Phoneme-Uti-GUI
|
# Retime Phoneme Util: GUI
|
||||||
.NET 7 GUI for Retime Phoneme Util
|
[](https://github.com/AntinomyCollective/Retime-Phoneme-Util-GUI/actions/workflows/dotnet.yml) [](https://github.com/AntinomyCollective/Retime-Phoneme-Util-GUI/releases/latest) [](https://github.com/AntinomyCollective/Retime-Phoneme-Util-GUI/tree/feature/add-logic) [](http://isitmaintained.com/project/AntinomyCollective/Retime-Phoneme-Util-GUI "Percentage of issues still open") [](LICENSE.md) <img align="right" src="https://raw.githubusercontent.com/AntinomyCollective/Retime-Phoneme-Util-GUI/feature/add-logic/src/kru.gui/favicon.png" alt="Retime Phoneme Util: GUI" width="64" />
|
||||||
|
|
||||||
|
|
||||||
|
## What is this?
|
||||||
|
This is a useful graphical user interface written by EpicMorg Team in C# (.NET 7) for original console tool named as "Retime Phoneme Util" developed by [wowks](https://forum.csmania.ru/memberlist.php?mode=viewprofile&u=59383) at forum [CSMania](https://forum.csmania.ru/viewtopic.php?t=43274).
|
||||||
|
|
||||||
|
Original console program loads a phoneme from the original sound, changes its time intervals and saves it to the corrected sound. It can also be used to remove redundant data after audio data (such as the metadata left by Sony Sound Forge).
|
||||||
|
|
||||||
|
GUI saves a lot of hours with this process.
|
||||||
|
|
||||||
|
[](https://github.com/AntinomyCollective/Retime-Phoneme-Util-GUI/)
|
||||||
|
38
src/Directory.Build.props
Normal file
38
src/Directory.Build.props
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
<Project>
|
||||||
|
<PropertyGroup>
|
||||||
|
<EnforceCodeStyleInBuild>true</EnforceCodeStyleInBuild>
|
||||||
|
<GenerateDocumentationFile>true</GenerateDocumentationFile>
|
||||||
|
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
|
||||||
|
<IsPackable>true</IsPackable>
|
||||||
|
<LangVersion>latest</LangVersion>
|
||||||
|
<NoWarn>SA1633;SA1623;SA1600;SA1601;CS1591;SA1300</NoWarn>
|
||||||
|
<Nullable>enable</Nullable>
|
||||||
|
<PackageLicenseExpression>AGPL-3.0-or-later</PackageLicenseExpression>
|
||||||
|
<PackageReadmeFile>README.md</PackageReadmeFile>
|
||||||
|
<PackageRequireLicenseAcceptance>false</PackageRequireLicenseAcceptance>
|
||||||
|
<PublishDocumentationFile>true</PublishDocumentationFile>
|
||||||
|
<PublishDocumentationFiles>true</PublishDocumentationFiles>
|
||||||
|
<PublishReferencesDocumentationFiles>true</PublishReferencesDocumentationFiles>
|
||||||
|
<StyleCopTreatErrorsAsWarnings>True</StyleCopTreatErrorsAsWarnings>
|
||||||
|
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
|
||||||
|
</PropertyGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<None Include="..\..\README.md" Pack="true" PackagePath="\"/>
|
||||||
|
<PackageReference Include="StyleCop.Analyzers" Version="1.2.0-beta.435">
|
||||||
|
<PrivateAssets>all</PrivateAssets>
|
||||||
|
<IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
|
||||||
|
</PackageReference>
|
||||||
|
<PackageReference Include="Roslynator.Analyzers" Version="4.2.0">
|
||||||
|
<PrivateAssets>all</PrivateAssets>
|
||||||
|
<IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
|
||||||
|
</PackageReference>
|
||||||
|
<PackageReference Include="Roslynator.CodeAnalysis.Analyzers" Version="4.2.0">
|
||||||
|
<PrivateAssets>all</PrivateAssets>
|
||||||
|
<IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
|
||||||
|
</PackageReference>
|
||||||
|
<PackageReference Include="Roslynator.Formatting.Analyzers" Version="4.2.0">
|
||||||
|
<PrivateAssets>all</PrivateAssets>
|
||||||
|
<IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
|
||||||
|
</PackageReference>
|
||||||
|
</ItemGroup>
|
||||||
|
</Project>
|
3
src/kru.gui/Core/ApplicationInfo.cs
Normal file
3
src/kru.gui/Core/ApplicationInfo.cs
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
namespace kru.gui.Core;
|
||||||
|
|
||||||
|
internal record ApplicationInfo(string Version, string Name, string Copytrigh);
|
16
src/kru.gui/Core/ApplicationInfoProvider.cs
Normal file
16
src/kru.gui/Core/ApplicationInfoProvider.cs
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
namespace kru.gui.Core;
|
||||||
|
using System.Reflection;
|
||||||
|
|
||||||
|
internal static class ApplicationInfoProvider
|
||||||
|
{
|
||||||
|
public static ApplicationInfo GetInfo()
|
||||||
|
{
|
||||||
|
var assembly = Assembly.GetEntryAssembly()!;
|
||||||
|
|
||||||
|
var version = assembly.GetCustomAttribute<AssemblyInformationalVersionAttribute>()!.InformationalVersion;
|
||||||
|
var name = assembly.GetCustomAttribute<AssemblyProductAttribute>()!.Product;
|
||||||
|
var copyright = assembly.GetCustomAttribute<AssemblyCopyrightAttribute>()!.Copyright;
|
||||||
|
|
||||||
|
return new ApplicationInfo(version, name, copyright);
|
||||||
|
}
|
||||||
|
}
|
7
src/kru.gui/Core/BitnessProvider.cs
Normal file
7
src/kru.gui/Core/BitnessProvider.cs
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
namespace kru.gui.Core;
|
||||||
|
using System;
|
||||||
|
|
||||||
|
internal static class BitnessProvider
|
||||||
|
{
|
||||||
|
public static string BitnessName => Environment.Is64BitProcess ? "x64" : "x86";
|
||||||
|
}
|
@ -1,17 +1,16 @@
|
|||||||
namespace ConverterGui;
|
namespace kru.gui.Core;
|
||||||
|
|
||||||
|
using System;
|
||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
using System.Reflection;
|
|
||||||
|
|
||||||
internal record Command(string InputFile, string OutputFile, bool Clean, bool SaveLog)
|
internal record Command(string InputFile, string OutputDirectory, string? CleanDirectory, bool SaveLog)
|
||||||
{
|
{
|
||||||
private string ExecutablePath =>
|
private string ExecutablePath =>
|
||||||
Path.Combine(
|
Path.Combine(
|
||||||
Path.GetDirectoryName(System.AppContext.BaseDirectory!)!,
|
Path.GetDirectoryName(AppContext.BaseDirectory)!,
|
||||||
@"Tools\x64\retime_phoneme.exe"
|
$@"Tools\{BitnessProvider.BitnessName}\retime_phoneme.exe");
|
||||||
);
|
|
||||||
|
|
||||||
public string GetBatchLine() => string.Join(" ", new[] { $"\"{ExecutablePath}\"" }.Concat(GetArguments().Select(arg => $"\"{arg}\"")));
|
public string GetBatchLine() => string.Join(" ", new[] { $"\"{this.ExecutablePath}\"" }.Concat(this.GetArguments().Select(arg => $"\"{arg}\"")));
|
||||||
|
|
||||||
public Process GetProcess()
|
public Process GetProcess()
|
||||||
{
|
{
|
||||||
@ -19,7 +18,7 @@ internal record Command(string InputFile, string OutputFile, bool Clean, bool Sa
|
|||||||
{
|
{
|
||||||
StartInfo = new ProcessStartInfo
|
StartInfo = new ProcessStartInfo
|
||||||
{
|
{
|
||||||
FileName = ExecutablePath
|
FileName = this.ExecutablePath,
|
||||||
},
|
},
|
||||||
EnableRaisingEvents = true,
|
EnableRaisingEvents = true,
|
||||||
};
|
};
|
||||||
@ -27,20 +26,24 @@ internal record Command(string InputFile, string OutputFile, bool Clean, bool Sa
|
|||||||
{
|
{
|
||||||
proc.StartInfo.ArgumentList.Add(item);
|
proc.StartInfo.ArgumentList.Add(item);
|
||||||
}
|
}
|
||||||
|
|
||||||
return proc;
|
return proc;
|
||||||
}
|
}
|
||||||
|
|
||||||
private IEnumerable<string> GetArguments()
|
private IEnumerable<string> GetArguments()
|
||||||
{
|
{
|
||||||
|
var filename = Path.GetFileName(this.InputFile);
|
||||||
yield return "-s";
|
yield return "-s";
|
||||||
yield return InputFile;
|
yield return this.InputFile;
|
||||||
yield return "-d";
|
yield return "-d";
|
||||||
yield return OutputFile;
|
yield return Path.Combine(this.OutputDirectory, filename);
|
||||||
if (Clean)
|
if (this.CleanDirectory is not null)
|
||||||
{
|
{
|
||||||
yield return "-oc";
|
yield return "-oc";
|
||||||
|
yield return Path.Combine(this.CleanDirectory, filename);
|
||||||
}
|
}
|
||||||
if (SaveLog)
|
|
||||||
|
if (this.SaveLog)
|
||||||
{
|
{
|
||||||
yield return "-l";
|
yield return "-l";
|
||||||
}
|
}
|
@ -6,11 +6,11 @@ internal static class Program
|
|||||||
/// The main entry point for the application.
|
/// The main entry point for the application.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[STAThread]
|
[STAThread]
|
||||||
static void Main()
|
private static void Main()
|
||||||
{
|
{
|
||||||
// To customize application configuration such as set high DPI settings or default font,
|
// To customize application configuration such as set high DPI settings or default font,
|
||||||
// see https://aka.ms/applicationconfiguration.
|
// see https://aka.ms/applicationconfiguration.
|
||||||
ApplicationConfiguration.Initialize();
|
ApplicationConfiguration.Initialize();
|
||||||
Application.Run(new frmMain());
|
Application.Run(new FrmMain());
|
||||||
}
|
}
|
||||||
}
|
}
|
73
src/kru.gui/Properties/Resources.Designer.cs
generated
Normal file
73
src/kru.gui/Properties/Resources.Designer.cs
generated
Normal file
@ -0,0 +1,73 @@
|
|||||||
|
//------------------------------------------------------------------------------
|
||||||
|
// <auto-generated>
|
||||||
|
// This code was generated by a tool.
|
||||||
|
// Runtime Version:4.0.30319.42000
|
||||||
|
//
|
||||||
|
// Changes to this file may cause incorrect behavior and will be lost if
|
||||||
|
// the code is regenerated.
|
||||||
|
// </auto-generated>
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
namespace kru.gui.Properties {
|
||||||
|
using System;
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// A strongly-typed resource class, for looking up localized strings, etc.
|
||||||
|
/// </summary>
|
||||||
|
// This class was auto-generated by the StronglyTypedResourceBuilder
|
||||||
|
// class via a tool like ResGen or Visual Studio.
|
||||||
|
// To add or remove a member, edit your .ResX file then rerun ResGen
|
||||||
|
// with the /str option, or rebuild your VS project.
|
||||||
|
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
|
||||||
|
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||||
|
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||||
|
internal class Resources {
|
||||||
|
|
||||||
|
private static global::System.Resources.ResourceManager resourceMan;
|
||||||
|
|
||||||
|
private static global::System.Globalization.CultureInfo resourceCulture;
|
||||||
|
|
||||||
|
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
|
||||||
|
internal Resources() {
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Returns the cached ResourceManager instance used by this class.
|
||||||
|
/// </summary>
|
||||||
|
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||||
|
internal static global::System.Resources.ResourceManager ResourceManager {
|
||||||
|
get {
|
||||||
|
if (object.ReferenceEquals(resourceMan, null)) {
|
||||||
|
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("kru.gui.Properties.Resources", typeof(Resources).Assembly);
|
||||||
|
resourceMan = temp;
|
||||||
|
}
|
||||||
|
return resourceMan;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Overrides the current thread's CurrentUICulture property for all
|
||||||
|
/// resource lookups using this strongly typed resource class.
|
||||||
|
/// </summary>
|
||||||
|
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||||
|
internal static global::System.Globalization.CultureInfo Culture {
|
||||||
|
get {
|
||||||
|
return resourceCulture;
|
||||||
|
}
|
||||||
|
set {
|
||||||
|
resourceCulture = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||||
|
/// </summary>
|
||||||
|
internal static System.Drawing.Bitmap favicon_64 {
|
||||||
|
get {
|
||||||
|
object obj = ResourceManager.GetObject("favicon.64", resourceCulture);
|
||||||
|
return ((System.Drawing.Bitmap)(obj));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
124
src/kru.gui/Properties/Resources.resx
Normal file
124
src/kru.gui/Properties/Resources.resx
Normal file
@ -0,0 +1,124 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<root>
|
||||||
|
<!--
|
||||||
|
Microsoft ResX Schema
|
||||||
|
|
||||||
|
Version 2.0
|
||||||
|
|
||||||
|
The primary goals of this format is to allow a simple XML format
|
||||||
|
that is mostly human readable. The generation and parsing of the
|
||||||
|
various data types are done through the TypeConverter classes
|
||||||
|
associated with the data types.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
... ado.net/XML headers & schema ...
|
||||||
|
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||||
|
<resheader name="version">2.0</resheader>
|
||||||
|
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||||
|
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||||
|
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||||
|
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||||
|
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||||
|
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||||
|
</data>
|
||||||
|
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||||
|
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||||
|
<comment>This is a comment</comment>
|
||||||
|
</data>
|
||||||
|
|
||||||
|
There are any number of "resheader" rows that contain simple
|
||||||
|
name/value pairs.
|
||||||
|
|
||||||
|
Each data row contains a name, and value. The row also contains a
|
||||||
|
type or mimetype. Type corresponds to a .NET class that support
|
||||||
|
text/value conversion through the TypeConverter architecture.
|
||||||
|
Classes that don't support this are serialized and stored with the
|
||||||
|
mimetype set.
|
||||||
|
|
||||||
|
The mimetype is used for serialized objects, and tells the
|
||||||
|
ResXResourceReader how to depersist the object. This is currently not
|
||||||
|
extensible. For a given mimetype the value must be set accordingly:
|
||||||
|
|
||||||
|
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||||
|
that the ResXResourceWriter will generate, however the reader can
|
||||||
|
read any of the formats listed below.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.binary.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.soap.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||||
|
value : The object must be serialized into a byte array
|
||||||
|
: using a System.ComponentModel.TypeConverter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
-->
|
||||||
|
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||||
|
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||||
|
<xsd:element name="root" msdata:IsDataSet="true">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:choice maxOccurs="unbounded">
|
||||||
|
<xsd:element name="metadata">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="assembly">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:attribute name="alias" type="xsd:string" />
|
||||||
|
<xsd:attribute name="name" type="xsd:string" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="data">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="resheader">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:choice>
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:schema>
|
||||||
|
<resheader name="resmimetype">
|
||||||
|
<value>text/microsoft-resx</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="version">
|
||||||
|
<value>2.0</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="reader">
|
||||||
|
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="writer">
|
||||||
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||||
|
<data name="favicon.64" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
|
<value>..\favicon.64.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
|
</data>
|
||||||
|
</root>
|
BIN
src/kru.gui/favicon.64.png
Normal file
BIN
src/kru.gui/favicon.64.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.9 KiB |
202
src/kru.gui/frmAbout.Designer.cs
generated
Normal file
202
src/kru.gui/frmAbout.Designer.cs
generated
Normal file
@ -0,0 +1,202 @@
|
|||||||
|
namespace kru.gui
|
||||||
|
{
|
||||||
|
partial class FrmAbout
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Required designer variable.
|
||||||
|
/// </summary>
|
||||||
|
private System.ComponentModel.IContainer components = null;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Clean up any resources being used.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||||
|
protected override void Dispose(bool disposing)
|
||||||
|
{
|
||||||
|
if (disposing && (components != null))
|
||||||
|
{
|
||||||
|
components.Dispose();
|
||||||
|
}
|
||||||
|
base.Dispose(disposing);
|
||||||
|
}
|
||||||
|
|
||||||
|
#region Windows Form Designer generated code
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Required method for Designer support - do not modify
|
||||||
|
/// the contents of this method with the code editor.
|
||||||
|
/// </summary>
|
||||||
|
private void InitializeComponent()
|
||||||
|
{
|
||||||
|
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FrmAbout));
|
||||||
|
this.pictureBox1 = new System.Windows.Forms.PictureBox();
|
||||||
|
this.label1 = new System.Windows.Forms.Label();
|
||||||
|
this.label2 = new System.Windows.Forms.Label();
|
||||||
|
this.labelCopy = new System.Windows.Forms.Label();
|
||||||
|
this.linkLabelSource = new System.Windows.Forms.LinkLabel();
|
||||||
|
this.linkLabelwowks = new System.Windows.Forms.LinkLabel();
|
||||||
|
this.buttonOK = new System.Windows.Forms.Button();
|
||||||
|
this.labelappName = new System.Windows.Forms.Label();
|
||||||
|
this.labelappVer = new System.Windows.Forms.Label();
|
||||||
|
this.linkLabelGitHub = new System.Windows.Forms.LinkLabel();
|
||||||
|
this.linkLabelFreepik = new System.Windows.Forms.LinkLabel();
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
|
||||||
|
this.SuspendLayout();
|
||||||
|
//
|
||||||
|
// pictureBox1
|
||||||
|
//
|
||||||
|
this.pictureBox1.Image = global::kru.gui.Properties.Resources.favicon_64;
|
||||||
|
this.pictureBox1.Location = new System.Drawing.Point(12, 12);
|
||||||
|
this.pictureBox1.Name = "pictureBox1";
|
||||||
|
this.pictureBox1.Size = new System.Drawing.Size(64, 64);
|
||||||
|
this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize;
|
||||||
|
this.pictureBox1.TabIndex = 0;
|
||||||
|
this.pictureBox1.TabStop = false;
|
||||||
|
//
|
||||||
|
// label1
|
||||||
|
//
|
||||||
|
this.label1.AutoSize = true;
|
||||||
|
this.label1.Location = new System.Drawing.Point(12, 109);
|
||||||
|
this.label1.Name = "label1";
|
||||||
|
this.label1.Size = new System.Drawing.Size(90, 15);
|
||||||
|
this.label1.TabIndex = 1;
|
||||||
|
this.label1.Text = "Original author:";
|
||||||
|
//
|
||||||
|
// label2
|
||||||
|
//
|
||||||
|
this.label2.AutoSize = true;
|
||||||
|
this.label2.Location = new System.Drawing.Point(12, 124);
|
||||||
|
this.label2.Name = "label2";
|
||||||
|
this.label2.Size = new System.Drawing.Size(90, 15);
|
||||||
|
this.label2.TabIndex = 2;
|
||||||
|
this.label2.Text = "Original source:";
|
||||||
|
//
|
||||||
|
// labelCopy
|
||||||
|
//
|
||||||
|
this.labelCopy.AutoSize = true;
|
||||||
|
this.labelCopy.Location = new System.Drawing.Point(82, 44);
|
||||||
|
this.labelCopy.Name = "labelCopy";
|
||||||
|
this.labelCopy.Size = new System.Drawing.Size(58, 15);
|
||||||
|
this.labelCopy.TabIndex = 3;
|
||||||
|
this.labelCopy.Text = "copyright";
|
||||||
|
//
|
||||||
|
// linkLabelSource
|
||||||
|
//
|
||||||
|
this.linkLabelSource.AutoSize = true;
|
||||||
|
this.linkLabelSource.Location = new System.Drawing.Point(108, 124);
|
||||||
|
this.linkLabelSource.Name = "linkLabelSource";
|
||||||
|
this.linkLabelSource.Size = new System.Drawing.Size(268, 15);
|
||||||
|
this.linkLabelSource.TabIndex = 4;
|
||||||
|
this.linkLabelSource.TabStop = true;
|
||||||
|
this.linkLabelSource.Text = "https://forum.csmania.ru/viewtopic.php?t=43274";
|
||||||
|
this.linkLabelSource.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkLabelSource_LinkClicked);
|
||||||
|
//
|
||||||
|
// linkLabelwowks
|
||||||
|
//
|
||||||
|
this.linkLabelwowks.AutoSize = true;
|
||||||
|
this.linkLabelwowks.Location = new System.Drawing.Point(108, 109);
|
||||||
|
this.linkLabelwowks.Name = "linkLabelwowks";
|
||||||
|
this.linkLabelwowks.Size = new System.Drawing.Size(43, 15);
|
||||||
|
this.linkLabelwowks.TabIndex = 4;
|
||||||
|
this.linkLabelwowks.TabStop = true;
|
||||||
|
this.linkLabelwowks.Text = "wowks";
|
||||||
|
this.linkLabelwowks.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkLabelwowks_LinkClicked);
|
||||||
|
//
|
||||||
|
// buttonOK
|
||||||
|
//
|
||||||
|
this.buttonOK.Location = new System.Drawing.Point(316, 12);
|
||||||
|
this.buttonOK.Name = "buttonOK";
|
||||||
|
this.buttonOK.Size = new System.Drawing.Size(75, 23);
|
||||||
|
this.buttonOK.TabIndex = 5;
|
||||||
|
this.buttonOK.Text = "OK";
|
||||||
|
this.buttonOK.UseVisualStyleBackColor = true;
|
||||||
|
this.buttonOK.Click += new System.EventHandler(this.buttonOK_Click);
|
||||||
|
//
|
||||||
|
// labelappName
|
||||||
|
//
|
||||||
|
this.labelappName.AutoSize = true;
|
||||||
|
this.labelappName.Font = new System.Drawing.Font("Segoe UI Semibold", 11.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point);
|
||||||
|
this.labelappName.Location = new System.Drawing.Point(82, 9);
|
||||||
|
this.labelappName.Name = "labelappName";
|
||||||
|
this.labelappName.Size = new System.Drawing.Size(76, 20);
|
||||||
|
this.labelappName.TabIndex = 6;
|
||||||
|
this.labelappName.Text = "appName";
|
||||||
|
//
|
||||||
|
// labelappVer
|
||||||
|
//
|
||||||
|
this.labelappVer.AutoSize = true;
|
||||||
|
this.labelappVer.Font = new System.Drawing.Font("Segoe UI Semibold", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point);
|
||||||
|
this.labelappVer.Location = new System.Drawing.Point(82, 29);
|
||||||
|
this.labelappVer.Name = "labelappVer";
|
||||||
|
this.labelappVer.Size = new System.Drawing.Size(44, 15);
|
||||||
|
this.labelappVer.TabIndex = 6;
|
||||||
|
this.labelappVer.Text = "appVer";
|
||||||
|
//
|
||||||
|
// linkLabelGitHub
|
||||||
|
//
|
||||||
|
this.linkLabelGitHub.AutoSize = true;
|
||||||
|
this.linkLabelGitHub.Location = new System.Drawing.Point(316, 38);
|
||||||
|
this.linkLabelGitHub.Name = "linkLabelGitHub";
|
||||||
|
this.linkLabelGitHub.Size = new System.Drawing.Size(45, 15);
|
||||||
|
this.linkLabelGitHub.TabIndex = 7;
|
||||||
|
this.linkLabelGitHub.TabStop = true;
|
||||||
|
this.linkLabelGitHub.Text = "GitHub";
|
||||||
|
this.linkLabelGitHub.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkLabelGitHub_LinkClicked);
|
||||||
|
//
|
||||||
|
// linkLabelFreepik
|
||||||
|
//
|
||||||
|
this.linkLabelFreepik.AutoSize = true;
|
||||||
|
this.linkLabelFreepik.Location = new System.Drawing.Point(12, 79);
|
||||||
|
this.linkLabelFreepik.Name = "linkLabelFreepik";
|
||||||
|
this.linkLabelFreepik.Size = new System.Drawing.Size(45, 15);
|
||||||
|
this.linkLabelFreepik.TabIndex = 7;
|
||||||
|
this.linkLabelFreepik.TabStop = true;
|
||||||
|
this.linkLabelFreepik.Text = "Freepik";
|
||||||
|
this.linkLabelFreepik.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkLabelFreepik_LinkClicked);
|
||||||
|
//
|
||||||
|
// frmAbout
|
||||||
|
//
|
||||||
|
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F);
|
||||||
|
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||||
|
this.ClientSize = new System.Drawing.Size(403, 148);
|
||||||
|
this.Controls.Add(this.linkLabelFreepik);
|
||||||
|
this.Controls.Add(this.linkLabelGitHub);
|
||||||
|
this.Controls.Add(this.labelappVer);
|
||||||
|
this.Controls.Add(this.labelappName);
|
||||||
|
this.Controls.Add(this.buttonOK);
|
||||||
|
this.Controls.Add(this.linkLabelwowks);
|
||||||
|
this.Controls.Add(this.linkLabelSource);
|
||||||
|
this.Controls.Add(this.labelCopy);
|
||||||
|
this.Controls.Add(this.label2);
|
||||||
|
this.Controls.Add(this.label1);
|
||||||
|
this.Controls.Add(this.pictureBox1);
|
||||||
|
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
|
||||||
|
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
|
||||||
|
this.MaximizeBox = false;
|
||||||
|
this.MinimizeBox = false;
|
||||||
|
this.Name = "frmAbout";
|
||||||
|
this.ShowInTaskbar = false;
|
||||||
|
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
|
||||||
|
this.Text = "appName";
|
||||||
|
this.Load += new System.EventHandler(this.frmAbout_Load);
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();
|
||||||
|
this.ResumeLayout(false);
|
||||||
|
this.PerformLayout();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
private PictureBox pictureBox1;
|
||||||
|
private Label label1;
|
||||||
|
private Label label2;
|
||||||
|
private Label labelCopy;
|
||||||
|
private LinkLabel linkLabelSource;
|
||||||
|
private LinkLabel linkLabelwowks;
|
||||||
|
private Button buttonOK;
|
||||||
|
private Label labelappName;
|
||||||
|
private Label labelappVer;
|
||||||
|
private LinkLabel linkLabelGitHub;
|
||||||
|
private LinkLabel linkLabelFreepik;
|
||||||
|
}
|
||||||
|
}
|
56
src/kru.gui/frmAbout.cs
Normal file
56
src/kru.gui/frmAbout.cs
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
namespace kru.gui;
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.Diagnostics;
|
||||||
|
using System.Windows.Forms;
|
||||||
|
|
||||||
|
using kru.gui.Core;
|
||||||
|
|
||||||
|
public partial class FrmAbout : Form
|
||||||
|
{
|
||||||
|
public FrmAbout()
|
||||||
|
{
|
||||||
|
this.InitializeComponent();
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void OpenUrl(string url)
|
||||||
|
{
|
||||||
|
var uri = new Uri(url);
|
||||||
|
if (uri.Scheme is not "http" and not "https")
|
||||||
|
{
|
||||||
|
throw new ArgumentException("Invalid URL", nameof(url));
|
||||||
|
}
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
using var myProcess = new Process();
|
||||||
|
myProcess.StartInfo.UseShellExecute = true;
|
||||||
|
myProcess.StartInfo.FileName = uri.ToString();
|
||||||
|
myProcess.Start();
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
Console.WriteLine(ex.Message);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void frmAbout_Load(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
var (version, name, copyright) = ApplicationInfoProvider.GetInfo();
|
||||||
|
|
||||||
|
this.Text = $"{name} {version} ({BitnessProvider.BitnessName})";
|
||||||
|
this.labelappName.Text = $"{name} ({BitnessProvider.BitnessName})";
|
||||||
|
this.labelappVer.Text = version;
|
||||||
|
this.labelCopy.Text = $"Copyright © {copyright}";
|
||||||
|
}
|
||||||
|
|
||||||
|
private void linkLabelSource_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) => OpenUrl("https://forum.csmania.ru/viewtopic.php?t=43274");
|
||||||
|
|
||||||
|
private void linkLabelwowks_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) => OpenUrl("https://forum.csmania.ru/memberlist.php?mode=viewprofile&u=59383");
|
||||||
|
|
||||||
|
private void buttonOK_Click(object sender, EventArgs e) => this.Close();
|
||||||
|
|
||||||
|
private void linkLabelGitHub_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) => OpenUrl("https://github.com/AntinomyCollective/Retime-Phoneme-Util-GUI");
|
||||||
|
|
||||||
|
private void linkLabelFreepik_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) => OpenUrl("https://www.freepik.com/");
|
||||||
|
}
|
1833
src/kru.gui/frmAbout.resx
Normal file
1833
src/kru.gui/frmAbout.resx
Normal file
File diff suppressed because it is too large
Load Diff
184
src/kru.gui/frmMain.Designer.cs
generated
184
src/kru.gui/frmMain.Designer.cs
generated
@ -1,6 +1,6 @@
|
|||||||
namespace ConverterGui;
|
namespace ConverterGui;
|
||||||
|
|
||||||
partial class frmMain
|
partial class FrmMain
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Required designer variable.
|
/// Required designer variable.
|
||||||
@ -28,7 +28,7 @@ partial class frmMain
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
private void InitializeComponent()
|
private void InitializeComponent()
|
||||||
{
|
{
|
||||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(frmMain));
|
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FrmMain));
|
||||||
this.txtInput = new System.Windows.Forms.TextBox();
|
this.txtInput = new System.Windows.Forms.TextBox();
|
||||||
this.txtOutput = new System.Windows.Forms.TextBox();
|
this.txtOutput = new System.Windows.Forms.TextBox();
|
||||||
this.btnBrowseInput = new System.Windows.Forms.Button();
|
this.btnBrowseInput = new System.Windows.Forms.Button();
|
||||||
@ -38,15 +38,17 @@ partial class frmMain
|
|||||||
this.fbBrowseInput = new System.Windows.Forms.FolderBrowserDialog();
|
this.fbBrowseInput = new System.Windows.Forms.FolderBrowserDialog();
|
||||||
this.fbBrowseOutput = new System.Windows.Forms.FolderBrowserDialog();
|
this.fbBrowseOutput = new System.Windows.Forms.FolderBrowserDialog();
|
||||||
this.sfdOutput = new System.Windows.Forms.SaveFileDialog();
|
this.sfdOutput = new System.Windows.Forms.SaveFileDialog();
|
||||||
this.grpClean = new System.Windows.Forms.GroupBox();
|
|
||||||
this.rdClean = new System.Windows.Forms.RadioButton();
|
|
||||||
this.rdFixed = new System.Windows.Forms.RadioButton();
|
|
||||||
this.chkSaveLogs = new System.Windows.Forms.CheckBox();
|
this.chkSaveLogs = new System.Windows.Forms.CheckBox();
|
||||||
this.groupBoxInput = new System.Windows.Forms.GroupBox();
|
this.groupBoxInput = new System.Windows.Forms.GroupBox();
|
||||||
this.groupBoxOutput = new System.Windows.Forms.GroupBox();
|
this.groupBoxOutput = new System.Windows.Forms.GroupBox();
|
||||||
this.grpClean.SuspendLayout();
|
this.chkClean = new System.Windows.Forms.CheckBox();
|
||||||
|
this.groupBox1 = new System.Windows.Forms.GroupBox();
|
||||||
|
this.txtOutputClean = new System.Windows.Forms.TextBox();
|
||||||
|
this.btnBrowseOutputClean = new System.Windows.Forms.Button();
|
||||||
|
this.buttonAbout = new System.Windows.Forms.Button();
|
||||||
this.groupBoxInput.SuspendLayout();
|
this.groupBoxInput.SuspendLayout();
|
||||||
this.groupBoxOutput.SuspendLayout();
|
this.groupBoxOutput.SuspendLayout();
|
||||||
|
this.groupBox1.SuspendLayout();
|
||||||
this.SuspendLayout();
|
this.SuspendLayout();
|
||||||
//
|
//
|
||||||
// txtInput
|
// txtInput
|
||||||
@ -54,9 +56,9 @@ partial class frmMain
|
|||||||
this.txtInput.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
this.txtInput.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||||
| System.Windows.Forms.AnchorStyles.Right)));
|
| System.Windows.Forms.AnchorStyles.Right)));
|
||||||
this.txtInput.Location = new System.Drawing.Point(5, 21);
|
this.txtInput.Location = new System.Drawing.Point(5, 21);
|
||||||
this.txtInput.Margin = new System.Windows.Forms.Padding(2);
|
this.txtInput.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||||
this.txtInput.Name = "txtInput";
|
this.txtInput.Name = "txtInput";
|
||||||
this.txtInput.Size = new System.Drawing.Size(235, 23);
|
this.txtInput.Size = new System.Drawing.Size(292, 23);
|
||||||
this.txtInput.TabIndex = 1;
|
this.txtInput.TabIndex = 1;
|
||||||
this.txtInput.TextChanged += new System.EventHandler(this.TxtInputTextChanged);
|
this.txtInput.TextChanged += new System.EventHandler(this.TxtInputTextChanged);
|
||||||
//
|
//
|
||||||
@ -65,17 +67,17 @@ partial class frmMain
|
|||||||
this.txtOutput.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
this.txtOutput.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||||
| System.Windows.Forms.AnchorStyles.Right)));
|
| System.Windows.Forms.AnchorStyles.Right)));
|
||||||
this.txtOutput.Location = new System.Drawing.Point(5, 21);
|
this.txtOutput.Location = new System.Drawing.Point(5, 21);
|
||||||
this.txtOutput.Margin = new System.Windows.Forms.Padding(2);
|
this.txtOutput.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||||
this.txtOutput.Name = "txtOutput";
|
this.txtOutput.Name = "txtOutput";
|
||||||
this.txtOutput.Size = new System.Drawing.Size(234, 23);
|
this.txtOutput.Size = new System.Drawing.Size(292, 23);
|
||||||
this.txtOutput.TabIndex = 3;
|
this.txtOutput.TabIndex = 3;
|
||||||
this.txtOutput.TextChanged += new System.EventHandler(this.TxtOutputTextChanged);
|
this.txtOutput.TextChanged += new System.EventHandler(this.TxtOutputTextChanged);
|
||||||
//
|
//
|
||||||
// btnBrowseInput
|
// btnBrowseInput
|
||||||
//
|
//
|
||||||
this.btnBrowseInput.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
this.btnBrowseInput.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||||
this.btnBrowseInput.Location = new System.Drawing.Point(244, 21);
|
this.btnBrowseInput.Location = new System.Drawing.Point(301, 21);
|
||||||
this.btnBrowseInput.Margin = new System.Windows.Forms.Padding(2);
|
this.btnBrowseInput.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||||
this.btnBrowseInput.Name = "btnBrowseInput";
|
this.btnBrowseInput.Name = "btnBrowseInput";
|
||||||
this.btnBrowseInput.Size = new System.Drawing.Size(75, 23);
|
this.btnBrowseInput.Size = new System.Drawing.Size(75, 23);
|
||||||
this.btnBrowseInput.TabIndex = 4;
|
this.btnBrowseInput.TabIndex = 4;
|
||||||
@ -86,8 +88,8 @@ partial class frmMain
|
|||||||
// btnBrowseOutput
|
// btnBrowseOutput
|
||||||
//
|
//
|
||||||
this.btnBrowseOutput.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
this.btnBrowseOutput.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||||
this.btnBrowseOutput.Location = new System.Drawing.Point(243, 21);
|
this.btnBrowseOutput.Location = new System.Drawing.Point(301, 21);
|
||||||
this.btnBrowseOutput.Margin = new System.Windows.Forms.Padding(2);
|
this.btnBrowseOutput.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||||
this.btnBrowseOutput.Name = "btnBrowseOutput";
|
this.btnBrowseOutput.Name = "btnBrowseOutput";
|
||||||
this.btnBrowseOutput.Size = new System.Drawing.Size(75, 23);
|
this.btnBrowseOutput.Size = new System.Drawing.Size(75, 23);
|
||||||
this.btnBrowseOutput.TabIndex = 5;
|
this.btnBrowseOutput.TabIndex = 5;
|
||||||
@ -97,10 +99,10 @@ partial class frmMain
|
|||||||
//
|
//
|
||||||
// btnSave
|
// btnSave
|
||||||
//
|
//
|
||||||
this.btnSave.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
|
this.btnSave.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
|
||||||
this.btnSave.Enabled = false;
|
this.btnSave.Enabled = false;
|
||||||
this.btnSave.Location = new System.Drawing.Point(11, 210);
|
this.btnSave.Location = new System.Drawing.Point(239, 233);
|
||||||
this.btnSave.Margin = new System.Windows.Forms.Padding(2);
|
this.btnSave.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||||
this.btnSave.Name = "btnSave";
|
this.btnSave.Name = "btnSave";
|
||||||
this.btnSave.Size = new System.Drawing.Size(75, 23);
|
this.btnSave.Size = new System.Drawing.Size(75, 23);
|
||||||
this.btnSave.TabIndex = 6;
|
this.btnSave.TabIndex = 6;
|
||||||
@ -112,8 +114,8 @@ partial class frmMain
|
|||||||
//
|
//
|
||||||
this.btnStart.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
|
this.btnStart.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
|
||||||
this.btnStart.Enabled = false;
|
this.btnStart.Enabled = false;
|
||||||
this.btnStart.Location = new System.Drawing.Point(261, 210);
|
this.btnStart.Location = new System.Drawing.Point(318, 233);
|
||||||
this.btnStart.Margin = new System.Windows.Forms.Padding(2);
|
this.btnStart.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||||
this.btnStart.Name = "btnStart";
|
this.btnStart.Name = "btnStart";
|
||||||
this.btnStart.Size = new System.Drawing.Size(75, 23);
|
this.btnStart.Size = new System.Drawing.Size(75, 23);
|
||||||
this.btnStart.TabIndex = 7;
|
this.btnStart.TabIndex = 7;
|
||||||
@ -124,55 +126,15 @@ partial class frmMain
|
|||||||
// sfdOutput
|
// sfdOutput
|
||||||
//
|
//
|
||||||
this.sfdOutput.Filter = "\"Batch File|*.bat|All files|*.*\"";
|
this.sfdOutput.Filter = "\"Batch File|*.bat|All files|*.*\"";
|
||||||
this.sfdOutput.FileOk += new System.ComponentModel.CancelEventHandler(this.sfdOutput_FileOk);
|
|
||||||
//
|
|
||||||
// grpClean
|
|
||||||
//
|
|
||||||
this.grpClean.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
|
||||||
| System.Windows.Forms.AnchorStyles.Left)));
|
|
||||||
this.grpClean.Controls.Add(this.rdClean);
|
|
||||||
this.grpClean.Controls.Add(this.rdFixed);
|
|
||||||
this.grpClean.Location = new System.Drawing.Point(5, 48);
|
|
||||||
this.grpClean.Margin = new System.Windows.Forms.Padding(2);
|
|
||||||
this.grpClean.Name = "grpClean";
|
|
||||||
this.grpClean.Padding = new System.Windows.Forms.Padding(2);
|
|
||||||
this.grpClean.Size = new System.Drawing.Size(224, 69);
|
|
||||||
this.grpClean.TabIndex = 8;
|
|
||||||
this.grpClean.TabStop = false;
|
|
||||||
this.grpClean.Text = "Mode:";
|
|
||||||
//
|
|
||||||
// rdClean
|
|
||||||
//
|
|
||||||
this.rdClean.AutoSize = true;
|
|
||||||
this.rdClean.Location = new System.Drawing.Point(4, 43);
|
|
||||||
this.rdClean.Margin = new System.Windows.Forms.Padding(2);
|
|
||||||
this.rdClean.Name = "rdClean";
|
|
||||||
this.rdClean.Size = new System.Drawing.Size(55, 19);
|
|
||||||
this.rdClean.TabIndex = 1;
|
|
||||||
this.rdClean.Text = "Clean";
|
|
||||||
this.rdClean.UseVisualStyleBackColor = true;
|
|
||||||
//
|
|
||||||
// rdFixed
|
|
||||||
//
|
|
||||||
this.rdFixed.AutoSize = true;
|
|
||||||
this.rdFixed.Checked = true;
|
|
||||||
this.rdFixed.Location = new System.Drawing.Point(4, 20);
|
|
||||||
this.rdFixed.Margin = new System.Windows.Forms.Padding(2);
|
|
||||||
this.rdFixed.Name = "rdFixed";
|
|
||||||
this.rdFixed.Size = new System.Drawing.Size(98, 19);
|
|
||||||
this.rdFixed.TabIndex = 0;
|
|
||||||
this.rdFixed.TabStop = true;
|
|
||||||
this.rdFixed.Text = "Fixed(default)";
|
|
||||||
this.rdFixed.UseVisualStyleBackColor = true;
|
|
||||||
//
|
//
|
||||||
// chkSaveLogs
|
// chkSaveLogs
|
||||||
//
|
//
|
||||||
this.chkSaveLogs.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
|
this.chkSaveLogs.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
|
||||||
this.chkSaveLogs.AutoSize = true;
|
this.chkSaveLogs.AutoSize = true;
|
||||||
this.chkSaveLogs.Checked = true;
|
this.chkSaveLogs.Checked = true;
|
||||||
this.chkSaveLogs.CheckState = System.Windows.Forms.CheckState.Checked;
|
this.chkSaveLogs.CheckState = System.Windows.Forms.CheckState.Checked;
|
||||||
this.chkSaveLogs.Location = new System.Drawing.Point(243, 98);
|
this.chkSaveLogs.Location = new System.Drawing.Point(92, 236);
|
||||||
this.chkSaveLogs.Margin = new System.Windows.Forms.Padding(2);
|
this.chkSaveLogs.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||||
this.chkSaveLogs.Name = "chkSaveLogs";
|
this.chkSaveLogs.Name = "chkSaveLogs";
|
||||||
this.chkSaveLogs.Size = new System.Drawing.Size(75, 19);
|
this.chkSaveLogs.Size = new System.Drawing.Size(75, 19);
|
||||||
this.chkSaveLogs.TabIndex = 9;
|
this.chkSaveLogs.TabIndex = 9;
|
||||||
@ -187,7 +149,7 @@ partial class frmMain
|
|||||||
this.groupBoxInput.Controls.Add(this.btnBrowseInput);
|
this.groupBoxInput.Controls.Add(this.btnBrowseInput);
|
||||||
this.groupBoxInput.Location = new System.Drawing.Point(12, 12);
|
this.groupBoxInput.Location = new System.Drawing.Point(12, 12);
|
||||||
this.groupBoxInput.Name = "groupBoxInput";
|
this.groupBoxInput.Name = "groupBoxInput";
|
||||||
this.groupBoxInput.Size = new System.Drawing.Size(324, 63);
|
this.groupBoxInput.Size = new System.Drawing.Size(381, 63);
|
||||||
this.groupBoxInput.TabIndex = 10;
|
this.groupBoxInput.TabIndex = 10;
|
||||||
this.groupBoxInput.TabStop = false;
|
this.groupBoxInput.TabStop = false;
|
||||||
this.groupBoxInput.Text = "Input folder:";
|
this.groupBoxInput.Text = "Input folder:";
|
||||||
@ -198,38 +160,104 @@ partial class frmMain
|
|||||||
| System.Windows.Forms.AnchorStyles.Right)));
|
| System.Windows.Forms.AnchorStyles.Right)));
|
||||||
this.groupBoxOutput.Controls.Add(this.txtOutput);
|
this.groupBoxOutput.Controls.Add(this.txtOutput);
|
||||||
this.groupBoxOutput.Controls.Add(this.btnBrowseOutput);
|
this.groupBoxOutput.Controls.Add(this.btnBrowseOutput);
|
||||||
this.groupBoxOutput.Controls.Add(this.chkSaveLogs);
|
|
||||||
this.groupBoxOutput.Controls.Add(this.grpClean);
|
|
||||||
this.groupBoxOutput.Location = new System.Drawing.Point(12, 81);
|
this.groupBoxOutput.Location = new System.Drawing.Point(12, 81);
|
||||||
this.groupBoxOutput.Name = "groupBoxOutput";
|
this.groupBoxOutput.Name = "groupBoxOutput";
|
||||||
this.groupBoxOutput.Size = new System.Drawing.Size(323, 122);
|
this.groupBoxOutput.Size = new System.Drawing.Size(381, 63);
|
||||||
this.groupBoxOutput.TabIndex = 11;
|
this.groupBoxOutput.TabIndex = 11;
|
||||||
this.groupBoxOutput.TabStop = false;
|
this.groupBoxOutput.TabStop = false;
|
||||||
this.groupBoxOutput.Text = "Output folder:";
|
this.groupBoxOutput.Text = "Output folder:";
|
||||||
//
|
//
|
||||||
// frmMain
|
// chkClean
|
||||||
|
//
|
||||||
|
this.chkClean.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
|
||||||
|
this.chkClean.AutoSize = true;
|
||||||
|
this.chkClean.Location = new System.Drawing.Point(5, 50);
|
||||||
|
this.chkClean.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||||
|
this.chkClean.Name = "chkClean";
|
||||||
|
this.chkClean.Size = new System.Drawing.Size(112, 19);
|
||||||
|
this.chkClean.TabIndex = 9;
|
||||||
|
this.chkClean.Text = "Save Clean copy";
|
||||||
|
this.chkClean.UseVisualStyleBackColor = true;
|
||||||
|
this.chkClean.CheckedChanged += new System.EventHandler(this.chkClean_CheckedChanged);
|
||||||
|
//
|
||||||
|
// groupBox1
|
||||||
|
//
|
||||||
|
this.groupBox1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||||
|
| System.Windows.Forms.AnchorStyles.Right)));
|
||||||
|
this.groupBox1.Controls.Add(this.txtOutputClean);
|
||||||
|
this.groupBox1.Controls.Add(this.btnBrowseOutputClean);
|
||||||
|
this.groupBox1.Controls.Add(this.chkClean);
|
||||||
|
this.groupBox1.Location = new System.Drawing.Point(12, 150);
|
||||||
|
this.groupBox1.Name = "groupBox1";
|
||||||
|
this.groupBox1.Size = new System.Drawing.Size(381, 74);
|
||||||
|
this.groupBox1.TabIndex = 11;
|
||||||
|
this.groupBox1.TabStop = false;
|
||||||
|
this.groupBox1.Text = "Output folder for clean files (Optional):";
|
||||||
|
//
|
||||||
|
// txtOutputClean
|
||||||
|
//
|
||||||
|
this.txtOutputClean.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||||
|
| System.Windows.Forms.AnchorStyles.Right)));
|
||||||
|
this.txtOutputClean.Enabled = false;
|
||||||
|
this.txtOutputClean.Location = new System.Drawing.Point(5, 21);
|
||||||
|
this.txtOutputClean.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||||
|
this.txtOutputClean.Name = "txtOutputClean";
|
||||||
|
this.txtOutputClean.Size = new System.Drawing.Size(292, 23);
|
||||||
|
this.txtOutputClean.TabIndex = 3;
|
||||||
|
this.txtOutputClean.TextChanged += new System.EventHandler(this.TxtOutputTextChanged);
|
||||||
|
//
|
||||||
|
// btnBrowseOutputClean
|
||||||
|
//
|
||||||
|
this.btnBrowseOutputClean.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||||
|
this.btnBrowseOutputClean.Enabled = false;
|
||||||
|
this.btnBrowseOutputClean.Location = new System.Drawing.Point(301, 21);
|
||||||
|
this.btnBrowseOutputClean.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||||
|
this.btnBrowseOutputClean.Name = "btnBrowseOutputClean";
|
||||||
|
this.btnBrowseOutputClean.Size = new System.Drawing.Size(75, 23);
|
||||||
|
this.btnBrowseOutputClean.TabIndex = 5;
|
||||||
|
this.btnBrowseOutputClean.Text = "Browse";
|
||||||
|
this.btnBrowseOutputClean.UseVisualStyleBackColor = true;
|
||||||
|
this.btnBrowseOutputClean.Click += new System.EventHandler(this.BtnBrowseOutputCleanClick);
|
||||||
|
//
|
||||||
|
// buttonAbout
|
||||||
|
//
|
||||||
|
this.buttonAbout.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
|
||||||
|
this.buttonAbout.Location = new System.Drawing.Point(12, 233);
|
||||||
|
this.buttonAbout.Name = "buttonAbout";
|
||||||
|
this.buttonAbout.Size = new System.Drawing.Size(75, 23);
|
||||||
|
this.buttonAbout.TabIndex = 12;
|
||||||
|
this.buttonAbout.Text = "About";
|
||||||
|
this.buttonAbout.UseVisualStyleBackColor = true;
|
||||||
|
this.buttonAbout.Click += new System.EventHandler(this.buttonAbout_Click);
|
||||||
|
//
|
||||||
|
// FrmMain
|
||||||
//
|
//
|
||||||
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F);
|
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F);
|
||||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||||
this.ClientSize = new System.Drawing.Size(347, 244);
|
this.ClientSize = new System.Drawing.Size(404, 267);
|
||||||
|
this.Controls.Add(this.buttonAbout);
|
||||||
|
this.Controls.Add(this.groupBox1);
|
||||||
|
this.Controls.Add(this.chkSaveLogs);
|
||||||
this.Controls.Add(this.groupBoxOutput);
|
this.Controls.Add(this.groupBoxOutput);
|
||||||
this.Controls.Add(this.groupBoxInput);
|
this.Controls.Add(this.groupBoxInput);
|
||||||
this.Controls.Add(this.btnStart);
|
this.Controls.Add(this.btnStart);
|
||||||
this.Controls.Add(this.btnSave);
|
this.Controls.Add(this.btnSave);
|
||||||
|
this.HelpButton = true;
|
||||||
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
|
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
|
||||||
this.Margin = new System.Windows.Forms.Padding(2);
|
this.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||||
this.MinimumSize = new System.Drawing.Size(363, 283);
|
this.MinimumSize = new System.Drawing.Size(418, 299);
|
||||||
this.Name = "frmMain";
|
this.Name = "FrmMain";
|
||||||
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
|
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
|
||||||
this.Text = "Retime Phoneme Util GUI 1.0.0.0";
|
this.Text = "appName";
|
||||||
this.Load += new System.EventHandler(this.frmMain_Load);
|
this.Load += new System.EventHandler(this.frmMain_Load);
|
||||||
this.grpClean.ResumeLayout(false);
|
|
||||||
this.grpClean.PerformLayout();
|
|
||||||
this.groupBoxInput.ResumeLayout(false);
|
this.groupBoxInput.ResumeLayout(false);
|
||||||
this.groupBoxInput.PerformLayout();
|
this.groupBoxInput.PerformLayout();
|
||||||
this.groupBoxOutput.ResumeLayout(false);
|
this.groupBoxOutput.ResumeLayout(false);
|
||||||
this.groupBoxOutput.PerformLayout();
|
this.groupBoxOutput.PerformLayout();
|
||||||
|
this.groupBox1.ResumeLayout(false);
|
||||||
|
this.groupBox1.PerformLayout();
|
||||||
this.ResumeLayout(false);
|
this.ResumeLayout(false);
|
||||||
|
this.PerformLayout();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -243,10 +271,12 @@ partial class frmMain
|
|||||||
private FolderBrowserDialog fbBrowseInput;
|
private FolderBrowserDialog fbBrowseInput;
|
||||||
private FolderBrowserDialog fbBrowseOutput;
|
private FolderBrowserDialog fbBrowseOutput;
|
||||||
private SaveFileDialog sfdOutput;
|
private SaveFileDialog sfdOutput;
|
||||||
private GroupBox grpClean;
|
|
||||||
private RadioButton rdClean;
|
|
||||||
private RadioButton rdFixed;
|
|
||||||
private CheckBox chkSaveLogs;
|
private CheckBox chkSaveLogs;
|
||||||
private GroupBox groupBoxInput;
|
private GroupBox groupBoxInput;
|
||||||
private GroupBox groupBoxOutput;
|
private GroupBox groupBoxOutput;
|
||||||
|
private CheckBox chkClean;
|
||||||
|
private GroupBox groupBox1;
|
||||||
|
private TextBox txtOutputClean;
|
||||||
|
private Button btnBrowseOutputClean;
|
||||||
|
private Button buttonAbout;
|
||||||
}
|
}
|
||||||
|
@ -1,42 +1,50 @@
|
|||||||
namespace ConverterGui;
|
namespace ConverterGui;
|
||||||
public partial class frmMain : Form
|
|
||||||
|
using kru.gui;
|
||||||
|
using kru.gui.Core;
|
||||||
|
|
||||||
|
public partial class FrmMain : Form
|
||||||
{
|
{
|
||||||
public frmMain() => InitializeComponent();
|
public FrmMain() => this.InitializeComponent();
|
||||||
|
|
||||||
private void BtnBrowseOutputClick(object sender, EventArgs e) => this.txtOutput.Text = this.fbBrowseOutput.ShowDialog() == DialogResult.OK ? this.fbBrowseOutput.SelectedPath : string.Empty;
|
private void BtnBrowseOutputClick(object sender, EventArgs e) => this.txtOutput.Text = this.fbBrowseOutput.ShowDialog() == DialogResult.OK ? this.fbBrowseOutput.SelectedPath : string.Empty;
|
||||||
|
|
||||||
|
private void BtnBrowseOutputCleanClick(object sender, EventArgs e) => this.txtOutputClean.Text = this.fbBrowseOutput.ShowDialog() == DialogResult.OK ? this.fbBrowseOutput.SelectedPath : string.Empty;
|
||||||
|
|
||||||
private void BtnBrowseInputClick(object sender, EventArgs e) => this.txtInput.Text = this.fbBrowseInput.ShowDialog() == DialogResult.OK ? this.fbBrowseInput.SelectedPath : string.Empty;
|
private void BtnBrowseInputClick(object sender, EventArgs e) => this.txtInput.Text = this.fbBrowseInput.ShowDialog() == DialogResult.OK ? this.fbBrowseInput.SelectedPath : string.Empty;
|
||||||
|
|
||||||
private void TxtOutputTextChanged(object sender, EventArgs e)
|
private void TxtOutputTextChanged(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
this.fbBrowseOutput.SelectedPath = this.txtOutput.Text;
|
this.fbBrowseOutput.SelectedPath = this.txtOutput.Text;
|
||||||
EnableButtons();
|
this.EnableButtons();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void TxtInputTextChanged(object sender, EventArgs e)
|
private void TxtInputTextChanged(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
this.fbBrowseInput.SelectedPath = this.txtInput.Text;
|
this.fbBrowseInput.SelectedPath = this.txtInput.Text;
|
||||||
EnableButtons();
|
this.EnableButtons();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void BtnSaveClick(object sender, EventArgs e)
|
private void BtnSaveClick(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
var commands = GetCommands();
|
var commands = this.GetCommands();
|
||||||
|
|
||||||
if (sfdOutput.ShowDialog() == DialogResult.OK)
|
if (this.sfdOutput.ShowDialog() == DialogResult.OK)
|
||||||
{
|
{
|
||||||
File.WriteAllLines(sfdOutput.FileName, commands
|
File.WriteAllLines(this.sfdOutput.FileName, commands
|
||||||
.Select(a => a.GetBatchLine()));
|
.Select(a => a.GetBatchLine()));
|
||||||
}
|
}
|
||||||
|
|
||||||
MessageBox.Show("Done!");
|
MessageBox.Show("Done!", "Success!", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void EnableButtons()
|
private void EnableButtons()
|
||||||
{
|
{
|
||||||
var enabled = !string.IsNullOrWhiteSpace(this.txtInput.Text)
|
var enabled = !string.IsNullOrWhiteSpace(this.txtInput.Text)
|
||||||
&& !string.IsNullOrWhiteSpace(this.txtOutput.Text)
|
&& !string.IsNullOrWhiteSpace(this.txtOutput.Text)
|
||||||
&& Directory.Exists(this.txtInput.Text);
|
&& Directory.Exists(this.txtInput.Text)
|
||||||
|
&& Directory.Exists(this.txtOutput.Text)
|
||||||
|
&& (!this.chkClean.Checked || (!string.IsNullOrWhiteSpace(this.txtOutputClean.Text) && Directory.Exists(this.txtOutputClean.Text)));
|
||||||
this.btnSave.Enabled = this.btnStart.Enabled = enabled;
|
this.btnSave.Enabled = this.btnStart.Enabled = enabled;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -46,12 +54,18 @@ public partial class frmMain : Form
|
|||||||
{
|
{
|
||||||
Input = this.txtInput.Text,
|
Input = this.txtInput.Text,
|
||||||
Output = this.txtOutput.Text,
|
Output = this.txtOutput.Text,
|
||||||
Clean = this.rdClean.Checked,
|
OutputClean = this.txtOutputClean.Text,
|
||||||
SaveLog = chkSaveLogs.Checked,
|
Clean = this.chkClean.Checked,
|
||||||
|
SaveLog = this.chkSaveLogs.Checked,
|
||||||
};
|
};
|
||||||
|
|
||||||
var commands = Directory
|
var commands = Directory
|
||||||
.GetFiles(options.Input, "*.wav")
|
.GetFiles(options.Input, "*.wav")
|
||||||
.Select(inputFile => new Command(inputFile, Path.Combine(options.Output, Path.GetFileName(inputFile)), options.Clean, options.SaveLog))
|
.Select(inputFile => new Command(
|
||||||
|
InputFile: inputFile,
|
||||||
|
OutputDirectory: options.Output,
|
||||||
|
CleanDirectory: options.Clean ? options.OutputClean : default,
|
||||||
|
SaveLog: options.SaveLog))
|
||||||
.ToArray();
|
.ToArray();
|
||||||
|
|
||||||
return commands;
|
return commands;
|
||||||
@ -60,24 +74,47 @@ public partial class frmMain : Form
|
|||||||
private async void btnStart_Click(object sender, EventArgs e)
|
private async void btnStart_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
this.Enabled = false;
|
this.Enabled = false;
|
||||||
var commands = GetCommands();
|
try
|
||||||
foreach (var command in commands)
|
|
||||||
{
|
{
|
||||||
var proc = command.GetProcess();
|
var commands = this.GetCommands();
|
||||||
proc.Start();
|
foreach (var command in commands)
|
||||||
await proc.WaitForExitAsync().ConfigureAwait(false);
|
{
|
||||||
|
var proc = command.GetProcess();
|
||||||
|
try
|
||||||
|
{
|
||||||
|
proc.Start();
|
||||||
|
await proc.WaitForExitAsync().ConfigureAwait(false);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
MessageBox.Show("Error", $"An error has occured while trying to launch command: {ex.Message}", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
MessageBox.Show("Done!", "Success!", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
||||||
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
this.Enabled = true;
|
||||||
}
|
}
|
||||||
this.Enabled = true;
|
|
||||||
MessageBox.Show("Done!");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void frmMain_Load(object sender, EventArgs e)
|
private void frmMain_Load(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
|
var (version, name, _) = ApplicationInfoProvider.GetInfo();
|
||||||
|
this.Text = $"{name} {version} ({BitnessProvider.BitnessName})";
|
||||||
}
|
}
|
||||||
|
|
||||||
private void sfdOutput_FileOk(object sender, System.ComponentModel.CancelEventArgs e)
|
private void chkClean_CheckedChanged(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
|
this.txtOutputClean.Enabled = this.btnBrowseOutputClean.Enabled = this.chkClean.Checked;
|
||||||
|
this.EnableButtons();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void buttonAbout_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
using var about = new FrmAbout();
|
||||||
|
about.ShowDialog();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,36 +1,51 @@
|
|||||||
<Project Sdk="Microsoft.NET.Sdk">
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<OutputType>WinExe</OutputType>
|
<AssemblyVersion>1.1.0.0</AssemblyVersion>
|
||||||
<PublishSingleFile>true</PublishSingleFile>
|
<FileVersion>1.1.0.0</FileVersion>
|
||||||
<SelfContained>true</SelfContained>
|
<PackageVersion>1.1.0.0</PackageVersion>
|
||||||
<RuntimeIdentifier>win-x64</RuntimeIdentifier>
|
<Version>1.1.0.0</Version>
|
||||||
<Nullable>enable</Nullable>
|
|
||||||
<PublishTrimmed>false</PublishTrimmed>
|
|
||||||
<PublishReadyToRun>true</PublishReadyToRun>
|
|
||||||
<TargetFramework>net7.0-windows</TargetFramework>
|
|
||||||
<ApplicationIcon>favicon.ico</ApplicationIcon>
|
<ApplicationIcon>favicon.ico</ApplicationIcon>
|
||||||
<PackageId>AntinomyCollective.kru.gui</PackageId>
|
|
||||||
<Authors>Antinomy Collective, EpicMorg, kasthack, stam</Authors>
|
<Authors>Antinomy Collective, EpicMorg, kasthack, stam</Authors>
|
||||||
|
<Company>EpicMorg</Company>
|
||||||
|
<Copyright>EpicMorg 2023</Copyright>
|
||||||
<Description>Retime Phoneme Util GUI by EpicMorg</Description>
|
<Description>Retime Phoneme Util GUI by EpicMorg</Description>
|
||||||
<PackageProjectUrl>https://github.com/AntinomyCollective/Retime-Phoneme-Uti-GUI</PackageProjectUrl>
|
<ImplicitUsings>enable</ImplicitUsings>
|
||||||
<PackageIcon>favicon.png</PackageIcon>
|
<PackageIcon>favicon.png</PackageIcon>
|
||||||
|
<PackageId>AntinomyCollective.kru.gui</PackageId>
|
||||||
|
<PackageProjectUrl>https://github.com/AntinomyCollective/Retime-Phoneme-Uti-GUI</PackageProjectUrl>
|
||||||
|
<PackageTags>epicmorg, retime, Phoneme, Util, GUI, Antinomy, Collective</PackageTags>
|
||||||
|
<Product>Retime Phoneme Util GUI</Product>
|
||||||
|
<PublishReadyToRun>true</PublishReadyToRun>
|
||||||
|
<PublishSingleFile>true</PublishSingleFile>
|
||||||
|
<PublishTrimmed>false</PublishTrimmed>
|
||||||
<RepositoryType>git</RepositoryType>
|
<RepositoryType>git</RepositoryType>
|
||||||
<RepositoryUrl>https://github.com/AntinomyCollective/Retime-Phoneme-Uti-GUI</RepositoryUrl>
|
<RepositoryUrl>https://github.com/AntinomyCollective/Retime-Phoneme-Uti-GUI</RepositoryUrl>
|
||||||
<PackageTags>epicmorg, retime, Phoneme, Util, GUI, Antinomy, Collective</PackageTags>
|
<RuntimeIdentifier>win-x64</RuntimeIdentifier>
|
||||||
<AssemblyVersion>1.0.0.0</AssemblyVersion>
|
<SelfContained>true</SelfContained>
|
||||||
<FileVersion>1.0.0.0</FileVersion>
|
<TargetFramework>net7.0-windows</TargetFramework>
|
||||||
<Version>1.0.0.0</Version>
|
|
||||||
<Copyright>EpicMorg 2023</Copyright>
|
|
||||||
<Product>Retime Phoneme Util GUI</Product>
|
|
||||||
<IsPackable>true</IsPackable>
|
|
||||||
<Company>EpicMorg</Company>
|
|
||||||
<PackageReadmeFile>README.md</PackageReadmeFile>
|
|
||||||
<UseWindowsForms>True</UseWindowsForms>
|
<UseWindowsForms>True</UseWindowsForms>
|
||||||
<ImplicitUsings>enable</ImplicitUsings>
|
<OutputType>WinExe</OutputType>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
<Compile Update="Properties\Resources.Designer.cs">
|
||||||
|
<DesignTime>True</DesignTime>
|
||||||
|
<AutoGen>True</AutoGen>
|
||||||
|
<DependentUpon>Resources.resx</DependentUpon>
|
||||||
|
</Compile>
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<EmbeddedResource Update="Properties\Resources.resx">
|
||||||
|
<Generator>ResXFileCodeGenerator</Generator>
|
||||||
|
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
|
||||||
|
</EmbeddedResource>
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<None Update="favicon.png" Pack="true" PackagePath=""/>
|
||||||
<None Update="Tools\x64\libgcc_s_seh-1.dll">
|
<None Update="Tools\x64\libgcc_s_seh-1.dll">
|
||||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||||
</None>
|
</None>
|
||||||
|
@ -6,6 +6,9 @@ MinimumVisualStudioVersion = 10.0.40219.1
|
|||||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "kru.gui", "kru.gui\kru.gui.csproj", "{2D372BD7-104E-480F-82F5-60EA08A20227}"
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "kru.gui", "kru.gui\kru.gui.csproj", "{2D372BD7-104E-480F-82F5-60EA08A20227}"
|
||||||
EndProject
|
EndProject
|
||||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{494D64A2-ECC6-4B4B-8359-F5AB20E128F7}"
|
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{494D64A2-ECC6-4B4B-8359-F5AB20E128F7}"
|
||||||
|
ProjectSection(SolutionItems) = preProject
|
||||||
|
Directory.Build.props = Directory.Build.props
|
||||||
|
EndProjectSection
|
||||||
EndProject
|
EndProject
|
||||||
Global
|
Global
|
||||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
|
Loading…
x
Reference in New Issue
Block a user