├── .gitattributes ├── .gitignore ├── ElectronNET-API-Demos.sln ├── ElectronNET-API-Demos ├── Assets │ ├── electron.ico │ └── electron_32x32.png ├── Controllers │ ├── AboutController.cs │ ├── AppSysInformationController.cs │ ├── ClipboardController.cs │ ├── CrashHangController.cs │ ├── DesktopCapturerController.cs │ ├── DialogsController.cs │ ├── HomeController.cs │ ├── IpcController.cs │ ├── MenusController.cs │ ├── NotificationsController.cs │ ├── PdfController.cs │ ├── ProgressBarController.cs │ ├── ShellController.cs │ ├── ShortcutsController.cs │ ├── TrayController.cs │ └── WindowsController.cs ├── ElectronNET-API-Demos.csproj ├── Program.cs ├── Properties │ └── launchSettings.json ├── Startup.cs ├── Views │ ├── About │ │ └── Index.cshtml │ ├── AppSysInformation │ │ └── Index.cshtml │ ├── Clipboard │ │ └── Index.cshtml │ ├── CrashHang │ │ ├── Index.cshtml │ │ ├── ProcessCrash.cshtml │ │ └── ProcessHang.cshtml │ ├── DesktopCapturer │ │ └── Index.cshtml │ ├── Dialogs │ │ └── Index.cshtml │ ├── Home │ │ └── Index.cshtml │ ├── Ipc │ │ └── Index.cshtml │ ├── Menus │ │ └── Index.cshtml │ ├── Notifications │ │ └── Index.cshtml │ ├── Pdf │ │ └── Index.cshtml │ ├── ProgressBar │ │ └── Index.cshtml │ ├── Shell │ │ └── Index.cshtml │ ├── Shortcuts │ │ └── Index.cshtml │ ├── Tray │ │ └── Index.cshtml │ └── Windows │ │ ├── DemoWindow.cshtml │ │ ├── HandleErrorCrashes.cshtml │ │ └── Index.cshtml ├── electron.manifest.json └── wwwroot │ └── assets │ ├── app-icon │ ├── mac │ │ └── app.icns │ ├── png │ │ ├── 1024.png │ │ ├── 128.png │ │ ├── 16.png │ │ ├── 24.png │ │ ├── 256.png │ │ ├── 32.png │ │ ├── 48.png │ │ ├── 512.png │ │ └── 64.png │ └── win │ │ └── app.ico │ ├── code-blocks.js │ ├── css │ ├── about.css │ ├── demo.css │ ├── fonts │ │ ├── SourceCodePro-Regular.ttf │ │ ├── SourceSansPro-Black.otf │ │ ├── SourceSansPro-BlackIt.otf │ │ ├── SourceSansPro-Bold.otf │ │ ├── SourceSansPro-BoldIt.otf │ │ ├── SourceSansPro-ExtraLight.otf │ │ ├── SourceSansPro-ExtraLightIt.otf │ │ ├── SourceSansPro-It.otf │ │ ├── SourceSansPro-Light.otf │ │ ├── SourceSansPro-LightIt.otf │ │ ├── SourceSansPro-Regular.otf │ │ ├── SourceSansPro-Semibold.otf │ │ └── SourceSansPro-SemiboldIt.otf │ ├── github.css │ ├── global.css │ ├── highlight.min.css │ ├── nativize.css │ ├── nav.css │ ├── print.css │ ├── section.css │ └── variables.css │ ├── demo-btns.js │ ├── ex-links.js │ ├── highlight.min.js │ ├── img │ ├── about.png │ ├── about@2x.png │ ├── diagram.png │ ├── heart.jpg │ ├── icons.svg │ ├── loading.gif │ ├── programming.png │ └── ui-terminology.png │ ├── imports.js │ ├── mac │ ├── child.plist │ ├── info.plist │ └── parent.plist │ ├── nav.js │ └── tiles │ ├── SampleAppx.150x150.png │ ├── SampleAppx.310x150.png │ ├── SampleAppx.44x44.png │ └── SampleAppx.50x50.png ├── LICENSE └── README.md /.gitattributes: -------------------------------------------------------------------------------- 1 | ############################################################################### 2 | # Set default behavior to automatically normalize line endings. 3 | ############################################################################### 4 | * text=auto 5 | 6 | ############################################################################### 7 | # Set default behavior for command prompt diff. 8 | # 9 | # This is need for earlier builds of msysgit that does not have it on by 10 | # default for csharp files. 11 | # Note: This is only used by command line 12 | ############################################################################### 13 | #*.cs diff=csharp 14 | 15 | ############################################################################### 16 | # Set the merge driver for project and solution files 17 | # 18 | # Merging from the command prompt will add diff markers to the files if there 19 | # are conflicts (Merging from VS is not affected by the settings below, in VS 20 | # the diff markers are never inserted). Diff markers may cause the following 21 | # file extensions to fail to load in VS. An alternative would be to treat 22 | # these files as binary and thus will always conflict and require user 23 | # intervention with every merge. To do so, just uncomment the entries below 24 | ############################################################################### 25 | #*.sln merge=binary 26 | #*.csproj merge=binary 27 | #*.vbproj merge=binary 28 | #*.vcxproj merge=binary 29 | #*.vcproj merge=binary 30 | #*.dbproj merge=binary 31 | #*.fsproj merge=binary 32 | #*.lsproj merge=binary 33 | #*.wixproj merge=binary 34 | #*.modelproj merge=binary 35 | #*.sqlproj merge=binary 36 | #*.wwaproj merge=binary 37 | 38 | ############################################################################### 39 | # behavior for image files 40 | # 41 | # image files are treated as binary by default. 42 | ############################################################################### 43 | #*.jpg binary 44 | #*.png binary 45 | #*.gif binary 46 | 47 | ############################################################################### 48 | # diff behavior for common document formats 49 | # 50 | # Convert binary document formats to text before diffing them. This feature 51 | # is only available from the command line. Turn it on by uncommenting the 52 | # entries below. 53 | ############################################################################### 54 | #*.doc diff=astextplain 55 | #*.DOC diff=astextplain 56 | #*.docx diff=astextplain 57 | #*.DOCX diff=astextplain 58 | #*.dot diff=astextplain 59 | #*.DOT diff=astextplain 60 | #*.pdf diff=astextplain 61 | #*.PDF diff=astextplain 62 | #*.rtf diff=astextplain 63 | #*.RTF diff=astextplain 64 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | ## Ignore Visual Studio temporary files, build results, and 2 | ## files generated by popular Visual Studio add-ons. 3 | ## 4 | ## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore 5 | 6 | # User-specific files 7 | *.rsuser 8 | *.suo 9 | *.user 10 | *.userosscache 11 | *.sln.docstates 12 | 13 | # User-specific files (MonoDevelop/Xamarin Studio) 14 | *.userprefs 15 | 16 | # Build results 17 | [Dd]ebug/ 18 | [Dd]ebugPublic/ 19 | [Rr]elease/ 20 | [Rr]eleases/ 21 | x64/ 22 | x86/ 23 | [Aa][Rr][Mm]/ 24 | [Aa][Rr][Mm]64/ 25 | bld/ 26 | [Bb]in/ 27 | [Oo]bj/ 28 | [Ll]og/ 29 | 30 | # Visual Studio 2015/2017 cache/options directory 31 | .vs/ 32 | # Uncomment if you have tasks that create the project's static files in wwwroot 33 | #wwwroot/ 34 | 35 | # Visual Studio 2017 auto generated files 36 | Generated\ Files/ 37 | 38 | # MSTest test Results 39 | [Tt]est[Rr]esult*/ 40 | [Bb]uild[Ll]og.* 41 | 42 | # NUNIT 43 | *.VisualState.xml 44 | TestResult.xml 45 | 46 | # Build Results of an ATL Project 47 | [Dd]ebugPS/ 48 | [Rr]eleasePS/ 49 | dlldata.c 50 | 51 | # Benchmark Results 52 | BenchmarkDotNet.Artifacts/ 53 | 54 | # .NET Core 55 | project.lock.json 56 | project.fragment.lock.json 57 | artifacts/ 58 | 59 | # StyleCop 60 | StyleCopReport.xml 61 | 62 | # Files built by Visual Studio 63 | *_i.c 64 | *_p.c 65 | *_h.h 66 | *.ilk 67 | *.meta 68 | *.obj 69 | *.iobj 70 | *.pch 71 | *.pdb 72 | *.ipdb 73 | *.pgc 74 | *.pgd 75 | *.rsp 76 | *.sbr 77 | *.tlb 78 | *.tli 79 | *.tlh 80 | *.tmp 81 | *.tmp_proj 82 | *_wpftmp.csproj 83 | *.log 84 | *.vspscc 85 | *.vssscc 86 | .builds 87 | *.pidb 88 | *.svclog 89 | *.scc 90 | 91 | # Chutzpah Test files 92 | _Chutzpah* 93 | 94 | # Visual C++ cache files 95 | ipch/ 96 | *.aps 97 | *.ncb 98 | *.opendb 99 | *.opensdf 100 | *.sdf 101 | *.cachefile 102 | *.VC.db 103 | *.VC.VC.opendb 104 | 105 | # Visual Studio profiler 106 | *.psess 107 | *.vsp 108 | *.vspx 109 | *.sap 110 | 111 | # Visual Studio Trace Files 112 | *.e2e 113 | 114 | # TFS 2012 Local Workspace 115 | $tf/ 116 | 117 | # Guidance Automation Toolkit 118 | *.gpState 119 | 120 | # ReSharper is a .NET coding add-in 121 | _ReSharper*/ 122 | *.[Rr]e[Ss]harper 123 | *.DotSettings.user 124 | 125 | # JustCode is a .NET coding add-in 126 | .JustCode 127 | 128 | # TeamCity is a build add-in 129 | _TeamCity* 130 | 131 | # DotCover is a Code Coverage Tool 132 | *.dotCover 133 | 134 | # AxoCover is a Code Coverage Tool 135 | .axoCover/* 136 | !.axoCover/settings.json 137 | 138 | # Visual Studio code coverage results 139 | *.coverage 140 | *.coveragexml 141 | 142 | # NCrunch 143 | _NCrunch_* 144 | .*crunch*.local.xml 145 | nCrunchTemp_* 146 | 147 | # MightyMoose 148 | *.mm.* 149 | AutoTest.Net/ 150 | 151 | # Web workbench (sass) 152 | .sass-cache/ 153 | 154 | # Installshield output folder 155 | [Ee]xpress/ 156 | 157 | # DocProject is a documentation generator add-in 158 | DocProject/buildhelp/ 159 | DocProject/Help/*.HxT 160 | DocProject/Help/*.HxC 161 | DocProject/Help/*.hhc 162 | DocProject/Help/*.hhk 163 | DocProject/Help/*.hhp 164 | DocProject/Help/Html2 165 | DocProject/Help/html 166 | 167 | # Click-Once directory 168 | publish/ 169 | 170 | # Publish Web Output 171 | *.[Pp]ublish.xml 172 | *.azurePubxml 173 | # Note: Comment the next line if you want to checkin your web deploy settings, 174 | # but database connection strings (with potential passwords) will be unencrypted 175 | *.pubxml 176 | *.publishproj 177 | 178 | # Microsoft Azure Web App publish settings. Comment the next line if you want to 179 | # checkin your Azure Web App publish settings, but sensitive information contained 180 | # in these scripts will be unencrypted 181 | PublishScripts/ 182 | 183 | # NuGet Packages 184 | *.nupkg 185 | # The packages folder can be ignored because of Package Restore 186 | **/[Pp]ackages/* 187 | # except build/, which is used as an MSBuild target. 188 | !**/[Pp]ackages/build/ 189 | # Uncomment if necessary however generally it will be regenerated when needed 190 | #!**/[Pp]ackages/repositories.config 191 | # NuGet v3's project.json files produces more ignorable files 192 | *.nuget.props 193 | *.nuget.targets 194 | 195 | # Microsoft Azure Build Output 196 | csx/ 197 | *.build.csdef 198 | 199 | # Microsoft Azure Emulator 200 | ecf/ 201 | rcf/ 202 | 203 | # Windows Store app package directories and files 204 | AppPackages/ 205 | BundleArtifacts/ 206 | Package.StoreAssociation.xml 207 | _pkginfo.txt 208 | *.appx 209 | 210 | # Visual Studio cache files 211 | # files ending in .cache can be ignored 212 | *.[Cc]ache 213 | # but keep track of directories ending in .cache 214 | !?*.[Cc]ache/ 215 | 216 | # Others 217 | ClientBin/ 218 | ~$* 219 | *~ 220 | *.dbmdl 221 | *.dbproj.schemaview 222 | *.jfm 223 | *.pfx 224 | *.publishsettings 225 | orleans.codegen.cs 226 | 227 | # Including strong name files can present a security risk 228 | # (https://github.com/github/gitignore/pull/2483#issue-259490424) 229 | #*.snk 230 | 231 | # Since there are multiple workflows, uncomment next line to ignore bower_components 232 | # (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) 233 | #bower_components/ 234 | 235 | # RIA/Silverlight projects 236 | Generated_Code/ 237 | 238 | # Backup & report files from converting an old project file 239 | # to a newer Visual Studio version. Backup files are not needed, 240 | # because we have git ;-) 241 | _UpgradeReport_Files/ 242 | Backup*/ 243 | UpgradeLog*.XML 244 | UpgradeLog*.htm 245 | ServiceFabricBackup/ 246 | *.rptproj.bak 247 | 248 | # SQL Server files 249 | *.mdf 250 | *.ldf 251 | *.ndf 252 | 253 | # Business Intelligence projects 254 | *.rdl.data 255 | *.bim.layout 256 | *.bim_*.settings 257 | *.rptproj.rsuser 258 | *- Backup*.rdl 259 | 260 | # Microsoft Fakes 261 | FakesAssemblies/ 262 | 263 | # GhostDoc plugin setting file 264 | *.GhostDoc.xml 265 | 266 | # Node.js Tools for Visual Studio 267 | .ntvs_analysis.dat 268 | node_modules/ 269 | 270 | # Visual Studio 6 build log 271 | *.plg 272 | 273 | # Visual Studio 6 workspace options file 274 | *.opt 275 | 276 | # Visual Studio 6 auto-generated workspace file (contains which files were open etc.) 277 | *.vbw 278 | 279 | # Visual Studio LightSwitch build output 280 | **/*.HTMLClient/GeneratedArtifacts 281 | **/*.DesktopClient/GeneratedArtifacts 282 | **/*.DesktopClient/ModelManifest.xml 283 | **/*.Server/GeneratedArtifacts 284 | **/*.Server/ModelManifest.xml 285 | _Pvt_Extensions 286 | 287 | # Paket dependency manager 288 | .paket/paket.exe 289 | paket-files/ 290 | 291 | # FAKE - F# Make 292 | .fake/ 293 | 294 | # JetBrains Rider 295 | .idea/ 296 | *.sln.iml 297 | 298 | # CodeRush personal settings 299 | .cr/personal 300 | 301 | # Python Tools for Visual Studio (PTVS) 302 | __pycache__/ 303 | *.pyc 304 | 305 | # Cake - Uncomment if you are using it 306 | # tools/** 307 | # !tools/packages.config 308 | 309 | # Tabs Studio 310 | *.tss 311 | 312 | # Telerik's JustMock configuration file 313 | *.jmconfig 314 | 315 | # BizTalk build output 316 | *.btp.cs 317 | *.btm.cs 318 | *.odx.cs 319 | *.xsd.cs 320 | 321 | # OpenCover UI analysis results 322 | OpenCover/ 323 | 324 | # Azure Stream Analytics local run output 325 | ASALocalRun/ 326 | 327 | # MSBuild Binary and Structured Log 328 | *.binlog 329 | 330 | # NVidia Nsight GPU debugger configuration file 331 | *.nvuser 332 | 333 | # MFractors (Xamarin productivity tool) working folder 334 | .mfractor/ 335 | 336 | # Local History for Visual Studio 337 | .localhistory/ 338 | 339 | # BeatPulse healthcheck temp database 340 | healthchecksdb -------------------------------------------------------------------------------- /ElectronNET-API-Demos.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio 15 4 | VisualStudioVersion = 15.0.27004.2005 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ElectronNET-API-Demos", "ElectronNET-API-Demos\ElectronNET-API-Demos.csproj", "{09F507C4-B82B-48E6-A48D-EBCB523778A6}" 7 | EndProject 8 | Global 9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 10 | Debug|Any CPU = Debug|Any CPU 11 | Release|Any CPU = Release|Any CPU 12 | EndGlobalSection 13 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 14 | {09F507C4-B82B-48E6-A48D-EBCB523778A6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 15 | {09F507C4-B82B-48E6-A48D-EBCB523778A6}.Debug|Any CPU.Build.0 = Debug|Any CPU 16 | {09F507C4-B82B-48E6-A48D-EBCB523778A6}.Release|Any CPU.ActiveCfg = Release|Any CPU 17 | {09F507C4-B82B-48E6-A48D-EBCB523778A6}.Release|Any CPU.Build.0 = Release|Any CPU 18 | EndGlobalSection 19 | GlobalSection(SolutionProperties) = preSolution 20 | HideSolutionNode = FALSE 21 | EndGlobalSection 22 | GlobalSection(ExtensibilityGlobals) = postSolution 23 | SolutionGuid = {A5D3C61E-42EE-4B86-AE69-93AB985E2538} 24 | EndGlobalSection 25 | EndGlobal 26 | -------------------------------------------------------------------------------- /ElectronNET-API-Demos/Assets/electron.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/electron.net-api-demos/97f2af56545b718ee87ca1e395a05a4413a117a9/ElectronNET-API-Demos/Assets/electron.ico -------------------------------------------------------------------------------- /ElectronNET-API-Demos/Assets/electron_32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/electron.net-api-demos/97f2af56545b718ee87ca1e395a05a4413a117a9/ElectronNET-API-Demos/Assets/electron_32x32.png -------------------------------------------------------------------------------- /ElectronNET-API-Demos/Controllers/AboutController.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.AspNetCore.Mvc; 2 | 3 | namespace ElectronNET_API_Demos.Controllers 4 | { 5 | public class AboutController : Controller 6 | { 7 | public IActionResult Index() 8 | { 9 | return View(); 10 | } 11 | } 12 | } -------------------------------------------------------------------------------- /ElectronNET-API-Demos/Controllers/AppSysInformationController.cs: -------------------------------------------------------------------------------- 1 | using System.Linq; 2 | using Microsoft.AspNetCore.Mvc; 3 | using ElectronNET.API; 4 | using ElectronNET.API.Entities; 5 | 6 | namespace ElectronNET_API_Demos.Controllers 7 | { 8 | public class AppSysInformationController : Controller 9 | { 10 | public IActionResult Index() 11 | { 12 | if(HybridSupport.IsElectronActive) 13 | { 14 | Electron.IpcMain.On("app-info", async (args) => 15 | { 16 | string appPath = await Electron.App.GetAppPathAsync(); 17 | 18 | var mainWindow = Electron.WindowManager.BrowserWindows.First(); 19 | Electron.IpcMain.Send(mainWindow, "got-app-path", appPath); 20 | }); 21 | 22 | Electron.IpcMain.On("sys-info", async (args) => 23 | { 24 | string homePath = await Electron.App.GetPathAsync(PathName.home); 25 | 26 | var mainWindow = Electron.WindowManager.BrowserWindows.First(); 27 | Electron.IpcMain.Send(mainWindow, "got-sys-info", homePath); 28 | }); 29 | 30 | Electron.IpcMain.On("screen-info", async (args) => 31 | { 32 | var display = await Electron.Screen.GetPrimaryDisplayAsync(); 33 | 34 | var mainWindow = Electron.WindowManager.BrowserWindows.First(); 35 | Electron.IpcMain.Send(mainWindow, "got-screen-info", display.Size); 36 | }); 37 | } 38 | 39 | return View(); 40 | } 41 | } 42 | } -------------------------------------------------------------------------------- /ElectronNET-API-Demos/Controllers/ClipboardController.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.AspNetCore.Mvc; 2 | using ElectronNET.API; 3 | using System.Linq; 4 | 5 | namespace ElectronNET_API_Demos.Controllers 6 | { 7 | public class ClipboardController : Controller 8 | { 9 | public IActionResult Index() 10 | { 11 | if (HybridSupport.IsElectronActive) 12 | { 13 | Electron.IpcMain.On("copy-to", (text) => 14 | { 15 | Electron.Clipboard.WriteText(text.ToString()); 16 | }); 17 | 18 | Electron.IpcMain.On("paste-to", async (text) => 19 | { 20 | Electron.Clipboard.WriteText(text.ToString()); 21 | string pasteText = await Electron.Clipboard.ReadTextAsync(); 22 | 23 | var mainWindow = Electron.WindowManager.BrowserWindows.First(); 24 | Electron.IpcMain.Send(mainWindow, "paste-from", pasteText); 25 | }); 26 | } 27 | 28 | return View(); 29 | } 30 | } 31 | } -------------------------------------------------------------------------------- /ElectronNET-API-Demos/Controllers/CrashHangController.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.AspNetCore.Mvc; 2 | using ElectronNET.API; 3 | using ElectronNET.API.Entities; 4 | 5 | namespace ElectronNET_API_Demos.Controllers 6 | { 7 | public class CrashHangController : Controller 8 | { 9 | public IActionResult Index() 10 | { 11 | if (HybridSupport.IsElectronActive) 12 | { 13 | Electron.IpcMain.On("process-crash", async (args) => 14 | { 15 | string viewPath = $"http://localhost:{BridgeSettings.WebPort}/crashhang/processcrash"; 16 | 17 | var browserWindow = await Electron.WindowManager.CreateWindowAsync(viewPath); 18 | browserWindow.WebContents.OnCrashed += async (killed) => 19 | { 20 | var options = new MessageBoxOptions("This process has crashed.") 21 | { 22 | Type = MessageBoxType.info, 23 | Title = "Renderer Process Crashed", 24 | Buttons = new string[] { "Reload", "Close" } 25 | }; 26 | var result = await Electron.Dialog.ShowMessageBoxAsync(options); 27 | 28 | if (result.Response == 0) 29 | { 30 | browserWindow.Reload(); 31 | } 32 | else 33 | { 34 | browserWindow.Close(); 35 | } 36 | }; 37 | }); 38 | 39 | Electron.IpcMain.On("process-hang", async (args) => 40 | { 41 | string viewPath = $"http://localhost:{BridgeSettings.WebPort}/crashhang/processhang"; 42 | 43 | var browserWindow = await Electron.WindowManager.CreateWindowAsync(viewPath); 44 | browserWindow.OnUnresponsive += async () => 45 | { 46 | var options = new MessageBoxOptions("This process is hanging.") 47 | { 48 | Type = MessageBoxType.info, 49 | Title = "Renderer Process Hanging", 50 | Buttons = new string[] { "Reload", "Close" } 51 | }; 52 | var result = await Electron.Dialog.ShowMessageBoxAsync(options); 53 | 54 | if (result.Response == 0) 55 | { 56 | browserWindow.Reload(); 57 | } 58 | else 59 | { 60 | browserWindow.Close(); 61 | } 62 | }; 63 | }); 64 | } 65 | 66 | return View(); 67 | } 68 | 69 | public IActionResult ProcessCrash() 70 | { 71 | return View(); 72 | } 73 | 74 | public IActionResult ProcessHang() 75 | { 76 | return View(); 77 | } 78 | } 79 | } -------------------------------------------------------------------------------- /ElectronNET-API-Demos/Controllers/DesktopCapturerController.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.AspNetCore.Mvc; 2 | 3 | namespace ElectronNET_API_Demos.Controllers 4 | { 5 | public class DesktopCapturerController : Controller 6 | { 7 | public IActionResult Index() 8 | { 9 | return View(); 10 | } 11 | } 12 | } -------------------------------------------------------------------------------- /ElectronNET-API-Demos/Controllers/DialogsController.cs: -------------------------------------------------------------------------------- 1 | using System.Linq; 2 | using Microsoft.AspNetCore.Mvc; 3 | using ElectronNET.API; 4 | using ElectronNET.API.Entities; 5 | 6 | namespace ElectronNET_API_Demos.Controllers 7 | { 8 | public class DialogsController : Controller 9 | { 10 | public IActionResult Index() 11 | { 12 | if(HybridSupport.IsElectronActive) 13 | { 14 | Electron.IpcMain.On("select-directory", async (args) => { 15 | var mainWindow = Electron.WindowManager.BrowserWindows.First(); 16 | var options = new OpenDialogOptions 17 | { 18 | Properties = new OpenDialogProperty[] { 19 | OpenDialogProperty.openFile, 20 | OpenDialogProperty.openDirectory 21 | } 22 | }; 23 | 24 | string[] files = await Electron.Dialog.ShowOpenDialogAsync(mainWindow, options); 25 | Electron.IpcMain.Send(mainWindow, "select-directory-reply", files); 26 | }); 27 | 28 | Electron.IpcMain.On("error-dialog", (args) => 29 | { 30 | Electron.Dialog.ShowErrorBox("An Error Message", "Demonstrating an error message."); 31 | }); 32 | 33 | Electron.IpcMain.On("information-dialog", async (args) => 34 | { 35 | var options = new MessageBoxOptions("This is an information dialog. Isn't it nice?") 36 | { 37 | Type = MessageBoxType.info, 38 | Title = "Information", 39 | Buttons = new string[] { "Yes", "No" } 40 | }; 41 | 42 | var result = await Electron.Dialog.ShowMessageBoxAsync(options); 43 | 44 | var mainWindow = Electron.WindowManager.BrowserWindows.First(); 45 | Electron.IpcMain.Send(mainWindow, "information-dialog-reply", result.Response); 46 | }); 47 | 48 | Electron.IpcMain.On("save-dialog", async (args) => 49 | { 50 | var mainWindow = Electron.WindowManager.BrowserWindows.First(); 51 | var options = new SaveDialogOptions 52 | { 53 | Title = "Save an Image", 54 | Filters = new FileFilter[] 55 | { 56 | new FileFilter { Name = "Images", Extensions = new string[] {"jpg", "png", "gif" } } 57 | } 58 | }; 59 | 60 | var result = await Electron.Dialog.ShowSaveDialogAsync(mainWindow, options); 61 | Electron.IpcMain.Send(mainWindow, "save-dialog-reply", result); 62 | }); 63 | } 64 | 65 | return View(); 66 | } 67 | } 68 | } -------------------------------------------------------------------------------- /ElectronNET-API-Demos/Controllers/HomeController.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.AspNetCore.Mvc; 2 | 3 | namespace ElectronNET_API_Demos.Controllers 4 | { 5 | public class HomeController : Controller 6 | { 7 | public IActionResult Index() 8 | { 9 | return View(); 10 | } 11 | } 12 | } -------------------------------------------------------------------------------- /ElectronNET-API-Demos/Controllers/IpcController.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.AspNetCore.Mvc; 2 | using ElectronNET.API; 3 | using System.Linq; 4 | 5 | namespace ElectronNET_API_Demos.Controllers 6 | { 7 | public class IpcController : Controller 8 | { 9 | public IActionResult Index() 10 | { 11 | if(HybridSupport.IsElectronActive) 12 | { 13 | Electron.IpcMain.On("async-msg", (args) => 14 | { 15 | var mainWindow = Electron.WindowManager.BrowserWindows.First(); 16 | Electron.IpcMain.Send(mainWindow, "asynchronous-reply", "pong"); 17 | }); 18 | 19 | Electron.IpcMain.OnSync("sync-msg", (args) => 20 | { 21 | return "pong"; 22 | }); 23 | } 24 | 25 | return View(); 26 | } 27 | } 28 | } -------------------------------------------------------------------------------- /ElectronNET-API-Demos/Controllers/MenusController.cs: -------------------------------------------------------------------------------- 1 | using System.Linq; 2 | using Microsoft.AspNetCore.Mvc; 3 | using ElectronNET.API.Entities; 4 | using ElectronNET.API; 5 | 6 | namespace ElectronNET_API_Demos.Controllers 7 | { 8 | public class MenusController : Controller 9 | { 10 | public IActionResult Index() 11 | { 12 | if (HybridSupport.IsElectronActive) 13 | { 14 | var menu = new MenuItem[] { 15 | new MenuItem { Label = "Edit", Submenu = new MenuItem[] { 16 | new MenuItem { Label = "Undo", Accelerator = "CmdOrCtrl+Z", Role = MenuRole.undo }, 17 | new MenuItem { Label = "Redo", Accelerator = "Shift+CmdOrCtrl+Z", Role = MenuRole.redo }, 18 | new MenuItem { Type = MenuType.separator }, 19 | new MenuItem { Label = "Cut", Accelerator = "CmdOrCtrl+X", Role = MenuRole.cut }, 20 | new MenuItem { Label = "Copy", Accelerator = "CmdOrCtrl+C", Role = MenuRole.copy }, 21 | new MenuItem { Label = "Paste", Accelerator = "CmdOrCtrl+V", Role = MenuRole.paste }, 22 | new MenuItem { Label = "Select All", Accelerator = "CmdOrCtrl+A", Role = MenuRole.selectall } 23 | } 24 | }, 25 | new MenuItem { Label = "View", Submenu = new MenuItem[] { 26 | new MenuItem 27 | { 28 | Label = "Reload", 29 | Accelerator = "CmdOrCtrl+R", 30 | Click = () => 31 | { 32 | // on reload, start fresh and close any old 33 | // open secondary windows 34 | Electron.WindowManager.BrowserWindows.ToList().ForEach(browserWindow => { 35 | if(browserWindow.Id != 1) 36 | { 37 | browserWindow.Close(); 38 | } 39 | else 40 | { 41 | browserWindow.Reload(); 42 | } 43 | }); 44 | } 45 | }, 46 | new MenuItem 47 | { 48 | Label = "Toggle Full Screen", 49 | Accelerator = "CmdOrCtrl+F", 50 | Click = async () => 51 | { 52 | bool isFullScreen = await Electron.WindowManager.BrowserWindows.First().IsFullScreenAsync(); 53 | Electron.WindowManager.BrowserWindows.First().SetFullScreen(!isFullScreen); 54 | } 55 | }, 56 | new MenuItem 57 | { 58 | Label = "Open Developer Tools", 59 | Accelerator = "CmdOrCtrl+I", 60 | Click = () => Electron.WindowManager.BrowserWindows.First().WebContents.OpenDevTools() 61 | }, 62 | new MenuItem 63 | { 64 | Type = MenuType.separator 65 | }, 66 | new MenuItem 67 | { 68 | Label = "App Menu Demo", 69 | Click = async () => { 70 | var options = new MessageBoxOptions("This demo is for the Menu section, showing how to create a clickable menu item in the application menu."); 71 | options.Type = MessageBoxType.info; 72 | options.Title = "Application Menu Demo"; 73 | await Electron.Dialog.ShowMessageBoxAsync(options); 74 | } 75 | } 76 | } 77 | }, 78 | new MenuItem { Label = "Window", Role = MenuRole.window, Submenu = new MenuItem[] { 79 | new MenuItem { Label = "Minimize", Accelerator = "CmdOrCtrl+M", Role = MenuRole.minimize }, 80 | new MenuItem { Label = "Close", Accelerator = "CmdOrCtrl+W", Role = MenuRole.close } 81 | } 82 | }, 83 | new MenuItem { Label = "Help", Role = MenuRole.help, Submenu = new MenuItem[] { 84 | new MenuItem 85 | { 86 | Label = "Learn More", 87 | Click = async () => await Electron.Shell.OpenExternalAsync("https://github.com/ElectronNET") 88 | } 89 | } 90 | } 91 | }; 92 | 93 | Electron.Menu.SetApplicationMenu(menu); 94 | 95 | CreateContextMenu(); 96 | } 97 | 98 | return View(); 99 | } 100 | 101 | private void CreateContextMenu() 102 | { 103 | var menu = new MenuItem[] 104 | { 105 | new MenuItem 106 | { 107 | Label = "Hello", 108 | Click = async () => await Electron.Dialog.ShowMessageBoxAsync("Electron.NET rocks!") 109 | }, 110 | new MenuItem { Type = MenuType.separator }, 111 | new MenuItem { Label = "Electron.NET", Type = MenuType.checkbox, Checked = true } 112 | }; 113 | 114 | var mainWindow = Electron.WindowManager.BrowserWindows.First(); 115 | Electron.Menu.SetContextMenu(mainWindow, menu); 116 | 117 | Electron.IpcMain.On("show-context-menu", (args) => 118 | { 119 | Electron.Menu.ContextMenuPopup(mainWindow); 120 | }); 121 | } 122 | } 123 | } -------------------------------------------------------------------------------- /ElectronNET-API-Demos/Controllers/NotificationsController.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Threading.Tasks; 5 | using Microsoft.AspNetCore.Mvc; 6 | using ElectronNET.API; 7 | using ElectronNET.API.Entities; 8 | 9 | namespace ElectronNET_API_Demos.Controllers 10 | { 11 | public class NotificationsController : Controller 12 | { 13 | public IActionResult Index() 14 | { 15 | if(HybridSupport.IsElectronActive) 16 | { 17 | Electron.IpcMain.On("basic-noti", (args) => { 18 | 19 | var options = new NotificationOptions("Basic Notification", "Short message part") 20 | { 21 | OnClick = async () => await Electron.Dialog.ShowMessageBoxAsync("Notification clicked") 22 | }; 23 | 24 | Electron.Notification.Show(options); 25 | 26 | }); 27 | 28 | Electron.IpcMain.On("advanced-noti", (args) => { 29 | 30 | var options = new NotificationOptions("Notification with image", "Short message plus a custom image") 31 | { 32 | OnClick = async () => await Electron.Dialog.ShowMessageBoxAsync("Notification clicked"), 33 | Icon = "/assets/img/programming.png" 34 | }; 35 | 36 | Electron.Notification.Show(options); 37 | }); 38 | } 39 | 40 | return View(); 41 | } 42 | } 43 | } -------------------------------------------------------------------------------- /ElectronNET-API-Demos/Controllers/PdfController.cs: -------------------------------------------------------------------------------- 1 | using System.Linq; 2 | using Microsoft.AspNetCore.Mvc; 3 | using ElectronNET.API; 4 | using ElectronNET.API.Entities; 5 | 6 | namespace ElectronNET_API_Demos.Controllers 7 | { 8 | public class PdfController : Controller 9 | { 10 | public IActionResult Index() 11 | { 12 | if (HybridSupport.IsElectronActive) 13 | { 14 | Electron.IpcMain.On("print-pdf", async (args) => 15 | { 16 | BrowserWindow mainWindow = Electron.WindowManager.BrowserWindows.First(); 17 | 18 | var saveOptions = new SaveDialogOptions 19 | { 20 | Title = "Save an PDF-File", 21 | DefaultPath = await Electron.App.GetPathAsync(PathName.documents), 22 | Filters = new FileFilter[] 23 | { 24 | new FileFilter { Name = "PDF", Extensions = new string[] { "pdf" } } 25 | } 26 | }; 27 | var path = await Electron.Dialog.ShowSaveDialogAsync(mainWindow, saveOptions); 28 | 29 | if (await mainWindow.WebContents.PrintToPDFAsync(path)) 30 | { 31 | await Electron.Shell.OpenExternalAsync("file://" + path); 32 | } 33 | else 34 | { 35 | Electron.Dialog.ShowErrorBox("Error", "Failed to create pdf file."); 36 | } 37 | }); 38 | } 39 | 40 | return View(); 41 | } 42 | } 43 | } -------------------------------------------------------------------------------- /ElectronNET-API-Demos/Controllers/ProgressBarController.cs: -------------------------------------------------------------------------------- 1 | using ElectronNET.API; 2 | using Microsoft.AspNetCore.Mvc; 3 | using System.Linq; 4 | 5 | namespace ElectronNET_API_Demos.Controllers 6 | { 7 | public class ProgressBarController : Controller 8 | { 9 | public IActionResult Index() 10 | { 11 | if (HybridSupport.IsElectronActive) 12 | { 13 | Electron.IpcMain.On("set-progress-bar", (args) => 14 | { 15 | var mainWindow = Electron.WindowManager.BrowserWindows.First(); 16 | mainWindow.SetProgressBar(5); 17 | }); 18 | 19 | Electron.IpcMain.On("clear-progress-bar", (args) => 20 | { 21 | var mainWindow = Electron.WindowManager.BrowserWindows.First(); 22 | mainWindow.SetProgressBar(-1); 23 | }); 24 | } 25 | 26 | return View(); 27 | } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /ElectronNET-API-Demos/Controllers/ShellController.cs: -------------------------------------------------------------------------------- 1 | using ElectronNET.API; 2 | using ElectronNET.API.Entities; 3 | using Microsoft.AspNetCore.Mvc; 4 | 5 | namespace ElectronNET_API_Demos.Controllers 6 | { 7 | public class ShellController : Controller 8 | { 9 | public IActionResult Index() 10 | { 11 | if (HybridSupport.IsElectronActive) 12 | { 13 | Electron.IpcMain.On("open-file-manager", async (args) => 14 | { 15 | string path = await Electron.App.GetPathAsync(PathName.home); 16 | await Electron.Shell.ShowItemInFolderAsync(path); 17 | 18 | }); 19 | 20 | Electron.IpcMain.On("open-ex-links", async (args) => 21 | { 22 | await Electron.Shell.OpenExternalAsync("https://github.com/ElectronNET"); 23 | }); 24 | } 25 | 26 | return View(); 27 | } 28 | } 29 | } -------------------------------------------------------------------------------- /ElectronNET-API-Demos/Controllers/ShortcutsController.cs: -------------------------------------------------------------------------------- 1 | using System.Threading.Tasks; 2 | using ElectronNET.API; 3 | using ElectronNET.API.Entities; 4 | using Microsoft.AspNetCore.Mvc; 5 | 6 | namespace ElectronNET_API_Demos.Controllers 7 | { 8 | public class ShortcutsController : Controller 9 | { 10 | public IActionResult Index() 11 | { 12 | if (HybridSupport.IsElectronActive) 13 | { 14 | Electron.GlobalShortcut.Register("CommandOrControl+Alt+K", async () => 15 | { 16 | var options = new MessageBoxOptions("You pressed the registered global shortcut keybinding.") 17 | { 18 | Type = MessageBoxType.info, 19 | Title = "Success!" 20 | }; 21 | 22 | await Electron.Dialog.ShowMessageBoxAsync(options); 23 | }); 24 | 25 | Electron.App.WillQuit += arg => Task.Run(() => Electron.GlobalShortcut.UnregisterAll()); 26 | } 27 | 28 | return View(); 29 | } 30 | } 31 | } -------------------------------------------------------------------------------- /ElectronNET-API-Demos/Controllers/TrayController.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.AspNetCore.Mvc; 2 | using ElectronNET.API; 3 | using ElectronNET.API.Entities; 4 | 5 | namespace ElectronNET_API_Demos.Controllers 6 | { 7 | public class TrayController : Controller 8 | { 9 | public IActionResult Index() 10 | { 11 | if (HybridSupport.IsElectronActive) 12 | { 13 | Electron.IpcMain.On("put-in-tray", (args) => 14 | { 15 | 16 | if (Electron.Tray.MenuItems.Count == 0) 17 | { 18 | var menu = new MenuItem 19 | { 20 | Label = "Remove", 21 | Click = () => Electron.Tray.Destroy() 22 | }; 23 | 24 | Electron.Tray.Show("/Assets/electron_32x32.png", menu); 25 | Electron.Tray.SetToolTip("Electron Demo in the tray."); 26 | } 27 | else 28 | { 29 | Electron.Tray.Destroy(); 30 | } 31 | 32 | }); 33 | } 34 | 35 | return View(); 36 | } 37 | } 38 | } -------------------------------------------------------------------------------- /ElectronNET-API-Demos/Controllers/WindowsController.cs: -------------------------------------------------------------------------------- 1 | using System.Linq; 2 | using Microsoft.AspNetCore.Mvc; 3 | using ElectronNET.API; 4 | using ElectronNET.API.Entities; 5 | 6 | namespace ElectronNET_API_Demos.Controllers 7 | { 8 | public class WindowsController : Controller 9 | { 10 | public IActionResult Index() 11 | { 12 | if (HybridSupport.IsElectronActive) 13 | { 14 | string viewPath = $"http://localhost:{BridgeSettings.WebPort}/windows/demowindow"; 15 | 16 | Electron.IpcMain.On("new-window", async (args) => 17 | { 18 | 19 | await Electron.WindowManager.CreateWindowAsync(viewPath); 20 | 21 | }); 22 | 23 | Electron.IpcMain.On("manage-window", async (args) => 24 | { 25 | 26 | var browserWindow = await Electron.WindowManager.CreateWindowAsync(viewPath); 27 | browserWindow.OnMove += UpdateReply; 28 | browserWindow.OnResize += UpdateReply; 29 | }); 30 | 31 | Electron.IpcMain.On("listen-to-window", async (args) => 32 | { 33 | var mainBrowserWindow = Electron.WindowManager.BrowserWindows.First(); 34 | 35 | var browserWindow = await Electron.WindowManager.CreateWindowAsync(viewPath); 36 | browserWindow.OnFocus += () => Electron.IpcMain.Send(mainBrowserWindow, "listen-to-window-focus"); 37 | browserWindow.OnBlur += () => Electron.IpcMain.Send(mainBrowserWindow, "listen-to-window-blur"); 38 | 39 | Electron.IpcMain.On("listen-to-window-set-focus", (x) => browserWindow.Focus()); 40 | }); 41 | 42 | Electron.IpcMain.On("frameless-window", async (args) => 43 | { 44 | var options = new BrowserWindowOptions 45 | { 46 | Frame = false 47 | }; 48 | await Electron.WindowManager.CreateWindowAsync(options, viewPath); 49 | }); 50 | } 51 | 52 | return View(); 53 | } 54 | 55 | private async void UpdateReply() 56 | { 57 | var browserWindow = Electron.WindowManager.BrowserWindows.Last(); 58 | var size = await browserWindow.GetSizeAsync(); 59 | var position = await browserWindow.GetPositionAsync(); 60 | string message = $"Size: {size[0]},{size[1]} Position: {position[0]},{position[1]}"; 61 | 62 | var mainWindow = Electron.WindowManager.BrowserWindows.First(); 63 | Electron.IpcMain.Send(mainWindow, "manage-window-reply", message); 64 | } 65 | 66 | public IActionResult DemoWindow() 67 | { 68 | return View(); 69 | } 70 | } 71 | } -------------------------------------------------------------------------------- /ElectronNET-API-Demos/ElectronNET-API-Demos.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | netcoreapp3.1 5 | 6 | WinExe 7 | ElectronNET_API_Demos.Program 8 | 9 | 10 | 11 | 12 | 13 | 14 | PreserveNewest 15 | 16 | 17 | PreserveNewest 18 | 19 | 20 | 21 | 22 | PreserveNewest 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /ElectronNET-API-Demos/Program.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.AspNetCore; 2 | using Microsoft.AspNetCore.Hosting; 3 | using ElectronNET.API; 4 | 5 | namespace ElectronNET_API_Demos 6 | { 7 | public class Program 8 | { 9 | public static void Main(string[] args) 10 | { 11 | CreateWebHostBuilder(args).Build().Run(); 12 | } 13 | 14 | public static IWebHostBuilder CreateWebHostBuilder(string[] args) => 15 | WebHost.CreateDefaultBuilder(args) 16 | .UseStartup() 17 | .UseElectron(args); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /ElectronNET-API-Demos/Properties/launchSettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "iisSettings": { 3 | "windowsAuthentication": false, 4 | "anonymousAuthentication": true, 5 | "iisExpress": { 6 | "applicationUrl": "http://localhost:57047/", 7 | "sslPort": 0 8 | } 9 | }, 10 | "profiles": { 11 | "IIS Express": { 12 | "commandName": "IISExpress", 13 | "launchBrowser": true, 14 | "environmentVariables": { 15 | "ASPNETCORE_ENVIRONMENT": "Development" 16 | } 17 | }, 18 | "ElectronNET_API_Demos": { 19 | "commandName": "Project", 20 | "launchBrowser": true, 21 | "environmentVariables": { 22 | "ASPNETCORE_ENVIRONMENT": "Development" 23 | }, 24 | "applicationUrl": "http://localhost:57048/" 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /ElectronNET-API-Demos/Startup.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.AspNetCore.Builder; 2 | using Microsoft.AspNetCore.Hosting; 3 | using Microsoft.Extensions.Configuration; 4 | using Microsoft.Extensions.DependencyInjection; 5 | using ElectronNET.API; 6 | using ElectronNET.API.Entities; 7 | using Microsoft.Extensions.Hosting; 8 | 9 | namespace ElectronNET_API_Demos 10 | { 11 | public class Startup 12 | { 13 | public Startup(IConfiguration configuration) 14 | { 15 | Configuration = configuration; 16 | } 17 | 18 | public IConfiguration Configuration { get; } 19 | 20 | // This method gets called by the runtime. Use this method to add services to the container. 21 | public void ConfigureServices(IServiceCollection services) 22 | { 23 | services.AddMvc(); 24 | } 25 | 26 | // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. 27 | public void Configure(IApplicationBuilder app, IWebHostEnvironment env) 28 | { 29 | if (env.IsDevelopment()) 30 | { 31 | app.UseDeveloperExceptionPage(); 32 | } 33 | else 34 | { 35 | app.UseExceptionHandler("/Home/Error"); 36 | } 37 | 38 | app.UseStaticFiles(); 39 | 40 | app.UseRouting(); 41 | 42 | app.UseEndpoints(endpoints => 43 | { 44 | endpoints.MapControllerRoute("default", "{controller=Home}/{action=Index}/{id?}"); 45 | }); 46 | 47 | if (HybridSupport.IsElectronActive) 48 | { 49 | ElectronBootstrap(); 50 | } 51 | } 52 | 53 | public async void ElectronBootstrap() 54 | { 55 | var browserWindow = await Electron.WindowManager.CreateWindowAsync(new BrowserWindowOptions 56 | { 57 | Width = 1152, 58 | Height = 864, 59 | Show = false 60 | }); 61 | 62 | browserWindow.OnReadyToShow += () => browserWindow.Show(); 63 | browserWindow.SetTitle("Electron.NET API Demos"); 64 | } 65 | } 66 | } 67 | -------------------------------------------------------------------------------- /ElectronNET-API-Demos/Views/About/Index.cshtml: -------------------------------------------------------------------------------- 1 |  43 | -------------------------------------------------------------------------------- /ElectronNET-API-Demos/Views/AppSysInformation/Index.cshtml: -------------------------------------------------------------------------------- 1 |  188 | -------------------------------------------------------------------------------- /ElectronNET-API-Demos/Views/Clipboard/Index.cshtml: -------------------------------------------------------------------------------- 1 |  116 | -------------------------------------------------------------------------------- /ElectronNET-API-Demos/Views/CrashHang/Index.cshtml: -------------------------------------------------------------------------------- 1 |  114 | -------------------------------------------------------------------------------- /ElectronNET-API-Demos/Views/CrashHang/ProcessCrash.cshtml: -------------------------------------------------------------------------------- 1 |  22 | 23 |

Click the text below to crash and then reload this process.

24 | Crash this process 25 | -------------------------------------------------------------------------------- /ElectronNET-API-Demos/Views/CrashHang/ProcessHang.cshtml: -------------------------------------------------------------------------------- 1 |  25 | 26 |

Click the text below to hang and then reload this process.

27 | (This will take up to 30 seconds.) 28 | 29 | Hang this process 30 | -------------------------------------------------------------------------------- /ElectronNET-API-Demos/Views/DesktopCapturer/Index.cshtml: -------------------------------------------------------------------------------- 1 |  127 | -------------------------------------------------------------------------------- /ElectronNET-API-Demos/Views/Dialogs/Index.cshtml: -------------------------------------------------------------------------------- 1 |  223 | -------------------------------------------------------------------------------- /ElectronNET-API-Demos/Views/Home/Index.cshtml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 102 | 103 |
104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | -------------------------------------------------------------------------------- /ElectronNET-API-Demos/Views/Ipc/Index.cshtml: -------------------------------------------------------------------------------- 1 |  105 | -------------------------------------------------------------------------------- /ElectronNET-API-Demos/Views/Menus/Index.cshtml: -------------------------------------------------------------------------------- 1 |  186 | -------------------------------------------------------------------------------- /ElectronNET-API-Demos/Views/Notifications/Index.cshtml: -------------------------------------------------------------------------------- 1 |  79 | -------------------------------------------------------------------------------- /ElectronNET-API-Demos/Views/Pdf/Index.cshtml: -------------------------------------------------------------------------------- 1 |  -------------------------------------------------------------------------------- /ElectronNET-API-Demos/Views/ProgressBar/Index.cshtml: -------------------------------------------------------------------------------- 1 |  70 | -------------------------------------------------------------------------------- /ElectronNET-API-Demos/Views/Shell/Index.cshtml: -------------------------------------------------------------------------------- 1 |  72 | -------------------------------------------------------------------------------- /ElectronNET-API-Demos/Views/Shortcuts/Index.cshtml: -------------------------------------------------------------------------------- 1 |  75 | -------------------------------------------------------------------------------- /ElectronNET-API-Demos/Views/Tray/Index.cshtml: -------------------------------------------------------------------------------- 1 |  101 | -------------------------------------------------------------------------------- /ElectronNET-API-Demos/Views/Windows/DemoWindow.cshtml: -------------------------------------------------------------------------------- 1 |  30 | 31 |

Hello World!

32 | Close this Window -------------------------------------------------------------------------------- /ElectronNET-API-Demos/Views/Windows/HandleErrorCrashes.cshtml: -------------------------------------------------------------------------------- 1 |  -------------------------------------------------------------------------------- /ElectronNET-API-Demos/Views/Windows/Index.cshtml: -------------------------------------------------------------------------------- 1 |  202 | -------------------------------------------------------------------------------- /ElectronNET-API-Demos/electron.manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "executable": "ElectronNET-API-Demos" 3 | } -------------------------------------------------------------------------------- /ElectronNET-API-Demos/wwwroot/assets/app-icon/mac/app.icns: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/electron.net-api-demos/97f2af56545b718ee87ca1e395a05a4413a117a9/ElectronNET-API-Demos/wwwroot/assets/app-icon/mac/app.icns -------------------------------------------------------------------------------- /ElectronNET-API-Demos/wwwroot/assets/app-icon/png/1024.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/electron.net-api-demos/97f2af56545b718ee87ca1e395a05a4413a117a9/ElectronNET-API-Demos/wwwroot/assets/app-icon/png/1024.png -------------------------------------------------------------------------------- /ElectronNET-API-Demos/wwwroot/assets/app-icon/png/128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/electron.net-api-demos/97f2af56545b718ee87ca1e395a05a4413a117a9/ElectronNET-API-Demos/wwwroot/assets/app-icon/png/128.png -------------------------------------------------------------------------------- /ElectronNET-API-Demos/wwwroot/assets/app-icon/png/16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/electron.net-api-demos/97f2af56545b718ee87ca1e395a05a4413a117a9/ElectronNET-API-Demos/wwwroot/assets/app-icon/png/16.png -------------------------------------------------------------------------------- /ElectronNET-API-Demos/wwwroot/assets/app-icon/png/24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/electron.net-api-demos/97f2af56545b718ee87ca1e395a05a4413a117a9/ElectronNET-API-Demos/wwwroot/assets/app-icon/png/24.png -------------------------------------------------------------------------------- /ElectronNET-API-Demos/wwwroot/assets/app-icon/png/256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/electron.net-api-demos/97f2af56545b718ee87ca1e395a05a4413a117a9/ElectronNET-API-Demos/wwwroot/assets/app-icon/png/256.png -------------------------------------------------------------------------------- /ElectronNET-API-Demos/wwwroot/assets/app-icon/png/32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/electron.net-api-demos/97f2af56545b718ee87ca1e395a05a4413a117a9/ElectronNET-API-Demos/wwwroot/assets/app-icon/png/32.png -------------------------------------------------------------------------------- /ElectronNET-API-Demos/wwwroot/assets/app-icon/png/48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/electron.net-api-demos/97f2af56545b718ee87ca1e395a05a4413a117a9/ElectronNET-API-Demos/wwwroot/assets/app-icon/png/48.png -------------------------------------------------------------------------------- /ElectronNET-API-Demos/wwwroot/assets/app-icon/png/512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/electron.net-api-demos/97f2af56545b718ee87ca1e395a05a4413a117a9/ElectronNET-API-Demos/wwwroot/assets/app-icon/png/512.png -------------------------------------------------------------------------------- /ElectronNET-API-Demos/wwwroot/assets/app-icon/png/64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/electron.net-api-demos/97f2af56545b718ee87ca1e395a05a4413a117a9/ElectronNET-API-Demos/wwwroot/assets/app-icon/png/64.png -------------------------------------------------------------------------------- /ElectronNET-API-Demos/wwwroot/assets/app-icon/win/app.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/electron.net-api-demos/97f2af56545b718ee87ca1e395a05a4413a117a9/ElectronNET-API-Demos/wwwroot/assets/app-icon/win/app.ico -------------------------------------------------------------------------------- /ElectronNET-API-Demos/wwwroot/assets/code-blocks.js: -------------------------------------------------------------------------------- 1 | document.addEventListener('DOMContentLoaded', function () { 2 | const codeBlocks = document.querySelectorAll('pre code'); 3 | Array.prototype.forEach.call(codeBlocks, function (code) { 4 | hljs.highlightBlock(code) 5 | }); 6 | }) 7 | -------------------------------------------------------------------------------- /ElectronNET-API-Demos/wwwroot/assets/css/about.css: -------------------------------------------------------------------------------- 1 | /* Welcome ------------------------ */ 2 | 3 | .about { 4 | --about-space: 2rem; 5 | 6 | position: absolute; 7 | display: flex; 8 | top: 0; 9 | left: 0; 10 | right: 0; 11 | bottom: 0; 12 | z-index: 1; 13 | overflow-x: hidden; 14 | overflow-y: auto; 15 | padding: 0; 16 | background-color: hsl(0,0%,98%); 17 | pointer-events: none; 18 | visibility: hidden; 19 | opacity: 0; 20 | transform: scale(1.1); 21 | transition: visibility 0s .12s linear , opacity .12s ease-in, transform .12s ease-in; 22 | } 23 | .about.is-shown { 24 | pointer-events: auto; 25 | visibility: visible; 26 | opacity: 1; 27 | transform: scale(1); 28 | transition: visibility 0s 0s linear , opacity .24s ease-out, transform .24s ease-out; 29 | } 30 | 31 | .about-wrapper { 32 | margin: auto; 33 | } 34 | 35 | .about-header { 36 | padding: var(--about-space) 0; 37 | border-bottom: 1px solid hsl(0,0%,88%); 38 | } 39 | 40 | .about-logo { 41 | display: block; 42 | margin: 0 auto; 43 | width: 320px; /* TODO: Adjust asset to this size */ 44 | max-width: 100%; 45 | } 46 | 47 | .about-sections { 48 | max-width: 680px; 49 | padding: 0 var(--about-space); 50 | } 51 | 52 | .about-section { 53 | margin: var(--about-space) 0; 54 | } 55 | 56 | .about h2 { 57 | text-align: center; 58 | margin: 0 0 1em 0; 59 | font-size: 1.5em; 60 | color: hsl(0, 0%, 55%); 61 | } 62 | 63 | .about .about-code h2 { 64 | color: hsl(330, 65%, 55%); 65 | } 66 | 67 | .about .play-along h2 { 68 | color: hsl(222, 53%, 50%); 69 | } 70 | 71 | .about-button { 72 | display: block; 73 | margin: 0 auto; 74 | padding: .4em 1.2em; 75 | font: inherit; 76 | font-size: 1.6em; 77 | color: inherit; 78 | border: 2px solid; 79 | border-radius: 4px; 80 | background-color: transparent; 81 | } 82 | .about-button:focus { 83 | outline: none; 84 | border-color: hsl(0,0%,88%); 85 | } 86 | 87 | footer.about-section { 88 | text-align: center; 89 | } 90 | 91 | .rainbow-button-wrapper { 92 | --rainbow-button-width: 170px; 93 | --rainbow-button-height: 50px; 94 | --rainbow-button-width-inner: 164px; 95 | --rainbow-button-height-inner: 44px; 96 | --rainbow-color-1: hsl(116, 30%, 36%); 97 | --rainbow-color-2: hsl(194, 60%, 36%); 98 | --rainbow-color-3: hsl(222, 53%, 50%); 99 | --rainbow-color-4: hsl(285, 47%, 46%); 100 | --rainbow-color-5: hsl(330, 65%, 48%); 101 | --rainbow-color-6: hsl(32, 79%, 49%); 102 | --rainbow-color-7: hsl(53, 84%, 50%); 103 | 104 | display: inline-block; 105 | width: var(--rainbow-button-width); 106 | height: var(--rainbow-button-height); 107 | position: relative; 108 | overflow: hidden; 109 | border-radius: 5px; 110 | } 111 | 112 | .rainbow-button-wrapper:before { 113 | display: block; 114 | position: absolute; 115 | z-index: 2; 116 | top: 0; 117 | left: 0; 118 | width: 600px; 119 | height: var(--rainbow-button-height); 120 | background: #CCC; 121 | background: linear-gradient(to right, var(--rainbow-color-1) 0%, var(--rainbow-color-2) 14%, var(--rainbow-color-3) 28%, var(--rainbow-color-4) 42%, var(--rainbow-color-5) 56%, var(--rainbow-color-6) 70%, var(--rainbow-color-7) 84%, var(--rainbow-color-1) 100%); 122 | background-position: -200px 0; 123 | transition: all 0.5s; 124 | content: ""; 125 | } 126 | 127 | .rainbow-button-wrapper button { 128 | display: block; 129 | width: var(--rainbow-button-width-inner); 130 | height: var(--rainbow-button-height-inner); 131 | position: absolute; 132 | z-index: 3; 133 | top: 3px; 134 | left: 3px; 135 | border: none; 136 | background: white; 137 | color: black; 138 | font-size: 1.3rem; 139 | } 140 | 141 | .rainbow-button-wrapper:hover:before { 142 | background-position: 200px 0; 143 | } 144 | 145 | @media (min-width: 940px) { 146 | .about-header { 147 | align-self: center; 148 | padding: var(--about-space); 149 | border-right: 1px solid hsl(0,0%,88%); 150 | border-bottom: none; 151 | } 152 | .about-wrapper { 153 | display: flex; 154 | } 155 | } 156 | -------------------------------------------------------------------------------- /ElectronNET-API-Demos/wwwroot/assets/css/demo.css: -------------------------------------------------------------------------------- 1 | /* Demo */ 2 | 3 | .demo:first-of-type { 4 | margin-top: 2rem; 5 | } 6 | .demo:last-of-type { 7 | margin-bottom: 2rem; 8 | } 9 | @media (min-width: 940px) { 10 | .demo:last-of-type { 11 | margin-bottom: 4rem; 12 | } 13 | } 14 | 15 | .demo-wrapper { 16 | position: relative; 17 | max-width: 740px; 18 | margin: 0 auto; 19 | padding: 0 2rem; 20 | } 21 | 22 | 23 | /* Toggle Button ----------------------------- */ 24 | 25 | .demo-toggle-button { 26 | position: relative; 27 | display: block; 28 | margin: 0; 29 | padding: .5em 1.5em; 30 | line-height: 1.5; 31 | font: inherit; 32 | font-weight: 600; 33 | font-size: 1.2em; 34 | text-align: left; 35 | border: none; 36 | color: inherit; 37 | background-color: transparent; 38 | transition: border-color .12s; 39 | outline: none; 40 | } 41 | 42 | .demo-toggle-button:before, 43 | .demo-toggle-button:after { 44 | content: ""; 45 | position: absolute; 46 | left: 0; 47 | width: 2px; 48 | height: 50%; 49 | background-color: hsl(0,0%,88%); 50 | transition: transform .2s cubic-bezier(.4,.1,0,1); 51 | } 52 | .demo-toggle-button:before { 53 | top: 0; 54 | transform-origin: bottom center; 55 | transform: translateX(.7em) rotate(-30deg) scale(.75); 56 | } 57 | .demo-toggle-button:after { 58 | bottom: 0; 59 | transform-origin: top center; 60 | transform: translateX(.7em) rotate(30deg) scale(.75); 61 | } 62 | .is-open .demo-toggle-button:before, 63 | .is-open .demo-toggle-button:after { 64 | transform: rotate(0deg); 65 | } 66 | .demo-toggle-button:focus:before, 67 | .demo-toggle-button:focus:after { 68 | background-color: currentColor; 69 | } 70 | 71 | /* Meta info */ 72 | 73 | .demo-meta { 74 | margin-top: .2em; 75 | font-size: 11px; 76 | font-weight: 300; 77 | text-transform: uppercase; 78 | color: var(--color-subtle); 79 | } 80 | .demo-meta-divider { 81 | margin: 0 .5em; 82 | } 83 | 84 | 85 | /* Demo Box ----------------------------- */ 86 | 87 | .demo-box { 88 | display: none; 89 | position: relative; 90 | padding: 2em; 91 | margin-top: 1em; 92 | margin-bottom: 2em; 93 | border-radius: 6px; 94 | border: 1px solid var(--color-border); 95 | background-color: var(--color-bg); 96 | } 97 | .demo-box:before { 98 | content: ""; 99 | position: absolute; 100 | top: -11px; 101 | width: 20px; 102 | height: 20px; 103 | background-color: inherit; 104 | border-top: inherit; 105 | border-right: inherit; 106 | border-top-right-radius: 3px; 107 | transform: rotate(-45deg); 108 | } 109 | 110 | .is-open .demo-box { 111 | display: block; 112 | animation: demo-box-fade-in .2s cubic-bezier(0, .20, .20, .96); 113 | } 114 | @keyframes demo-box-fade-in { 115 | 0% { opacity: 0; transform: translateY(-20px); } 116 | 100% { opacity: 1; transform: translateY(0); } 117 | } 118 | 119 | .demo-box > p:first-child { 120 | margin-top: 0; 121 | } 122 | 123 | .demo-box h5 { 124 | font-size: 1em; 125 | margin-bottom: .6em; 126 | } 127 | 128 | 129 | /* Demo Controls ----------------------------- */ 130 | 131 | .demo-controls { 132 | display: flex; 133 | align-items: center; 134 | } 135 | 136 | .demo-button { 137 | align-self: flex-start; 138 | margin-right: 1em; 139 | border: 2px solid; 140 | border-radius: 4px; 141 | font: inherit; 142 | font-size: 1.2em; 143 | padding: .4em 1.2em; 144 | color: inherit; 145 | background-color: transparent; 146 | } 147 | .demo-button:focus { 148 | outline: none; 149 | background-color: white; 150 | } 151 | .demo-button:active { 152 | border-color: var(--color-border); 153 | } 154 | 155 | .demo-input { 156 | flex: 1; 157 | border: 2px solid var(--color-border); 158 | border-radius: 4px; 159 | font: inherit; 160 | font-size: 1.2em; 161 | padding: .4em .8em; 162 | color: inherit; 163 | background-color: transparent; 164 | } 165 | .demo-input:focus { 166 | outline: none; 167 | border-color: hsl(0,0%,80%); 168 | background-color: white; 169 | } 170 | 171 | .demo-response { 172 | flex: 1; 173 | word-break: break-word; 174 | } 175 | 176 | .smooth-appear { 177 | opacity: 1; 178 | transition: opacity .5s ease-in-out; 179 | } 180 | 181 | .disappear { 182 | opacity: 0; 183 | } 184 | .demo-button.smooth-disappear:focus { 185 | outline: inherit; 186 | border-color: inherit; 187 | background-color: inherit; 188 | } 189 | 190 | /* ProTip ----------------------------- */ 191 | 192 | .demo-protip { 193 | margin-top: 2rem; 194 | padding: 1.5rem 2rem 2rem 2rem; 195 | border: 1px solid hsla(0,0%,0%,.06); 196 | border-radius: 6px; 197 | background: var(--color-accent) linear-gradient(hsla(0,0%,100%,.85), hsla(0,0%,100%,.85)); 198 | } 199 | .demo-protip h2 { 200 | margin: 0 0 .5rem 0; 201 | } 202 | .demo-protip strong { 203 | font-weight: 600; 204 | } 205 | 206 | -------------------------------------------------------------------------------- /ElectronNET-API-Demos/wwwroot/assets/css/fonts/SourceCodePro-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/electron.net-api-demos/97f2af56545b718ee87ca1e395a05a4413a117a9/ElectronNET-API-Demos/wwwroot/assets/css/fonts/SourceCodePro-Regular.ttf -------------------------------------------------------------------------------- /ElectronNET-API-Demos/wwwroot/assets/css/fonts/SourceSansPro-Black.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/electron.net-api-demos/97f2af56545b718ee87ca1e395a05a4413a117a9/ElectronNET-API-Demos/wwwroot/assets/css/fonts/SourceSansPro-Black.otf -------------------------------------------------------------------------------- /ElectronNET-API-Demos/wwwroot/assets/css/fonts/SourceSansPro-BlackIt.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/electron.net-api-demos/97f2af56545b718ee87ca1e395a05a4413a117a9/ElectronNET-API-Demos/wwwroot/assets/css/fonts/SourceSansPro-BlackIt.otf -------------------------------------------------------------------------------- /ElectronNET-API-Demos/wwwroot/assets/css/fonts/SourceSansPro-Bold.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/electron.net-api-demos/97f2af56545b718ee87ca1e395a05a4413a117a9/ElectronNET-API-Demos/wwwroot/assets/css/fonts/SourceSansPro-Bold.otf -------------------------------------------------------------------------------- /ElectronNET-API-Demos/wwwroot/assets/css/fonts/SourceSansPro-BoldIt.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/electron.net-api-demos/97f2af56545b718ee87ca1e395a05a4413a117a9/ElectronNET-API-Demos/wwwroot/assets/css/fonts/SourceSansPro-BoldIt.otf -------------------------------------------------------------------------------- /ElectronNET-API-Demos/wwwroot/assets/css/fonts/SourceSansPro-ExtraLight.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/electron.net-api-demos/97f2af56545b718ee87ca1e395a05a4413a117a9/ElectronNET-API-Demos/wwwroot/assets/css/fonts/SourceSansPro-ExtraLight.otf -------------------------------------------------------------------------------- /ElectronNET-API-Demos/wwwroot/assets/css/fonts/SourceSansPro-ExtraLightIt.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/electron.net-api-demos/97f2af56545b718ee87ca1e395a05a4413a117a9/ElectronNET-API-Demos/wwwroot/assets/css/fonts/SourceSansPro-ExtraLightIt.otf -------------------------------------------------------------------------------- /ElectronNET-API-Demos/wwwroot/assets/css/fonts/SourceSansPro-It.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/electron.net-api-demos/97f2af56545b718ee87ca1e395a05a4413a117a9/ElectronNET-API-Demos/wwwroot/assets/css/fonts/SourceSansPro-It.otf -------------------------------------------------------------------------------- /ElectronNET-API-Demos/wwwroot/assets/css/fonts/SourceSansPro-Light.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/electron.net-api-demos/97f2af56545b718ee87ca1e395a05a4413a117a9/ElectronNET-API-Demos/wwwroot/assets/css/fonts/SourceSansPro-Light.otf -------------------------------------------------------------------------------- /ElectronNET-API-Demos/wwwroot/assets/css/fonts/SourceSansPro-LightIt.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/electron.net-api-demos/97f2af56545b718ee87ca1e395a05a4413a117a9/ElectronNET-API-Demos/wwwroot/assets/css/fonts/SourceSansPro-LightIt.otf -------------------------------------------------------------------------------- /ElectronNET-API-Demos/wwwroot/assets/css/fonts/SourceSansPro-Regular.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/electron.net-api-demos/97f2af56545b718ee87ca1e395a05a4413a117a9/ElectronNET-API-Demos/wwwroot/assets/css/fonts/SourceSansPro-Regular.otf -------------------------------------------------------------------------------- /ElectronNET-API-Demos/wwwroot/assets/css/fonts/SourceSansPro-Semibold.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/electron.net-api-demos/97f2af56545b718ee87ca1e395a05a4413a117a9/ElectronNET-API-Demos/wwwroot/assets/css/fonts/SourceSansPro-Semibold.otf -------------------------------------------------------------------------------- /ElectronNET-API-Demos/wwwroot/assets/css/fonts/SourceSansPro-SemiboldIt.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/electron.net-api-demos/97f2af56545b718ee87ca1e395a05a4413a117a9/ElectronNET-API-Demos/wwwroot/assets/css/fonts/SourceSansPro-SemiboldIt.otf -------------------------------------------------------------------------------- /ElectronNET-API-Demos/wwwroot/assets/css/github.css: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | github.com style (c) Vasily Polovnyov 4 | 5 | */ 6 | 7 | .hljs { 8 | display: block; 9 | overflow-x: auto; 10 | padding: 0.5em; 11 | color: #333; 12 | background: #f8f8f8; 13 | } 14 | 15 | .hljs-comment, 16 | .hljs-quote { 17 | color: #998; 18 | font-style: italic; 19 | } 20 | 21 | .hljs-keyword, 22 | .hljs-selector-tag, 23 | .hljs-subst { 24 | color: #333; 25 | font-weight: bold; 26 | } 27 | 28 | .hljs-number, 29 | .hljs-literal, 30 | .hljs-variable, 31 | .hljs-template-variable, 32 | .hljs-tag .hljs-attr { 33 | color: #008080; 34 | } 35 | 36 | .hljs-string, 37 | .hljs-doctag { 38 | color: #d14; 39 | } 40 | 41 | .hljs-title, 42 | .hljs-section, 43 | .hljs-selector-id { 44 | color: #900; 45 | font-weight: bold; 46 | } 47 | 48 | .hljs-subst { 49 | font-weight: normal; 50 | } 51 | 52 | .hljs-type, 53 | .hljs-class .hljs-title { 54 | color: #458; 55 | font-weight: bold; 56 | } 57 | 58 | .hljs-tag, 59 | .hljs-name, 60 | .hljs-attribute { 61 | color: #000080; 62 | font-weight: normal; 63 | } 64 | 65 | .hljs-regexp, 66 | .hljs-link { 67 | color: #009926; 68 | } 69 | 70 | .hljs-symbol, 71 | .hljs-bullet { 72 | color: #990073; 73 | } 74 | 75 | .hljs-built_in, 76 | .hljs-builtin-name { 77 | color: #0086b3; 78 | } 79 | 80 | .hljs-meta { 81 | color: #999; 82 | font-weight: bold; 83 | } 84 | 85 | .hljs-deletion { 86 | background: #fdd; 87 | } 88 | 89 | .hljs-addition { 90 | background: #dfd; 91 | } 92 | 93 | .hljs-emphasis { 94 | font-style: italic; 95 | } 96 | 97 | .hljs-strong { 98 | font-weight: bold; 99 | } 100 | -------------------------------------------------------------------------------- /ElectronNET-API-Demos/wwwroot/assets/css/global.css: -------------------------------------------------------------------------------- 1 | /* Fonts ---------------------------- */ 2 | 3 | @font-face { 4 | font-family: 'Source Code Pro'; 5 | font-style: normal; 6 | font-weight: 400; 7 | src: local('Source Code Pro'), local('SourceCodePro'), url(fonts/SourceCodePro-Regular.ttf) format('truetype'); 8 | } 9 | 10 | 11 | /* Global ---------------------------- */ 12 | 13 | * { 14 | box-sizing: border-box; 15 | } 16 | 17 | html { 18 | height: 100%; 19 | font-family: 'BlinkMacSystemFont', 'Lucida Grande', 'Segoe UI', Ubuntu, Cantarell, sans-serif; 20 | font-size: 14px; 21 | line-height: 1.5; 22 | overflow: hidden; /* Prevents rubber-band scrolling of the whole "page" */ 23 | color: var(--color); 24 | background-color: #fff; /* To cover OSes with no default background color */ 25 | } 26 | 27 | body { 28 | margin: 0; 29 | height: 100%; 30 | display: flex; 31 | } 32 | 33 | a { 34 | color: var(--color-link); 35 | } 36 | 37 | h1, 38 | h2, 39 | h3 { 40 | margin-top: 0; 41 | line-height: 1.5; 42 | } 43 | 44 | h1 { 45 | font-size: 1.5em; 46 | font-weight: 600; 47 | } 48 | 49 | h2 { 50 | font-size: 1.3em; 51 | font-weight: normal; 52 | } 53 | 54 | h3 { 55 | font-size: 1.12em; 56 | font-weight: 600; 57 | } 58 | 59 | table { 60 | width: 100%; 61 | border-spacing: 0; 62 | border: 1px solid hsla(0,0%,0%,.08); 63 | border-width: 0 1px 1px 0; 64 | } 65 | th { 66 | background-color: hsla(0,0%,50%,.06); 67 | } 68 | th, 69 | td { 70 | text-align: center; 71 | border: 1px solid hsla(0,0%,0%,.08); 72 | border-width: 1px 0 0 1px; 73 | } 74 | 75 | svg { 76 | fill: currentColor; 77 | } 78 | 79 | /* Code */ 80 | 81 | code, kbd { 82 | font-family: 'Source Code Pro', monospace; 83 | border-radius: 4px; 84 | padding: 1px 4px; 85 | white-space: nowrap; 86 | color: hsl(0,0%,36%); 87 | background-color: hsla(0,0%,60%,.15); 88 | } 89 | 90 | pre, kbd { 91 | font-size: 13px; 92 | overflow: auto; 93 | padding: 1em; 94 | margin: 0; 95 | border-radius: 4px; 96 | border: 1px solid; 97 | border-color: var(--color-border); 98 | background-color: white; 99 | } 100 | 101 | pre code { 102 | white-space: pre; 103 | } 104 | 105 | pre > .hljs { 106 | color: var(--color-subtle); 107 | background-color: white; 108 | } 109 | 110 | kbd { 111 | padding: 0.5em; 112 | } 113 | 114 | 115 | /* Utilities ---------------------------- */ 116 | 117 | .u-avoid-clicks { 118 | pointer-events: none; 119 | } 120 | 121 | /* Visually hidden, but will be read by screen readers */ 122 | .u-visible-to-screen-reader { 123 | position: absolute; 124 | width: 1px; 125 | height: 1px; 126 | padding: 0; 127 | margin: -1px; 128 | overflow: hidden; 129 | clip: rect(0, 0, 0, 0); 130 | border: 0; 131 | } 132 | 133 | .no-display { 134 | display: none; 135 | } 136 | 137 | 138 | /* Content ------------------ */ 139 | 140 | .content { 141 | flex: 1; 142 | position: relative; 143 | overflow: hidden; 144 | visibility: hidden; 145 | opacity: 0; 146 | } 147 | .content.is-shown { 148 | visibility: visible;; 149 | opacity: 1; 150 | } 151 | 152 | 153 | /* Hacks ---------------------------- */ 154 | 155 | /* Fixes horizontal scrolling in code blocks on OS X El Cap (10.11.3), retina screen 156 | * 157 | * By adding an invisible outline property, it will force a repaint 158 | * which enables the scrolling. 159 | */ 160 | 161 | .hljs:hover, 162 | .hljs:active { 163 | outline: 1px solid transparent; 164 | } 165 | -------------------------------------------------------------------------------- /ElectronNET-API-Demos/wwwroot/assets/css/highlight.min.css: -------------------------------------------------------------------------------- 1 | .hljs{display:block;overflow-x:auto;padding:0.5em;background:#F0F0F0}.hljs,.hljs-subst{color:#444}.hljs-comment{color:#888888}.hljs-keyword,.hljs-attribute,.hljs-selector-tag,.hljs-meta-keyword,.hljs-doctag,.hljs-name{font-weight:bold}.hljs-type,.hljs-string,.hljs-number,.hljs-selector-id,.hljs-selector-class,.hljs-quote,.hljs-template-tag,.hljs-deletion{color:#880000}.hljs-title,.hljs-section{color:#880000;font-weight:bold}.hljs-regexp,.hljs-symbol,.hljs-variable,.hljs-template-variable,.hljs-link,.hljs-selector-attr,.hljs-selector-pseudo{color:#BC6060}.hljs-literal{color:#78A960}.hljs-built_in,.hljs-bullet,.hljs-code,.hljs-addition{color:#397300}.hljs-meta{color:#1f7199}.hljs-meta-string{color:#4d99bf}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:bold} -------------------------------------------------------------------------------- /ElectronNET-API-Demos/wwwroot/assets/css/nativize.css: -------------------------------------------------------------------------------- 1 | /* 2 | ** nativize.css 3 | ** Makes the UI feel more native 4 | */ 5 | 6 | html { 7 | font-family: sans-serif; 8 | -webkit-user-select: none; /* disable selection */ 9 | -webkit-user-drag: none; /* disable dragging */ 10 | cursor: default; /* use default cursor */ 11 | } 12 | 13 | body { 14 | margin: 0; /* remove default margin */ 15 | } 16 | 17 | 18 | /* enable text selection */ 19 | 20 | .is-selectable, 21 | pre, 22 | code { 23 | -webkit-user-select: auto; 24 | cursor: auto; 25 | } 26 | 27 | 28 | /* Buttons and links */ 29 | 30 | button{ 31 | cursor: default; 32 | } 33 | 34 | /* Internal links */ 35 | a { 36 | cursor: pointer; 37 | text-decoration: none; 38 | border-bottom: 1px dashed; 39 | outline: none; 40 | } 41 | 42 | /* New window (target) + external links */ 43 | a[target], 44 | a[href^="https://"], 45 | a[href^="http://"] { 46 | border-bottom: 1px solid; 47 | } 48 | 49 | a:hover, 50 | a:focus { 51 | border-bottom: none; 52 | } 53 | 54 | 55 | /* Images */ 56 | 57 | img { 58 | -webkit-user-drag: none; /* disable dragging */ 59 | } 60 | -------------------------------------------------------------------------------- /ElectronNET-API-Demos/wwwroot/assets/css/nav.css: -------------------------------------------------------------------------------- 1 | /* Nav */ 2 | 3 | .nav { 4 | width: 340px; 5 | overflow-x: hidden; 6 | overflow-y: auto; 7 | color: var(--color-subtle); 8 | border-right: 1px solid var(--color-border); 9 | background-color: var(--color-bg); 10 | visibility: hidden; 11 | opacity: 0; 12 | } 13 | .nav.is-shown { 14 | visibility: visible;; 15 | opacity: 1; 16 | } 17 | 18 | .nav-header { 19 | position: relative; 20 | padding: 2rem; 21 | margin-bottom: 1rem; 22 | border-bottom: 1px solid var(--color-border); 23 | } 24 | 25 | .nav-title { 26 | text-transform: uppercase; 27 | font-weight: 300; 28 | line-height: 1; 29 | margin: 0; 30 | } 31 | 32 | .nav-title strong { 33 | font-weight: 600; 34 | color: var(--color-strong); 35 | } 36 | 37 | .nav-header-icon { 38 | position: absolute; 39 | width: 36px; 40 | height: 36px; 41 | top: 1.5rem; /* magic */ 42 | right: 1.75rem; /* magic */ 43 | } 44 | 45 | 46 | 47 | .nav-item { 48 | padding: .5em 0; 49 | } 50 | 51 | .nav-icon { 52 | width: 16px; 53 | height: 16px; 54 | vertical-align: top; 55 | margin-right: .25rem; 56 | } 57 | 58 | .nav-category { 59 | margin: .2em 0; 60 | padding-left: 2rem; 61 | font-size: 11px; 62 | font-weight: normal; 63 | text-transform: uppercase; 64 | } 65 | 66 | .nav-button { 67 | display: block; 68 | width: 100%; 69 | padding: .3rem; 70 | padding-left: calc(2rem + 16px + .5rem); /* padding + icon + magic */ 71 | line-height: 2; 72 | text-align: left; 73 | font: inherit; 74 | font-size: 13px; 75 | color: inherit; 76 | border: none; 77 | background-color: transparent; 78 | cursor: default; 79 | outline: none; 80 | } 81 | .nav-button:hover, 82 | .nav-button:focus:not(.is-selected) { 83 | background-color: hsla(0,0%,0%,.1); 84 | } 85 | .nav-button.is-selected { 86 | background-color: var(--color-accent); 87 | } 88 | .nav-button.is-selected, 89 | .nav-button.is-selected em { 90 | color: #fff; 91 | } 92 | .nav-button.is-selected:focus { 93 | opacity: .8; 94 | } 95 | 96 | .nav-button em { 97 | font-style: normal; 98 | font-weight: 600; 99 | color: var(--color-strong); 100 | pointer-events: none; /* makes it invisible to clicks */ 101 | } 102 | 103 | .nav-footer { 104 | margin-top: 1rem; 105 | padding: 2rem; 106 | border-top: 1px solid var(--color-border); 107 | text-align: center; 108 | } 109 | 110 | .nav-footer-icon { 111 | width: calc(770px / 6.5); 112 | height: calc(88px / 6.5); 113 | } 114 | 115 | .nav-footer a { 116 | outline: none; 117 | } 118 | 119 | .nav-footer-button { 120 | display: block; 121 | width: 100%; 122 | padding: 0; 123 | margin-bottom: .75rem; 124 | line-height: 2; 125 | text-align: left; 126 | font: inherit; 127 | font-size: 13px; 128 | color: inherit; 129 | border: none; 130 | background-color: transparent; 131 | cursor: default; 132 | outline: none; 133 | text-align: center; 134 | } 135 | .nav-footer-button:focus { 136 | color: var(--color-strong); 137 | } 138 | 139 | .nav-footer-logo { 140 | color: hsl(0,0%,66%); 141 | } 142 | .nav-footer-logo:focus { 143 | color: hsl(0,0%,33%); 144 | } 145 | 146 | /* Remove border on the logo */ 147 | .nav-footer-logo.nav-footer-logo { 148 | border-bottom: none; 149 | } 150 | -------------------------------------------------------------------------------- /ElectronNET-API-Demos/wwwroot/assets/css/print.css: -------------------------------------------------------------------------------- 1 | @media print { 2 | body { 3 | background: none; 4 | color: black !important; 5 | font-size: 70%; 6 | margin: 0; padding: 0; 7 | } 8 | 9 | h1 { 10 | font-size: 22px; 11 | } 12 | 13 | .nav, button, .demo-box:before, 14 | #pdf-path, header p { 15 | display: none; 16 | } 17 | 18 | .demo-box, h2, 19 | pre, code { 20 | padding: 0 !important; 21 | margin: 0 !important; 22 | } 23 | 24 | header { 25 | padding: 0 0 10px 0; 26 | } 27 | 28 | code, .support { 29 | font-size: 10px; 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /ElectronNET-API-Demos/wwwroot/assets/css/section.css: -------------------------------------------------------------------------------- 1 | /* Section ------------------ */ 2 | 3 | .section { 4 | position: absolute; 5 | top: 0; 6 | left: 0; 7 | right: 0; 8 | bottom: 0; 9 | overflow-x: hidden; 10 | overflow-y: auto; 11 | color: var(--color-accent); 12 | 13 | /* Hide */ 14 | pointer-events: none; 15 | visibility: hidden; 16 | opacity: 0; 17 | transform: translateX(-20px); 18 | transition: visibility 0s .12s linear , opacity .12s ease-in, transform .12s ease-in; 19 | } 20 | .section.is-shown { 21 | pointer-events: auto; 22 | visibility: visible; 23 | opacity: 1; 24 | transform: translateX(0); 25 | transition: visibility 0s 0s linear , opacity .36s ease-out, transform .36s ease-out; 26 | } 27 | 28 | .section h3, 29 | .section p { 30 | color: var(--color); 31 | } 32 | 33 | .section-wrapper { 34 | position: relative; 35 | max-width: 740px; 36 | margin: 0 auto; 37 | padding: 2rem 2rem 1rem 2rem; 38 | border-bottom: 1px solid var(--color-border); 39 | } 40 | @media (min-width: 940px) { 41 | .section-wrapper { 42 | padding-top: 4rem; 43 | } 44 | } 45 | 46 | .section-icon { 47 | width: 32px; 48 | height: 32px; 49 | vertical-align: middle; 50 | margin-right: .5em; 51 | } 52 | -------------------------------------------------------------------------------- /ElectronNET-API-Demos/wwwroot/assets/css/variables.css: -------------------------------------------------------------------------------- 1 | 2 | /* Custom Properties */ 3 | 4 | :root { 5 | --color: hsl(0,0%,22%); 6 | --color-subtle: hsl(0,0%,44%); 7 | --color-strong: hsl(0,0%,11%); 8 | --color-link: hsl(0,0%,22%); 9 | 10 | --color-border: hsl(0,0%,88%); 11 | --color-bg: hsl(0,0%,96%); 12 | 13 | --color-accent: black; /* Fallback */ 14 | } 15 | 16 | 17 | /* Category Colors */ 18 | 19 | .u-category-windows { --color-accent: hsl(116, 30%, 36%); } 20 | .u-category-menu { --color-accent: hsl(194, 60%, 36%); } 21 | .u-category-native-ui { --color-accent: hsl(222, 53%, 50%); } 22 | .u-category-communication { --color-accent: hsl(285, 47%, 46%); } 23 | .u-category-system { --color-accent: hsl(330, 65%, 48%); } 24 | .u-category-media { --color-accent: hsl( 36, 77%, 34%); } 25 | -------------------------------------------------------------------------------- /ElectronNET-API-Demos/wwwroot/assets/demo-btns.js: -------------------------------------------------------------------------------- 1 | const demoBtns = document.querySelectorAll('.js-container-target'); 2 | 3 | // Listen for demo button clicks 4 | Array.prototype.forEach.call(demoBtns, function (btn) { 5 | btn.addEventListener('click', function (event) { 6 | const parent = event.target.parentElement; 7 | 8 | // Toggles the "is-open" class on the demo's parent element. 9 | parent.classList.toggle('is-open'); 10 | }) 11 | }) 12 | -------------------------------------------------------------------------------- /ElectronNET-API-Demos/wwwroot/assets/ex-links.js: -------------------------------------------------------------------------------- 1 | (function () { 2 | const shell = require('electron').shell 3 | const links = document.querySelectorAll('a[href]') 4 | 5 | Array.prototype.forEach.call(links, function (link) { 6 | const url = link.getAttribute('href') 7 | if (url.indexOf('http') === 0) { 8 | link.addEventListener('click', function (e) { 9 | e.preventDefault() 10 | shell.openExternal(url) 11 | }) 12 | } 13 | }) 14 | }) 15 | -------------------------------------------------------------------------------- /ElectronNET-API-Demos/wwwroot/assets/img/about.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/electron.net-api-demos/97f2af56545b718ee87ca1e395a05a4413a117a9/ElectronNET-API-Demos/wwwroot/assets/img/about.png -------------------------------------------------------------------------------- /ElectronNET-API-Demos/wwwroot/assets/img/about@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/electron.net-api-demos/97f2af56545b718ee87ca1e395a05a4413a117a9/ElectronNET-API-Demos/wwwroot/assets/img/about@2x.png -------------------------------------------------------------------------------- /ElectronNET-API-Demos/wwwroot/assets/img/diagram.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/electron.net-api-demos/97f2af56545b718ee87ca1e395a05a4413a117a9/ElectronNET-API-Demos/wwwroot/assets/img/diagram.png -------------------------------------------------------------------------------- /ElectronNET-API-Demos/wwwroot/assets/img/heart.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/electron.net-api-demos/97f2af56545b718ee87ca1e395a05a4413a117a9/ElectronNET-API-Demos/wwwroot/assets/img/heart.jpg -------------------------------------------------------------------------------- /ElectronNET-API-Demos/wwwroot/assets/img/icons.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | -------------------------------------------------------------------------------- /ElectronNET-API-Demos/wwwroot/assets/img/loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/electron.net-api-demos/97f2af56545b718ee87ca1e395a05a4413a117a9/ElectronNET-API-Demos/wwwroot/assets/img/loading.gif -------------------------------------------------------------------------------- /ElectronNET-API-Demos/wwwroot/assets/img/programming.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/electron.net-api-demos/97f2af56545b718ee87ca1e395a05a4413a117a9/ElectronNET-API-Demos/wwwroot/assets/img/programming.png -------------------------------------------------------------------------------- /ElectronNET-API-Demos/wwwroot/assets/img/ui-terminology.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/electron.net-api-demos/97f2af56545b718ee87ca1e395a05a4413a117a9/ElectronNET-API-Demos/wwwroot/assets/img/ui-terminology.png -------------------------------------------------------------------------------- /ElectronNET-API-Demos/wwwroot/assets/imports.js: -------------------------------------------------------------------------------- 1 | const links = document.querySelectorAll('link[rel="import"]') 2 | 3 | // Import and add each page to the DOM 4 | Array.prototype.forEach.call(links, function (link) { 5 | let template = link.import.querySelector('.task-template') 6 | let clone = document.importNode(template.content, true) 7 | if (link.href.match('about.html')) { 8 | document.querySelector('body').appendChild(clone) 9 | } else { 10 | document.querySelector('.content').appendChild(clone) 11 | } 12 | }) 13 | -------------------------------------------------------------------------------- /ElectronNET-API-Demos/wwwroot/assets/mac/child.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | com.apple.security.app-sandbox 6 | 7 | com.apple.security.inherit 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /ElectronNET-API-Demos/wwwroot/assets/mac/info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleURLTypes 6 | 7 | 8 | CFBundleURLSchemes 9 | 10 | electron-api-demos 11 | 12 | CFBundleURLName 13 | Electron API Demos Protocol 14 | 15 | 16 | ElectronTeamID 17 | VEKTX9H2N7 18 | 19 | 20 | -------------------------------------------------------------------------------- /ElectronNET-API-Demos/wwwroot/assets/mac/parent.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | com.apple.security.app-sandbox 6 | 7 | com.apple.security.application-groups 8 | VEKTX9H2N7.com.github.electron-api-demos 9 | com.apple.security.files.user-selected.read-write 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /ElectronNET-API-Demos/wwwroot/assets/nav.js: -------------------------------------------------------------------------------- 1 | document.body.addEventListener('click', function (event) { 2 | if (event.target.dataset.section) { 3 | handleSectionTrigger(event) 4 | } else if (event.target.dataset.modal) { 5 | handleModalTrigger(event) 6 | } else if (event.target.classList.contains('modal-hide')) { 7 | hideAllModals() 8 | } 9 | }); 10 | 11 | function handleSectionTrigger(event) { 12 | hideAllSectionsAndDeselectButtons(); 13 | 14 | // Highlight clicked button and show view 15 | event.target.classList.add('is-selected'); 16 | 17 | // Display the current section 18 | const sectionId = event.target.dataset.section + '-section' 19 | document.getElementById(sectionId).classList.add('is-shown'); 20 | } 21 | 22 | function activateDefaultSection () { 23 | document.getElementById('button-windows').click() 24 | } 25 | 26 | function showMainContent() { 27 | showNav(); 28 | document.querySelector('.js-content').classList.add('is-shown'); 29 | } 30 | 31 | function handleModalTrigger(event) { 32 | hideAllModals(); 33 | const modalId = event.target.dataset.modal + '-modal'; 34 | 35 | if (modalId === 'about-modal') { 36 | hideNav(); 37 | } 38 | 39 | document.getElementById(modalId).classList.add('is-shown'); 40 | } 41 | 42 | function hideAllModals () { 43 | const modals = document.querySelectorAll('.modal.is-shown') 44 | Array.prototype.forEach.call(modals, function (modal) { 45 | modal.classList.remove('is-shown') 46 | }) 47 | showMainContent() 48 | } 49 | 50 | function hideAllSectionsAndDeselectButtons () { 51 | const sections = document.querySelectorAll('.js-section.is-shown') 52 | Array.prototype.forEach.call(sections, function (section) { 53 | section.classList.remove('is-shown') 54 | }) 55 | 56 | const buttons = document.querySelectorAll('.nav-button.is-selected') 57 | Array.prototype.forEach.call(buttons, function (button) { 58 | button.classList.remove('is-selected') 59 | }) 60 | } 61 | 62 | function displayAbout() { 63 | hideNav(); 64 | document.querySelector('#about-modal').classList.add('is-shown') 65 | } 66 | 67 | function hideNav() { 68 | document.querySelector('.js-nav').classList.remove('is-shown'); 69 | document.querySelector('.js-nav').style.display = 'none'; 70 | } 71 | 72 | function showNav() { 73 | document.querySelector('.js-nav').style.display = null; 74 | document.querySelector('.js-nav').classList.add('is-shown'); 75 | } 76 | 77 | activateDefaultSection(); 78 | displayAbout(); 79 | -------------------------------------------------------------------------------- /ElectronNET-API-Demos/wwwroot/assets/tiles/SampleAppx.150x150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/electron.net-api-demos/97f2af56545b718ee87ca1e395a05a4413a117a9/ElectronNET-API-Demos/wwwroot/assets/tiles/SampleAppx.150x150.png -------------------------------------------------------------------------------- /ElectronNET-API-Demos/wwwroot/assets/tiles/SampleAppx.310x150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/electron.net-api-demos/97f2af56545b718ee87ca1e395a05a4413a117a9/ElectronNET-API-Demos/wwwroot/assets/tiles/SampleAppx.310x150.png -------------------------------------------------------------------------------- /ElectronNET-API-Demos/wwwroot/assets/tiles/SampleAppx.44x44.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/electron.net-api-demos/97f2af56545b718ee87ca1e395a05a4413a117a9/ElectronNET-API-Demos/wwwroot/assets/tiles/SampleAppx.44x44.png -------------------------------------------------------------------------------- /ElectronNET-API-Demos/wwwroot/assets/tiles/SampleAppx.50x50.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nirzaf/electron.net-api-demos/97f2af56545b718ee87ca1e395a05a4413a117a9/ElectronNET-API-Demos/wwwroot/assets/tiles/SampleAppx.50x50.png -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2017 Gregor Biswanger, Robert Mühsig 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Electron.NET API Demos icon Electron.NET API Demos 2 | 3 | This is a desktop app that interactively and with sample code demonstrates core features of the [Electron.NET](https://github.com/ElectronNET/Electron.NET) API. It's built with Electron, too, of course. This app works on Windows, macOS and Linux operating systems. 4 | 5 | Use this app to see what you can do with Electron.NET and use the source code to learn how to create a basic Electron.NET app. 6 | 7 | This Demo-App based on the [Electron API Demos](https://github.com/electron/electron-api-demos) 8 | 9 | 10 | --- 11 | 12 | ## Using 13 | 14 | You'll need [Node.js (v.8.x)](https://nodejs.org) and [.NET Core SDK](https://www.microsoft.com/net/download/core) installed on your computer in order to start or build this app. 15 | 16 | ```bash 17 | $ dotnet tool install --global ElectronNET.CLI 18 | $ git clone https://github.com/ElectronNET/electron.net-api-demos.git 19 | $ cd electron.net-api-demos 20 | $ electronize start 21 | ``` 22 | 23 | **Enjoy!** 24 | --------------------------------------------------------------------------------