2021-08-26 09:55:14 +02:00
using Microsoft.Extensions.Logging ;
2021-08-26 14:22:54 +02:00
using System.Runtime.Versioning ;
2021-12-23 09:24:29 +01:00
using System ;
2021-08-26 09:55:14 +02:00
namespace ElectronNET.API
2017-10-14 17:58:16 +02:00
{
2017-10-24 21:43:27 +02:00
/// <summary>
/// The Electron.NET API
/// </summary>
2017-10-14 17:58:16 +02:00
public static class Electron
{
2021-08-26 09:55:14 +02:00
private static ILoggerFactory loggerFactory ;
2021-12-23 09:24:29 +01:00
/// <summary>
/// Reads the auth key from the command line. This method must be called first thing.
/// </summary>
/// <exception cref="Exception"></exception>
public static void ReadAuth ( )
{
var line = Console . ReadLine ( ) ;
if ( line . StartsWith ( "Auth=" ) )
{
BridgeConnector . AuthKey = line . Substring ( "Auth=" . Length ) ;
}
else
{
throw new Exception ( "The call to Electron.ReadAuth must be the first thing your app entry point does" ) ;
}
}
2021-08-26 09:55:14 +02:00
/// <summary>
/// Sets the logger factory to be used by Electron, if any
/// </summary>
public static ILoggerFactory LoggerFactory
{
private get = > loggerFactory ; set
{
loggerFactory = value ;
BridgeConnector . Logger = value . CreateLogger < App > ( ) ;
}
}
2017-10-14 17:58:16 +02:00
/// <summary>
/// Communicate asynchronously from the main process to renderer processes.
/// </summary>
public static IpcMain IpcMain { get { return IpcMain . Instance ; } }
/// <summary>
/// Control your application's event lifecycle.
/// </summary>
public static App App { get { return App . Instance ; } }
2017-10-15 06:03:48 +02:00
2019-05-20 01:08:26 +02:00
/// <summary>
/// Enable apps to automatically update themselves. Based on electron-updater.
/// </summary>
public static AutoUpdater AutoUpdater { get { return AutoUpdater . Instance ; } }
2017-10-15 06:03:48 +02:00
/// <summary>
/// Control your windows.
/// </summary>
public static WindowManager WindowManager { get { return WindowManager . Instance ; } }
/// <summary>
/// Create native application menus and context menus.
/// </summary>
public static Menu Menu { get { return Menu . Instance ; } }
2017-10-15 17:03:07 +02:00
/// <summary>
/// Display native system dialogs for opening and saving files, alerting, etc.
/// </summary>
public static Dialog Dialog { get { return Dialog . Instance ; } }
/// <summary>
/// Create OS desktop notifications
/// </summary>
public static Notification Notification { get { return Notification . Instance ; } }
/// <summary>
/// Add icons and context menus to the system’ s notification area.
/// </summary>
public static Tray Tray { get { return Tray . Instance ; } }
2017-10-21 04:37:01 +02:00
/// <summary>
/// Detect keyboard events when the application does not have keyboard focus.
/// </summary>
public static GlobalShortcut GlobalShortcut { get { return GlobalShortcut . Instance ; } }
/// <summary>
/// Manage files and URLs using their default applications.
/// </summary>
public static Shell Shell { get { return Shell . Instance ; } }
2017-10-23 19:08:10 +02:00
/// <summary>
/// Retrieve information about screen size, displays, cursor position, etc.
/// </summary>
public static Screen Screen { get { return Screen . Instance ; } }
2021-12-26 09:03:48 +01:00
/// <summary>
/// Access information about media sources that can be used to capture audio and video from the desktop using the navigator.mediaDevices.getUserMedia API.
/// </summary>
public static DesktopCapturer DesktopCapturer { get { return DesktopCapturer . Instance ; } }
2017-10-23 19:08:10 +02:00
/// <summary>
/// Perform copy and paste operations on the system clipboard.
/// </summary>
public static Clipboard Clipboard { get { return Clipboard . Instance ; } }
2019-01-05 02:17:31 +01:00
2019-05-15 23:56:53 +02:00
/// <summary>
/// Allows you to execute native JavaScript/TypeScript code from the host process.
///
/// It is only possible if the Electron.NET CLI has previously added an
/// ElectronHostHook directory:
/// <c>electronize add HostHook</c>
/// </summary>
2019-01-05 02:17:31 +01:00
public static HostHook HostHook { get { return HostHook . Instance ; } }
2020-05-11 12:59:21 -05:00
/// <summary>
/// Allows you to execute native Lock and Unlock process.
/// </summary>
public static PowerMonitor PowerMonitor { get { return PowerMonitor . Instance ; } }
2020-05-13 14:16:36 +02:00
/// <summary>
/// Read and respond to changes in Chromium's native color theme.
/// </summary>
public static NativeTheme NativeTheme { get { return NativeTheme . Instance ; } }
2020-06-01 01:59:40 +02:00
/// <summary>
/// Control your app in the macOS dock.
/// </summary>
2021-08-26 14:22:54 +02:00
[SupportedOSPlatform("macos")]
2020-06-01 01:59:40 +02:00
public static Dock Dock { get { return Dock . Instance ; } }
2017-10-14 17:58:16 +02:00
}
2020-06-01 01:59:40 +02:00
}