You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
107 lines
3.4 KiB
107 lines
3.4 KiB
// SPDX-License-Identifier: AGPL-3.0-only
|
|
/**
|
|
* Digital Voice Modem - Desktop Dispatch Console
|
|
* AGPLv3 Open Source. Use is subject to license terms.
|
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
|
*
|
|
* @package DVM / Desktop Dispatch Console
|
|
* @license AGPLv3 License (https://opensource.org/licenses/AGPL-3.0)
|
|
*
|
|
* Copyright (C) 2025 Caleb, K4PHP
|
|
* Copyright (C) 2025 Bryan Biedenkapp, N2PLL
|
|
*
|
|
*/
|
|
|
|
using System.IO;
|
|
using System.Reflection;
|
|
using System.Text;
|
|
using System.Windows;
|
|
|
|
using fnecore.Utility;
|
|
|
|
namespace dvmconsole
|
|
{
|
|
/// <summary>
|
|
/// Encapsulates a Windows Presentation Foundation application.
|
|
/// </summary>
|
|
public partial class App : Application
|
|
{
|
|
public static string USER_PROFILE_PATH_OVERRIDE = string.Empty;
|
|
|
|
/*
|
|
** Methods
|
|
*/
|
|
|
|
/// <summary>
|
|
/// Initializes a new instance of the <see cref="App"/> class.
|
|
/// </summary>
|
|
public App()
|
|
{
|
|
string codeBase = Assembly.GetExecutingAssembly().CodeBase;
|
|
UriBuilder uri = new UriBuilder(codeBase);
|
|
string path = Uri.UnescapeDataString(uri.Path);
|
|
|
|
if (!File.Exists(Path.Combine(new string[] { Path.GetDirectoryName(path), "libvocoder.DLL" })))
|
|
{
|
|
MessageBox.Show("libvocoder is missing or not found! The library is required for operation of the console, please see: https://github.com/DVMProject/dvmvocoder.", "Digital Voice Modem - Desktop Dispatch Console",
|
|
MessageBoxButton.OK, MessageBoxImage.Error);
|
|
Application.Current.Shutdown();
|
|
return;
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Internal helper to prints the program usage.
|
|
/// </summary>
|
|
private static void Usage(OptionSet p)
|
|
{
|
|
string messageBoxText = "[-h | --help][--userprofile <path for UserProfile.yaml>]\r\nOptions:\r\n";
|
|
|
|
using (MemoryStream ms = new MemoryStream())
|
|
{
|
|
using (TextWriter writer = new StreamWriter(ms))
|
|
p.WriteOptionDescriptions(writer);
|
|
|
|
messageBoxText += Encoding.UTF8.GetString(ms.ToArray());
|
|
}
|
|
|
|
MessageBox.Show(messageBoxText, "Digital Voice Modem - Desktop Dispatch Console",
|
|
MessageBoxButton.OK, MessageBoxImage.Information);
|
|
|
|
Application.Current.Shutdown();
|
|
}
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
private void Application_Startup(object sender, StartupEventArgs e)
|
|
{
|
|
bool showHelp = false;
|
|
string configFile = string.Empty;
|
|
|
|
// command line parameters
|
|
OptionSet options = new OptionSet()
|
|
{
|
|
{ "h|help", "show this message and exit", v => showHelp = v != null },
|
|
{ "userprofile=", "sets the path to the UserProfile.yaml", v => USER_PROFILE_PATH_OVERRIDE = v },
|
|
};
|
|
|
|
// attempt to parse the commandline
|
|
try
|
|
{
|
|
options.Parse(e.Args);
|
|
}
|
|
catch (OptionException)
|
|
{
|
|
/* ignore */
|
|
}
|
|
|
|
// show help?
|
|
if (showHelp)
|
|
Usage(options);
|
|
}
|
|
} // public partial class App : Application
|
|
} // namespace dvmconsole
|