diff --git a/ElectronNET.API/App.cs b/ElectronNET.API/App.cs index bf073f4..471e3f7 100644 --- a/ElectronNET.API/App.cs +++ b/ElectronNET.API/App.cs @@ -86,6 +86,7 @@ namespace ElectronNET.API _socket.On("appGetAppPathCompleted", (path) => { + _socket.Off("appGetAppPathCompleted"); taskCompletionSource.SetResult(path.ToString()); }); @@ -100,6 +101,8 @@ namespace ElectronNET.API _socket.On("appGetPathCompleted", (path) => { + _socket.Off("appGetPathCompleted"); + taskCompletionSource.SetResult(path.ToString()); }); @@ -108,6 +111,593 @@ namespace ElectronNET.API return await taskCompletionSource.Task; } - public static void Blub2() { } + // TODO: Fertig coden + //public async static Task GetFileIconAsync(string filePath) + //{ + // var taskCompletionSource = new TaskCompletionSource(); + + // _socket.On("appGetFileIconCompleted", (results) => + // { + // _socket.Off("appGetFileIconCompleted"); + + // byte[] test = ((JArray)results).Last.ToObject(); + + + // //object[] result = results as object[]; + // //NativeImage nativeImage = (NativeImage)result[1]; + // //taskCompletionSource.SetResult(nativeImage); + // }); + // _socket.Emit("appGetFileIcon", filePath); + + // return await taskCompletionSource.Task; + //} + + // TODO: Fertig coden + //public async static Task GetFileIconAsync(string filePath, FileIconOptions fileIconOptions) + //{ + // var taskCompletionSource = new TaskCompletionSource(); + + // _socket.On("appGetFileIconCompleted", (results) => + // { + // _socket.Off("appGetFileIconCompleted"); + + // object[] result = results as object[]; + // NativeImage nativeImage = (NativeImage)result[1]; + // taskCompletionSource.SetResult(nativeImage); + // }); + // _socket.Emit("appGetFileIcon", filePath, JObject.FromObject(fileIconOptions, _jsonSerializer)); + + // return await taskCompletionSource.Task; + //} + + public static void SetPath(string name, string path) + { + _socket.Emit("appSetPath", name, path); + } + + public async static Task GetVersionAsync() + { + var taskCompletionSource = new TaskCompletionSource(); + + _socket.On("appGetVersionCompleted", (version) => + { + _socket.Off("appGetVersionCompleted"); + taskCompletionSource.SetResult(version.ToString()); + }); + + _socket.Emit("appGetVersion"); + + return await taskCompletionSource.Task; + } + + public async static Task GetNameAsync() + { + var taskCompletionSource = new TaskCompletionSource(); + + _socket.On("appGetNameCompleted", (name) => + { + _socket.Off("appGetNameCompleted"); + taskCompletionSource.SetResult(name.ToString()); + }); + + _socket.Emit("appGetName"); + + return await taskCompletionSource.Task; + } + + public static void SetName(string name) + { + _socket.Emit("appSetName", name); + } + + public async static Task GetLocaleAsync() + { + var taskCompletionSource = new TaskCompletionSource(); + + _socket.On("appGetLocaleCompleted", (locale) => + { + _socket.Off("appGetLocaleCompleted"); + taskCompletionSource.SetResult(locale.ToString()); + }); + + _socket.Emit("appGetLocale"); + + return await taskCompletionSource.Task; + } + + public static void AddRecentDocument(string path) + { + _socket.Emit("appAddRecentDocument", path); + } + + public static void ClearRecentDocuments() + { + _socket.Emit("appClearRecentDocuments"); + } + + public async static Task SetAsDefaultProtocolClientAsync(string protocol) + { + var taskCompletionSource = new TaskCompletionSource(); + + _socket.On("appSetAsDefaultProtocolClientCompleted", (success) => + { + _socket.Off("appSetAsDefaultProtocolClientCompleted"); + taskCompletionSource.SetResult((bool)success); + }); + + _socket.Emit("appSetAsDefaultProtocolClient", protocol); + + return await taskCompletionSource.Task; + } + + public async static Task SetAsDefaultProtocolClientAsync(string protocol, string path) + { + var taskCompletionSource = new TaskCompletionSource(); + + _socket.On("appSetAsDefaultProtocolClientCompleted", (success) => + { + _socket.Off("appSetAsDefaultProtocolClientCompleted"); + taskCompletionSource.SetResult((bool)success); + }); + + _socket.Emit("appSetAsDefaultProtocolClient", protocol, path); + + return await taskCompletionSource.Task; + } + + public async static Task SetAsDefaultProtocolClientAsync(string protocol, string path, string[] args) + { + var taskCompletionSource = new TaskCompletionSource(); + + _socket.On("appSetAsDefaultProtocolClientCompleted", (success) => + { + _socket.Off("appSetAsDefaultProtocolClientCompleted"); + taskCompletionSource.SetResult((bool)success); + }); + + _socket.Emit("appSetAsDefaultProtocolClient", protocol, path, args); + + return await taskCompletionSource.Task; + } + + public async static Task RemoveAsDefaultProtocolClientAsync(string protocol) + { + var taskCompletionSource = new TaskCompletionSource(); + + _socket.On("appRemoveAsDefaultProtocolClientCompleted", (success) => + { + _socket.Off("appRemoveAsDefaultProtocolClientCompleted"); + taskCompletionSource.SetResult((bool)success); + }); + + _socket.Emit("appRemoveAsDefaultProtocolClient", protocol); + + return await taskCompletionSource.Task; + } + + public async static Task RemoveAsDefaultProtocolClientAsync(string protocol, string path) + { + var taskCompletionSource = new TaskCompletionSource(); + + _socket.On("appRemoveAsDefaultProtocolClientCompleted", (success) => + { + _socket.Off("appRemoveAsDefaultProtocolClientCompleted"); + taskCompletionSource.SetResult((bool)success); + }); + + _socket.Emit("appRemoveAsDefaultProtocolClient", protocol, path); + + return await taskCompletionSource.Task; + } + + public async static Task RemoveAsDefaultProtocolClientAsync(string protocol, string path, string[] args) + { + var taskCompletionSource = new TaskCompletionSource(); + + _socket.On("appRemoveAsDefaultProtocolClientCompleted", (success) => + { + _socket.Off("appRemoveAsDefaultProtocolClientCompleted"); + taskCompletionSource.SetResult((bool)success); + }); + + _socket.Emit("appRemoveAsDefaultProtocolClient", protocol, path, args); + + return await taskCompletionSource.Task; + } + + public async static Task IsDefaultProtocolClientAsync(string protocol) + { + var taskCompletionSource = new TaskCompletionSource(); + + _socket.On("appIsDefaultProtocolClientCompleted", (success) => + { + _socket.Off("appIsDefaultProtocolClientCompleted"); + taskCompletionSource.SetResult((bool)success); + }); + + _socket.Emit("appIsDefaultProtocolClient", protocol); + + return await taskCompletionSource.Task; + } + + public async static Task IsDefaultProtocolClientAsync(string protocol, string path) + { + var taskCompletionSource = new TaskCompletionSource(); + + _socket.On("appIsDefaultProtocolClientCompleted", (success) => + { + _socket.Off("appIsDefaultProtocolClientCompleted"); + taskCompletionSource.SetResult((bool)success); + }); + + _socket.Emit("appIsDefaultProtocolClient", protocol, path); + + return await taskCompletionSource.Task; + } + + public async static Task IsDefaultProtocolClientAsync(string protocol, string path, string[] args) + { + var taskCompletionSource = new TaskCompletionSource(); + + _socket.On("appIsDefaultProtocolClientCompleted", (success) => + { + _socket.Off("appIsDefaultProtocolClientCompleted"); + taskCompletionSource.SetResult((bool)success); + }); + + _socket.Emit("appIsDefaultProtocolClient", protocol, path, args); + + return await taskCompletionSource.Task; + } + + public async static Task SetUserTasksAsync(UserTask[] userTasks) + { + var taskCompletionSource = new TaskCompletionSource(); + + _socket.On("appSetUserTasksCompleted", (success) => + { + _socket.Off("appSetUserTasksCompleted"); + taskCompletionSource.SetResult((bool)success); + }); + + _socket.Emit("appSetUserTasks", JObject.FromObject(userTasks, _jsonSerializer)); + + return await taskCompletionSource.Task; + } + + public async static Task GetJumpListSettingsAsync() + { + var taskCompletionSource = new TaskCompletionSource(); + + _socket.On("appGetJumpListSettingsCompleted", (success) => + { + _socket.Off("appGetJumpListSettingsCompleted"); + taskCompletionSource.SetResult(JObject.Parse(success.ToString()).ToObject()); + }); + + _socket.Emit("appGetJumpListSettings"); + + return await taskCompletionSource.Task; + } + + public static void SetJumpList(JumpListCategory[] jumpListCategories) + { + _socket.Emit("appSetJumpList", JObject.FromObject(jumpListCategories, _jsonSerializer)); + } + + public async static Task MakeSingleInstanceAsync(Action newInstanceOpened) + { + var taskCompletionSource = new TaskCompletionSource(); + + _socket.On("appMakeSingleInstanceCompleted", (success) => + { + _socket.Off("appMakeSingleInstanceCompleted"); + taskCompletionSource.SetResult((bool)success); + }); + + _socket.Off("newInstanceOpened"); + _socket.On("newInstanceOpened", (result) => + { + JArray results = (JArray)result; + string[] args = results.First.ToObject(); + string workdirectory = results.Last.ToObject(); + + newInstanceOpened(args, workdirectory); + }); + + _socket.Emit("appMakeSingleInstance"); + + return await taskCompletionSource.Task; + } + + public static void ReleaseSingleInstance() + { + _socket.Emit("appReleaseSingleInstance"); + } + + public static void SetUserActivity(string type, object userInfo) + { + _socket.Emit("appSetUserActivity", type, userInfo); + } + + public static void SetUserActivity(string type, object userInfo, string webpageURL) + { + _socket.Emit("appSetUserActivity", type, userInfo, webpageURL); + } + + public async static Task GetCurrentActivityTypeAsync() + { + var taskCompletionSource = new TaskCompletionSource(); + + _socket.On("appGetCurrentActivityTypeCompleted", (activityType) => + { + _socket.Off("appGetCurrentActivityTypeCompleted"); + taskCompletionSource.SetResult(activityType.ToString()); + }); + + _socket.Emit("appGetCurrentActivityType"); + + return await taskCompletionSource.Task; + } + + public static void SetAppUserModelId(string id) + { + _socket.Emit("appSetAppUserModelId", id); + } + + public async static Task ImportCertificateAsync(ImportCertificateOptions options) + { + var taskCompletionSource = new TaskCompletionSource(); + + _socket.On("appImportCertificateCompleted", (result) => + { + _socket.Off("appImportCertificateCompleted"); + taskCompletionSource.SetResult((int)result); + }); + + _socket.Emit("appImportCertificate", JObject.FromObject(options, _jsonSerializer)); + + return await taskCompletionSource.Task; + } + + public async static Task GetAppMetricsAsync() + { + var taskCompletionSource = new TaskCompletionSource(); + + _socket.On("appGetAppMetricsCompleted", (result) => + { + _socket.Off("appGetAppMetricsCompleted"); + var processMetrics = ((JArray)result).ToObject(); + + taskCompletionSource.SetResult(processMetrics); + }); + + _socket.Emit("appGetAppMetrics"); + + return await taskCompletionSource.Task; + } + + public async static Task GetGpuFeatureStatusAsync() + { + var taskCompletionSource = new TaskCompletionSource(); + + _socket.On("appGetGpuFeatureStatusCompleted", (result) => + { + _socket.Off("appGetGpuFeatureStatusCompleted"); + var gpuFeatureStatus = ((JObject)result).ToObject(); + + taskCompletionSource.SetResult(gpuFeatureStatus); + }); + + _socket.Emit("appGetGpuFeatureStatus"); + + return await taskCompletionSource.Task; + } + + public async static Task SetBadgeCountAsync(int count) + { + var taskCompletionSource = new TaskCompletionSource(); + + _socket.On("appSetBadgeCountCompleted", (success) => + { + _socket.Off("appSetBadgeCountCompleted"); + taskCompletionSource.SetResult((bool)success); + }); + + _socket.Emit("appSetBadgeCount", count); + + return await taskCompletionSource.Task; + } + + public async static Task GetBadgeCountAsync() + { + var taskCompletionSource = new TaskCompletionSource(); + + _socket.On("appGetBadgeCountCompleted", (count) => + { + _socket.Off("appGetBadgeCountCompleted"); + taskCompletionSource.SetResult((int)count); + }); + + _socket.Emit("appGetBadgeCount"); + + return await taskCompletionSource.Task; + } + + public async static Task IsUnityRunningAsync() + { + var taskCompletionSource = new TaskCompletionSource(); + + _socket.On("appIsUnityRunningCompleted", (isUnityRunning) => + { + _socket.Off("appIsUnityRunningCompleted"); + taskCompletionSource.SetResult((bool)isUnityRunning); + }); + + _socket.Emit("appIsUnityRunning"); + + return await taskCompletionSource.Task; + } + + public async static Task GetLoginItemSettingsAsync() + { + var taskCompletionSource = new TaskCompletionSource(); + + _socket.On("appGetLoginItemSettingsCompleted", (loginItemSettings) => + { + _socket.Off("appGetLoginItemSettingsCompleted"); + taskCompletionSource.SetResult((LoginItemSettings)loginItemSettings); + }); + + _socket.Emit("appGetLoginItemSettings"); + + return await taskCompletionSource.Task; + } + + public async static Task GetLoginItemSettingsAsync(LoginItemSettingsOptions options) + { + var taskCompletionSource = new TaskCompletionSource(); + + _socket.On("appGetLoginItemSettingsCompleted", (loginItemSettings) => + { + _socket.Off("appGetLoginItemSettingsCompleted"); + taskCompletionSource.SetResult((LoginItemSettings)loginItemSettings); + }); + + _socket.Emit("appGetLoginItemSettings", JObject.FromObject(options, _jsonSerializer)); + + return await taskCompletionSource.Task; + } + + public static void SetLoginItemSettings(LoginSettings loginSettings) + { + _socket.Emit("appSetLoginItemSettings", JObject.FromObject(loginSettings, _jsonSerializer)); + } + + public async static Task IsAccessibilitySupportEnabledAsync() + { + var taskCompletionSource = new TaskCompletionSource(); + + _socket.On("appIsAccessibilitySupportEnabledCompleted", (isAccessibilitySupportEnabled) => + { + _socket.Off("appIsAccessibilitySupportEnabledCompleted"); + taskCompletionSource.SetResult((bool)isAccessibilitySupportEnabled); + }); + + _socket.Emit("appIsAccessibilitySupportEnabled"); + + return await taskCompletionSource.Task; + } + + public static void SetAboutPanelOptions(AboutPanelOptions options) + { + _socket.Emit("appSetAboutPanelOptions", JObject.FromObject(options, _jsonSerializer)); + } + + public static void CommandLineAppendSwitch(string theSwtich) + { + _socket.Emit("appCommandLineAppendSwitch", theSwtich); + } + + public static void CommandLineAppendSwitch(string theSwtich, string value) + { + _socket.Emit("appCommandLineAppendSwitch", theSwtich, value); + } + + public static void CommandLineAppendArgument(string value) + { + _socket.Emit("appCommandLineAppendArgument", value); + } + + public static void EnableMixedSandbox() + { + _socket.Emit("appEnableMixedSandbox"); + } + + public async static Task DockBounceAsync(DockBounceType type) + { + var taskCompletionSource = new TaskCompletionSource(); + + _socket.On("appDockBounceCompleted", (id) => + { + _socket.Off("appDockBounceCompleted"); + taskCompletionSource.SetResult((int)id); + }); + + _socket.Emit("appDockBounce", type.ToString()); + + return await taskCompletionSource.Task; + } + + public static void DockCancelBounce(int id) + { + _socket.Emit("appDockCancelBounce", id); + } + + public static void DockDownloadFinished(string filePath) + { + _socket.Emit("appDockDownloadFinished", filePath); + } + + public static void DockSetBadge(string text) + { + _socket.Emit("appDockSetBadge", text); + } + + public async static Task DockGetBadgeAsync() + { + var taskCompletionSource = new TaskCompletionSource(); + + _socket.On("appDockGetBadgeCompleted", (text) => + { + _socket.Off("appDockGetBadgeCompleted"); + taskCompletionSource.SetResult((string)text); + }); + + _socket.Emit("appDockGetBadge"); + + return await taskCompletionSource.Task; + } + + public static void DockHide() + { + _socket.Emit("appDockHide"); + } + + public static void DockShow() + { + _socket.Emit("appDockShow"); + } + + public async static Task DockIsVisibleAsync() + { + var taskCompletionSource = new TaskCompletionSource(); + + _socket.On("appDockIsVisibleCompleted", (isVisible) => + { + _socket.Off("appDockIsVisibleCompleted"); + taskCompletionSource.SetResult((bool)isVisible); + }); + + _socket.Emit("appDockIsVisible"); + + return await taskCompletionSource.Task; + } + + // TODO: Menu lösung muss gemacht werden und imeplementiert + public static void DockSetMenu() + { + _socket.Emit("appDockSetMenu"); + } + + public static void DockSetIcon(string image) + { + _socket.Emit("appDockSetIcon", image); + } + + //public static void DockSetIcon(NativeImage image) + //{ + // _socket.Emit("appDockSetIcon", JObject.FromObject(image, _jsonSerializer)); + //} } } diff --git a/ElectronNET.API/Entities/AboutPanelOptions.cs b/ElectronNET.API/Entities/AboutPanelOptions.cs new file mode 100644 index 0000000..db47d7e --- /dev/null +++ b/ElectronNET.API/Entities/AboutPanelOptions.cs @@ -0,0 +1,30 @@ +namespace ElectronNET.API.Entities +{ + public class AboutPanelOptions + { + /// + /// The app's name. + /// + public string ApplicationName { get; set; } + + /// + /// The app's version. + /// + public string ApplicationVersion { get; set; } + + /// + /// Copyright information. + /// + public string Copyright { get; set; } + + /// + /// Credit information. + /// + public string Credits { get; set; } + + /// + /// The app's build version number. + /// + public string Version { get; set; } + } +} \ No newline at end of file diff --git a/ElectronNET.API/Entities/CPUUsage.cs b/ElectronNET.API/Entities/CPUUsage.cs new file mode 100644 index 0000000..0fb461a --- /dev/null +++ b/ElectronNET.API/Entities/CPUUsage.cs @@ -0,0 +1,16 @@ +namespace ElectronNET.API.Entities +{ + public class CPUUsage + { + /// + /// The number of average idle cpu wakeups per second since the last call to + /// getCPUUsage.First call returns 0. + /// + public int IdleWakeupsPerSecond { get; set; } + + /// + /// Percentage of CPU used since the last call to getCPUUsage. First call returns 0. + /// + public int PercentCPUUsage { get; set; } + } +} diff --git a/ElectronNET.API/Entities/DockBounceType.cs b/ElectronNET.API/Entities/DockBounceType.cs new file mode 100644 index 0000000..5af53ed --- /dev/null +++ b/ElectronNET.API/Entities/DockBounceType.cs @@ -0,0 +1,8 @@ +namespace ElectronNET.API +{ + public enum DockBounceType + { + critical, + informational + } +} \ No newline at end of file diff --git a/ElectronNET.API/Entities/FileIconOptions.cs b/ElectronNET.API/Entities/FileIconOptions.cs new file mode 100644 index 0000000..4293a0a --- /dev/null +++ b/ElectronNET.API/Entities/FileIconOptions.cs @@ -0,0 +1,12 @@ +namespace ElectronNET.API.Entities +{ + public class FileIconOptions + { + public string Size { get; private set; } + + public FileIconOptions(FileIconSize fileIconSize) + { + Size = fileIconSize.ToString(); + } + } +} \ No newline at end of file diff --git a/ElectronNET.API/Entities/FileIconSize.cs b/ElectronNET.API/Entities/FileIconSize.cs new file mode 100644 index 0000000..7841ee8 --- /dev/null +++ b/ElectronNET.API/Entities/FileIconSize.cs @@ -0,0 +1,9 @@ +namespace ElectronNET.API.Entities +{ + public enum FileIconSize + { + small, + normal, + large + } +} \ No newline at end of file diff --git a/ElectronNET.API/Entities/GPUFeatureStatus.cs b/ElectronNET.API/Entities/GPUFeatureStatus.cs new file mode 100644 index 0000000..a21aac5 --- /dev/null +++ b/ElectronNET.API/Entities/GPUFeatureStatus.cs @@ -0,0 +1,82 @@ +using Newtonsoft.Json; + +namespace ElectronNET.API.Entities +{ + public class GPUFeatureStatus + { + /// + /// Canvas + /// + [JsonProperty("2d_canvas")] + public string Canvas { get; set; } + + /// + /// Flash + /// + [JsonProperty("flash_3d")] + public string Flash3D { get; set; } + + /// + /// Flash Stage3D + /// + [JsonProperty("flash_stage3d")] + public string FlashStage3D { get; set; } + + /// + /// Flash Stage3D Baseline profile + /// + [JsonProperty("flash_stage3d_baseline")] + public string FlashStage3dBaseline { get; set; } + + /// + /// Compositing + /// + [JsonProperty("gpu_compositing")] + public string GpuCompositing { get; set; } + + /// + /// Multiple Raster Threads + /// + [JsonProperty("multiple_raster_threads")] + public string MultipleRasterThreads { get; set; } + + /// + /// Native GpuMemoryBuffers + /// + [JsonProperty("native_gpu_memory_buffers")] + public string NativeGpuMemoryBuffers { get; set; } + + /// + /// Rasterization + /// + public string Rasterization { get; set; } + + /// + /// Video Decode + /// + [JsonProperty("video_decode")] + public string VideoDecode { get; set; } + + /// + /// Video Encode + /// + [JsonProperty("video_encode")] + public string VideoEncode { get; set; } + + /// + /// VPx Video Decode + /// + [JsonProperty("vpx_decode")] + public string VpxDecode { get; set; } + + /// + /// WebGL + /// + public string Webgl { get; set; } + + /// + /// WebGL2 + /// + public string Webgl2 { get; set; } + } +} \ No newline at end of file diff --git a/ElectronNET.API/Entities/ImportCertificateOptions.cs b/ElectronNET.API/Entities/ImportCertificateOptions.cs new file mode 100644 index 0000000..779992c --- /dev/null +++ b/ElectronNET.API/Entities/ImportCertificateOptions.cs @@ -0,0 +1,15 @@ +namespace ElectronNET.API.Entities +{ + public class ImportCertificateOptions + { + /// + /// Path for the pkcs12 file. + /// + public string Certificate { get; set; } + + /// + /// Passphrase for the certificate. + /// + public string Password {get; set; } + } +} diff --git a/ElectronNET.API/Entities/JumpListCategory.cs b/ElectronNET.API/Entities/JumpListCategory.cs new file mode 100644 index 0000000..abf8c5c --- /dev/null +++ b/ElectronNET.API/Entities/JumpListCategory.cs @@ -0,0 +1,11 @@ +using ElectronNET.API.Entities; + +namespace ElectronNET.API +{ + public class JumpListCategory + { + public string Name { get; set; } = string.Empty; + public JumpListItem[] Items { get; set; } = new JumpListItem[0]; + public string Type { get; set; } = "tasks"; + } +} diff --git a/ElectronNET.API/Entities/JumpListItem.cs b/ElectronNET.API/Entities/JumpListItem.cs new file mode 100644 index 0000000..f38562b --- /dev/null +++ b/ElectronNET.API/Entities/JumpListItem.cs @@ -0,0 +1,14 @@ +namespace ElectronNET.API.Entities +{ + public class JumpListItem + { + public string Args { get; set; } = string.Empty; + public string Description { get; set; } = string.Empty; + public int IconIndex { get; set; } = 0; + public string IconPath { get; set; } = string.Empty; + public string Path { get; set; } = string.Empty; + public string Program { get; set; } = string.Empty; + public string Title { get; set; } = string.Empty; + public string Type {get; set; } = string.Empty; + } +} diff --git a/ElectronNET.API/Entities/JumpListSettings.cs b/ElectronNET.API/Entities/JumpListSettings.cs new file mode 100644 index 0000000..d4f3bc0 --- /dev/null +++ b/ElectronNET.API/Entities/JumpListSettings.cs @@ -0,0 +1,9 @@ +namespace ElectronNET.API.Entities +{ + public class JumpListSettings + { + public int MinItems { get; set; } = 0; + + public JumpListItem[] RemovedItems { get; set; } = new JumpListItem[0]; + } +} diff --git a/ElectronNET.API/Entities/LoginItemSettings.cs b/ElectronNET.API/Entities/LoginItemSettings.cs new file mode 100644 index 0000000..67e9535 --- /dev/null +++ b/ElectronNET.API/Entities/LoginItemSettings.cs @@ -0,0 +1,36 @@ +namespace ElectronNET.API.Entities +{ + public class LoginItemSettings + { + /// + /// true if the app is set to open at login. + /// + public bool OpenAtLogin { get; set; } + + /// + /// true if the app is set to open as hidden at login. This setting is only + /// supported on macOS. + /// + public bool OpenAsHidden { get; set; } + + /// + /// true if the app was opened at login automatically. This setting is only + /// supported on macOS. + /// + public bool WasOpenedAtLogin { get; set; } + + /// + /// true if the app was opened as a hidden login item. This indicates that the app + /// should not open any windows at startup.This setting is only supported on macOS. + /// + public bool WasOpenedAsHidden { get; set; } + + /// + /// true if the app was opened as a login item that should restore the state from + /// the previous session.This indicates that the app should restore the windows + /// that were open the last time the app was closed.This setting is only supported + /// on macOS. + /// + public bool RestoreState { get; set; } + } +} \ No newline at end of file diff --git a/ElectronNET.API/Entities/LoginItemSettingsOptions.cs b/ElectronNET.API/Entities/LoginItemSettingsOptions.cs new file mode 100644 index 0000000..aee888d --- /dev/null +++ b/ElectronNET.API/Entities/LoginItemSettingsOptions.cs @@ -0,0 +1,15 @@ +namespace ElectronNET.API.Entities +{ + public class LoginItemSettingsOptions + { + /// + /// The executable path to compare against. Defaults to process.execPath. + /// + public string Path { get; set; } + + /// + /// The command-line arguments to compare against. Defaults to an empty array. + /// + public string[] Args { get; set; } + } +} \ No newline at end of file diff --git a/ElectronNET.API/Entities/LoginSettings.cs b/ElectronNET.API/Entities/LoginSettings.cs new file mode 100644 index 0000000..aec8203 --- /dev/null +++ b/ElectronNET.API/Entities/LoginSettings.cs @@ -0,0 +1,30 @@ +namespace ElectronNET.API.Entities +{ + public class LoginSettings + { + /// + /// true to open the app at login, false to remove the app as a login item. Defaults + /// to false. + /// + public bool OpenAtLogin { get; set; } + + /// + /// true to open the app as hidden. Defaults to false. The user can edit this + /// setting from the System Preferences so + /// app.getLoginItemStatus().wasOpenedAsHidden should be checked when the app is + /// opened to know the current value.This setting is only supported on macOS. + /// + public bool OpenAsHidden { get; set; } + + /// + /// The executable to launch at login. Defaults to process.execPath. + /// + public string Path { get; set; } + + /// + /// The command-line arguments to pass to the executable. Defaults to an empty + /// array.Take care to wrap paths in quotes. + /// + public string[] Args { get; set; } + } +} \ No newline at end of file diff --git a/ElectronNET.API/Entities/MemoryInfo.cs b/ElectronNET.API/Entities/MemoryInfo.cs new file mode 100644 index 0000000..f31423b --- /dev/null +++ b/ElectronNET.API/Entities/MemoryInfo.cs @@ -0,0 +1,33 @@ +namespace ElectronNET.API.Entities +{ + public class MemoryInfo + { + /// + /// The maximum amount of memory that has ever been pinned to actual physical RAM. + /// On macOS its value will always be 0. + /// + public int PeakWorkingSetSize { get; set; } + + /// + /// Process id of the process. + /// + public int Pid { get; set; } + + /// + /// The amount of memory not shared by other processes, such as JS heap or HTML + /// content. + /// + public int PrivateBytes { get; set; } + + /// + /// The amount of memory shared between processes, typically memory consumed by the + /// Electron code itself + /// + public int SharedBytes { get; set; } + + /// + /// The amount of memory currently pinned to actual physical RAM. + /// + public int WorkingSetSize {get; set; } + } +} diff --git a/ElectronNET.API/Entities/NativeImage.cs b/ElectronNET.API/Entities/NativeImage.cs new file mode 100644 index 0000000..deb6210 --- /dev/null +++ b/ElectronNET.API/Entities/NativeImage.cs @@ -0,0 +1,106 @@ +namespace ElectronNET.API.Entities +{ + // TODO: Fertig coden + public class NativeImage + { + // public static NativeImage CreateEmpty() + // { + // throw new NotImplementedException(); + // } + + // public static NativeImage CreateFromBuffer(byte[] buffer) + // { + // throw new NotImplementedException(); + // } + + // public static NativeImage CreateFromBuffer(byte[] buffer, CreateFromBufferOptions options) + // { + // throw new NotImplementedException(); + // } + + // public static NativeImage CreateFromDataURL(string dataURL) + // { + // throw new NotImplementedException(); + // } + + // public static NativeImage CreateFromPath(string path) + // { + // throw new NotImplementedException(); + // } + + // public void AddRepresentation(AddRepresentationOptions options) + // { + // throw new NotImplementedException(); + // } + + // public NativeImage Crop(Rectangle rect) + // { + // throw new NotImplementedException(); + // } + + // public int GetAspectRatio() + // { + // throw new NotImplementedException(); + // } + + // public byte[] GetBitmap() + // { + // throw new NotImplementedException(); + // } + + // public byte[] GetBitmap(BitmapOptions options) + // { + // throw new NotImplementedException(); + // } + + // public byte[] GetNativeHandle() + // { + // throw new NotImplementedException(); + // } + + // public Size GetSize() + // { + // throw new NotImplementedException(); + // } + + // public bool IsEmpty() + // { + // throw new NotImplementedException(); + // } + + // public bool IsTemplateImage() + // { + // throw new NotImplementedException(); + // } + + // public NativeImage Resize(ResizeOptions options) + // { + // throw new NotImplementedException(); + // } + + // public void SetTemplateImage(bool option) + // { + // throw new NotImplementedException(); + // } + + // public byte[] ToBitmap(ToBitmapOptions options) + // { + // throw new NotImplementedException(); + // } + + // public string ToDataURL(ToDataURLOptions options) + // { + // throw new NotImplementedException(); + // } + + // public byte[] ToJPEG(int quality) + // { + // throw new NotImplementedException(); + // } + + // public byte[] ToPNG(ToPNGOptions options) + // { + // throw new NotImplementedException(); + // } + } +} diff --git a/ElectronNET.API/Entities/ProcessMetric.cs b/ElectronNET.API/Entities/ProcessMetric.cs new file mode 100644 index 0000000..79cab89 --- /dev/null +++ b/ElectronNET.API/Entities/ProcessMetric.cs @@ -0,0 +1,25 @@ +namespace ElectronNET.API.Entities +{ + public class ProcessMetric + { + /// + /// CPU usage of the process. + /// + public CPUUsage Cpu { get; set; } + + /// + /// Memory information for the process. + /// + public MemoryInfo Memory {get; set;} + + /// + /// Process id of the process. + /// + public int Pid { get; set; } + + /// + /// Process type (Browser or Tab or GPU etc). + /// + public string Type { get; set; } + } +} diff --git a/ElectronNET.API/Entities/UserTask.cs b/ElectronNET.API/Entities/UserTask.cs new file mode 100644 index 0000000..1b37d67 --- /dev/null +++ b/ElectronNET.API/Entities/UserTask.cs @@ -0,0 +1,12 @@ +namespace ElectronNET.API.Entities +{ + public class UserTask + { + public string Arguments { get; set; } + public string Description { get; set; } + public int IconIndex { get; set; } + public string IconPath { get; set; } + public string Program { get; set; } + public string Title { get; set; } + } +} diff --git a/ElectronNET.CLI/ElectronNET.CLI.csproj b/ElectronNET.CLI/ElectronNET.CLI.csproj index f8dc6f7..3a7efa6 100644 --- a/ElectronNET.CLI/ElectronNET.CLI.csproj +++ b/ElectronNET.CLI/ElectronNET.CLI.csproj @@ -34,8 +34,4 @@ - - - - diff --git a/ElectronNET.Host/api/app.js b/ElectronNET.Host/api/app.js index 0190e5b..aba7a4f 100644 --- a/ElectronNET.Host/api/app.js +++ b/ElectronNET.Host/api/app.js @@ -28,5 +28,167 @@ module.exports = function (socket, app) { var path = app.getPath(name); socket.emit('appGetPathCompleted', path); }); + socket.on('appGetFileIcon', function (path, options) { + if (options) { + app.getFileIcon(path, options, function (error, nativeImage) { + socket.emit('appGetFileIconCompleted', [error, nativeImage]); + }); + } + else { + app.getFileIcon(path, function (error, nativeImage) { + socket.emit('appGetFileIconCompleted', [error, nativeImage]); + }); + } + }); + socket.on('appSetPath', function (name, path) { + app.setPath(name, path); + }); + socket.on('appGetVersion', function () { + var version = app.getVersion(); + socket.emit('appGetVersionCompleted', version); + }); + socket.on('appGetName', function () { + var name = app.getName(); + socket.emit('appGetNameCompleted', name); + }); + socket.on('appSetName', function (name) { + app.setName(name); + }); + socket.on('appGetLocale', function () { + var locale = app.getLocale(); + socket.emit('appGetLocaleCompleted', locale); + }); + socket.on('appAddRecentDocument', function (path) { + app.addRecentDocument(path); + }); + socket.on('appClearRecentDocuments', function () { + app.clearRecentDocuments(); + }); + socket.on('appSetAsDefaultProtocolClient', function (protocol, path, args) { + var success = app.setAsDefaultProtocolClient(protocol, path, args); + socket.emit('appSetAsDefaultProtocolClientCompleted', success); + }); + socket.on('appRemoveAsDefaultProtocolClient', function (protocol, path, args) { + var success = app.removeAsDefaultProtocolClient(protocol, path, args); + socket.emit('appRemoveAsDefaultProtocolClientCompleted', success); + }); + socket.on('appIsDefaultProtocolClient', function (protocol, path, args) { + var success = app.isDefaultProtocolClient(protocol, path, args); + socket.emit('appIsDefaultProtocolClientCompleted', success); + }); + socket.on('appSetUserTasks', function (tasks) { + var success = app.setUserTasks(tasks); + socket.emit('appSetUserTasksCompleted', success); + }); + socket.on('appGetJumpListSettings', function () { + var jumpListSettings = app.getJumpListSettings(); + socket.emit('appGetJumpListSettingsCompleted', jumpListSettings); + }); + socket.on('appSetJumpList', function (categories) { + app.setJumpList(categories); + }); + socket.on('appMakeSingleInstance', function () { + var success = app.makeSingleInstance(function (args, workingDirectory) { + socket.emit('newInstanceOpened', [args, workingDirectory]); + }); + socket.emit('appMakeSingleInstanceCompleted', success); + }); + socket.on('appReleaseSingleInstance', function () { + app.releaseSingleInstance(); + }); + socket.on('appSetUserActivity', function (type, userInfo, webpageURL) { + app.setUserActivity(type, userInfo, webpageURL); + }); + socket.on('appGetCurrentActivityType', function () { + var activityType = app.getCurrentActivityType(); + socket.emit('appGetCurrentActivityTypeCompleted', activityType); + }); + socket.on('appSetAppUserModelId', function (id) { + app.setAppUserModelId(id); + }); + socket.on('appImportCertificate', function (options) { + app.importCertificate(options, function (result) { + socket.emit('appImportCertificateCompleted', result); + }); + }); + socket.on('appGetAppMetrics', function () { + var processMetrics = app.getAppMetrics(); + socket.emit('appGetAppMetricsCompleted', processMetrics); + }); + socket.on('appGetGpuFeatureStatus', function () { + // TS Workaround - TS say getGpuFeatureStatus - but it is getGPUFeatureStatus + var x = app; + var gpuFeatureStatus = x.getGPUFeatureStatus(); + socket.emit('appGetGpuFeatureStatusCompleted', gpuFeatureStatus); + }); + socket.on('appSetBadgeCount', function (count) { + var success = app.setBadgeCount(count); + socket.emit('appSetBadgeCountCompleted', success); + }); + socket.on('appGetBadgeCount', function () { + var count = app.getBadgeCount(); + socket.emit('appGetBadgeCountCompleted', count); + }); + socket.on('appIsUnityRunning', function () { + var isUnityRunning = app.isUnityRunning(); + socket.emit('appIsUnityRunningCompleted', isUnityRunning); + }); + socket.on('appGetLoginItemSettings', function (options) { + var loginItemSettings = app.getLoginItemSettings(options); + socket.emit('appGetLoginItemSettingsCompleted', loginItemSettings); + }); + socket.on('appSetLoginItemSettings', function (settings) { + app.setLoginItemSettings(settings); + }); + socket.on('appIsAccessibilitySupportEnabled', function () { + var isAccessibilitySupportEnabled = app.isAccessibilitySupportEnabled(); + socket.emit('appIsAccessibilitySupportEnabledCompleted', isAccessibilitySupportEnabled); + }); + socket.on('appSetAboutPanelOptions', function (options) { + app.setAboutPanelOptions(options); + }); + socket.on('appCommandLineAppendSwitch', function (theSwitch, value) { + app.commandLine.appendSwitch(theSwitch, value); + }); + socket.on('appCommandLineAppendArgument', function (value) { + app.commandLine.appendArgument(value); + }); + socket.on('appEnableMixedSandbox', function () { + app.enableMixedSandbox(); + }); + socket.on('appDockBounce', function (type) { + var id = app.dock.bounce(type); + socket.emit('appDockBounceCompleted', id); + }); + socket.on('appDockCancelBounce', function (id) { + app.dock.cancelBounce(id); + }); + socket.on('appDockDownloadFinished', function (filePath) { + app.dock.downloadFinished(filePath); + }); + socket.on('appDockSetBadge', function (text) { + app.dock.setBadge(text); + }); + socket.on('appDockGetBadge', function () { + var text = app.dock.getBadge(); + socket.emit('appDockGetBadgeCompleted', text); + }); + socket.on('appDockHide', function () { + app.dock.hide(); + }); + socket.on('appDockShow', function () { + app.dock.show(); + }); + socket.on('appDockIsVisible', function () { + var isVisible = app.dock.isVisible(); + socket.emit('appDockIsVisibleCompleted', isVisible); + }); + // TODO: Menü Lösung muss noch implementiert werden + socket.on('appDockSetMenu', function (menu) { + app.dock.setMenu(menu); + }); + socket.on('appDockSetIcon', function (image) { + app.dock.setIcon(image); + }); }; //# sourceMappingURL=app.js.map \ No newline at end of file diff --git a/ElectronNET.Host/api/app.js.map b/ElectronNET.Host/api/app.js.map index 44b340f..3e3c634 100644 --- a/ElectronNET.Host/api/app.js.map +++ b/ElectronNET.Host/api/app.js.map @@ -1 +1 @@ -{"version":3,"file":"app.js","sourceRoot":"","sources":["app.ts"],"names":[],"mappings":";;AAEA,MAAM,CAAC,OAAO,GAAG,UAAC,MAAuB,EAAE,GAAiB;IAExD,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE;QACjB,GAAG,CAAC,IAAI,EAAE,CAAC;IACf,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,UAAC,QAAY;QAAZ,yBAAA,EAAA,YAAY;QAC9B,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,aAAa,EAAE,UAAC,OAAO;QAC7B,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC1B,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,UAAU,EAAE;QAClB,GAAG,CAAC,KAAK,EAAE,CAAC;IAChB,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE;QACjB,GAAG,CAAC,IAAI,EAAE,CAAC;IACf,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE;QACjB,GAAG,CAAC,IAAI,EAAE,CAAC;IACf,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,eAAe,EAAE;QACvB,IAAM,IAAI,GAAG,GAAG,CAAC,UAAU,EAAE,CAAC;QAC9B,MAAM,CAAC,IAAI,CAAC,wBAAwB,EAAE,IAAI,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,YAAY,EAAE,UAAC,IAAI;QACzB,IAAM,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC/B,MAAM,CAAC,IAAI,CAAC,qBAAqB,EAAE,IAAI,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;AACP,CAAC,CAAA"} \ No newline at end of file +{"version":3,"file":"app.js","sourceRoot":"","sources":["app.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/ElectronNET.Host/api/app.ts b/ElectronNET.Host/api/app.ts index e13c153..2490111 100644 --- a/ElectronNET.Host/api/app.ts +++ b/ElectronNET.Host/api/app.ts @@ -1,11 +1,11 @@ -import {} from 'electron'; +import { nativeImage as NativeImage } from 'electron'; module.exports = (socket: SocketIO.Server, app: Electron.App) => { socket.on('appQuit', () => { app.quit(); }); - + socket.on('appExit', (exitCode = 0) => { app.exit(exitCode); }); @@ -25,7 +25,7 @@ module.exports = (socket: SocketIO.Server, app: Electron.App) => { socket.on('appShow', () => { app.show(); }); - + socket.on('appGetAppPath', () => { const path = app.getAppPath(); socket.emit('appGetAppPathCompleted', path); @@ -33,6 +33,221 @@ module.exports = (socket: SocketIO.Server, app: Electron.App) => { socket.on('appGetPath', (name) => { const path = app.getPath(name); - socket.emit('appGetPathCompleted', path); - }); + socket.emit('appGetPathCompleted', path); + }); + + // const nativeImages = {}; + + // function addNativeImage(nativeImage: Electron.NativeImage) { + + // if(Object.keys(nativeImages).length === 0) { + // nativeImage['1'] = nativeImage; + // } else { + // let indexCount = Object.keys(nativeImages).length + 1; + // nativeImage[indexCount] = nativeImage; + // } + // } + + socket.on('appGetFileIcon', (path, options) => { + if(options) { + app.getFileIcon(path, options, (error, nativeImage) => { + socket.emit('appGetFileIconCompleted', [error, nativeImage]); + }); + } else { + app.getFileIcon(path, (error, nativeImage) => { + socket.emit('appGetFileIconCompleted', [error, nativeImage]); + }); + } + }); + + socket.on('appSetPath', (name, path) => { + app.setPath(name, path); + }); + + socket.on('appGetVersion', () => { + const version = app.getVersion(); + socket.emit('appGetVersionCompleted', version); + }); + + socket.on('appGetName', () => { + const name = app.getName(); + socket.emit('appGetNameCompleted', name); + }); + + socket.on('appSetName', (name) => { + app.setName(name); + }); + + socket.on('appGetLocale', () => { + const locale = app.getLocale(); + socket.emit('appGetLocaleCompleted', locale); + }); + + socket.on('appAddRecentDocument', (path) => { + app.addRecentDocument(path); + }); + + socket.on('appClearRecentDocuments', () => { + app.clearRecentDocuments(); + }); + + socket.on('appSetAsDefaultProtocolClient', (protocol, path, args) => { + const success = app.setAsDefaultProtocolClient(protocol, path, args); + socket.emit('appSetAsDefaultProtocolClientCompleted', success); + }); + + socket.on('appRemoveAsDefaultProtocolClient', (protocol, path, args) => { + const success = app.removeAsDefaultProtocolClient(protocol, path, args); + socket.emit('appRemoveAsDefaultProtocolClientCompleted', success); + }); + + socket.on('appIsDefaultProtocolClient', (protocol, path, args) => { + const success = app.isDefaultProtocolClient(protocol, path, args); + socket.emit('appIsDefaultProtocolClientCompleted', success); + }); + + socket.on('appSetUserTasks', (tasks) => { + const success = app.setUserTasks(tasks); + socket.emit('appSetUserTasksCompleted', success); + }); + + socket.on('appGetJumpListSettings', () => { + const jumpListSettings = app.getJumpListSettings(); + socket.emit('appGetJumpListSettingsCompleted', jumpListSettings); + }); + + socket.on('appSetJumpList', (categories) => { + app.setJumpList(categories); + }); + + socket.on('appMakeSingleInstance', () => { + const success = app.makeSingleInstance((args, workingDirectory) => { + socket.emit('newInstanceOpened', [args, workingDirectory]); + }); + socket.emit('appMakeSingleInstanceCompleted', success); + }); + + socket.on('appReleaseSingleInstance', () => { + app.releaseSingleInstance(); + }); + + socket.on('appSetUserActivity', (type, userInfo, webpageURL) => { + app.setUserActivity(type, userInfo, webpageURL); + }); + + socket.on('appGetCurrentActivityType', () => { + const activityType = app.getCurrentActivityType(); + socket.emit('appGetCurrentActivityTypeCompleted', activityType); + }); + + socket.on('appSetAppUserModelId', (id) => { + app.setAppUserModelId(id); + }); + + socket.on('appImportCertificate', (options) => { + app.importCertificate(options, (result) => { + socket.emit('appImportCertificateCompleted', result); + }); + }); + + socket.on('appGetAppMetrics', () => { + const processMetrics = app.getAppMetrics(); + socket.emit('appGetAppMetricsCompleted', processMetrics); + }); + + socket.on('appGetGpuFeatureStatus', () => { + // TS Workaround - TS say getGpuFeatureStatus - but it is getGPUFeatureStatus + let x = app; + const gpuFeatureStatus = x.getGPUFeatureStatus(); + socket.emit('appGetGpuFeatureStatusCompleted', gpuFeatureStatus); + }); + + socket.on('appSetBadgeCount', (count) => { + const success = app.setBadgeCount(count); + socket.emit('appSetBadgeCountCompleted', success); + }); + + socket.on('appGetBadgeCount', () => { + const count = app.getBadgeCount(); + socket.emit('appGetBadgeCountCompleted', count); + }); + + socket.on('appIsUnityRunning', () => { + const isUnityRunning = app.isUnityRunning(); + socket.emit('appIsUnityRunningCompleted', isUnityRunning); + }); + + socket.on('appGetLoginItemSettings', (options) => { + const loginItemSettings = app.getLoginItemSettings(options); + socket.emit('appGetLoginItemSettingsCompleted', loginItemSettings); + }); + + socket.on('appSetLoginItemSettings', (settings) => { + app.setLoginItemSettings(settings); + }); + + socket.on('appIsAccessibilitySupportEnabled', () => { + const isAccessibilitySupportEnabled = app.isAccessibilitySupportEnabled(); + socket.emit('appIsAccessibilitySupportEnabledCompleted', isAccessibilitySupportEnabled); + }); + + socket.on('appSetAboutPanelOptions', (options) => { + app.setAboutPanelOptions(options); + }); + + socket.on('appCommandLineAppendSwitch', (theSwitch, value) => { + app.commandLine.appendSwitch(theSwitch, value); + }); + + socket.on('appCommandLineAppendArgument', (value) => { + app.commandLine.appendArgument(value); + }); + + socket.on('appEnableMixedSandbox', () => { + app.enableMixedSandbox(); + }); + + socket.on('appDockBounce', (type) => { + const id = app.dock.bounce(type); + socket.emit('appDockBounceCompleted', id); + }); + + socket.on('appDockCancelBounce', (id) => { + app.dock.cancelBounce(id); + }); + + socket.on('appDockDownloadFinished', (filePath) => { + app.dock.downloadFinished(filePath); + }); + + socket.on('appDockSetBadge', (text) => { + app.dock.setBadge(text); + }); + + socket.on('appDockGetBadge', () => { + const text = app.dock.getBadge(); + socket.emit('appDockGetBadgeCompleted', text); + }); + + socket.on('appDockHide', () => { + app.dock.hide(); + }); + + socket.on('appDockShow', () => { + app.dock.show(); + }); + + socket.on('appDockIsVisible', () => { + const isVisible = app.dock.isVisible(); + socket.emit('appDockIsVisibleCompleted', isVisible); + }); + + // TODO: Menü Lösung muss noch implementiert werden + socket.on('appDockSetMenu', (menu) => { + app.dock.setMenu(menu); + }); + + socket.on('appDockSetIcon', (image) => { + app.dock.setIcon(image); + }); } \ No newline at end of file diff --git a/ElectronNET.Host/main.js b/ElectronNET.Host/main.js index 242e236..e22ac47 100644 --- a/ElectronNET.Host/main.js +++ b/ElectronNET.Host/main.js @@ -20,9 +20,6 @@ function startSocketApiBridge(port) { appApi = require('./api/app')(socket, app); socket.on('createBrowserWindow', (options) => { - console.log(options); - options.show = true; - window = new BrowserWindow(options); window.loadURL(loadURL); @@ -45,14 +42,14 @@ function startSocketApiBridge(port) { function startAspCoreBackend(electronPort) { portfinder(8000, (error, electronWebPort) => { loadURL = `http://localhost:${electronWebPort}` - const arguments = [`/electronPort=${electronPort}`, `/electronWebPort=${electronWebPort}`]; + const params = [`/electronPort=${electronPort}`, `/electronWebPort=${electronWebPort}`]; var binPath = path.join(__dirname, 'bin'); fs.readdir(binPath, (error, files) => { const exeFiles = files.filter((name) => name.indexOf('.exe') > -1); const exeFileName = exeFiles[0]; const apipath = path.join(binPath, exeFileName); - apiProcess = process(apipath, arguments); + apiProcess = process(apipath, params); apiProcess.stdout.on('data', (data) => { var text = data.toString(); diff --git a/ElectronNET.WebApp/Controllers/HomeController.cs b/ElectronNET.WebApp/Controllers/HomeController.cs index f447614..1de15fa 100644 --- a/ElectronNET.WebApp/Controllers/HomeController.cs +++ b/ElectronNET.WebApp/Controllers/HomeController.cs @@ -1,6 +1,8 @@ using Microsoft.AspNetCore.Mvc; using ElectronNET.API; using ElectronNET.API.Entities; +using System; +using System.IO; namespace ElectronNET.WebApp.Controllers { @@ -21,7 +23,13 @@ namespace ElectronNET.WebApp.Controllers App.IpcMain.On("GetPath", async (args) => { string pathName = await App.GetPathAsync(PathName.pictures); - App.IpcMain.Send("GetPathComplete", pathName); + //App.IpcMain.Send("GetPathComplete", pathName); + + var result = await App.GetPathAsync(PathName.exe); + //var imagePath = Path.Combine(result, "Electron.png"); + App.IpcMain.Send("GetPathComplete", result); + + var image = await App.GetFileIconAsync(result); }); return View();