├── .gitattributes ├── .gitignore ├── .gitmodules ├── LICENSE ├── Screenshots ├── 0.png ├── 1.png ├── 2.png ├── 3.png ├── 4.png ├── 5.png └── demo.gif ├── Woop.sln ├── Woop ├── Actions │ └── FocusAction.cs ├── App.xaml ├── App.xaml.cs ├── Assets │ ├── BadgeLogo.scale-100.png │ ├── BadgeLogo.scale-125.png │ ├── BadgeLogo.scale-150.png │ ├── BadgeLogo.scale-200.png │ ├── BadgeLogo.scale-400.png │ ├── LargeTile.scale-100.png │ ├── LargeTile.scale-125.png │ ├── LargeTile.scale-150.png │ ├── LargeTile.scale-200.png │ ├── LargeTile.scale-400.png │ ├── LockScreenLogo.scale-200.png │ ├── Require.js │ ├── SmallTile.scale-100.png │ ├── SmallTile.scale-125.png │ ├── SmallTile.scale-150.png │ ├── SmallTile.scale-200.png │ ├── SmallTile.scale-400.png │ ├── SplashScreen.scale-100.png │ ├── SplashScreen.scale-125.png │ ├── SplashScreen.scale-150.png │ ├── SplashScreen.scale-200.png │ ├── SplashScreen.scale-400.png │ ├── Square150x150Logo.scale-100.png │ ├── Square150x150Logo.scale-125.png │ ├── Square150x150Logo.scale-150.png │ ├── Square150x150Logo.scale-200.png │ ├── Square150x150Logo.scale-400.png │ ├── Square44x44Logo.altform-lightunplated_targetsize-16.png │ ├── Square44x44Logo.altform-lightunplated_targetsize-24.png │ ├── Square44x44Logo.altform-lightunplated_targetsize-256.png │ ├── Square44x44Logo.altform-lightunplated_targetsize-32.png │ ├── Square44x44Logo.altform-lightunplated_targetsize-48.png │ ├── Square44x44Logo.altform-unplated_targetsize-16.png │ ├── Square44x44Logo.altform-unplated_targetsize-256.png │ ├── Square44x44Logo.altform-unplated_targetsize-32.png │ ├── Square44x44Logo.altform-unplated_targetsize-48.png │ ├── Square44x44Logo.scale-100.png │ ├── Square44x44Logo.scale-125.png │ ├── Square44x44Logo.scale-150.png │ ├── Square44x44Logo.scale-200.png │ ├── Square44x44Logo.scale-400.png │ ├── Square44x44Logo.targetsize-16.png │ ├── Square44x44Logo.targetsize-24.png │ ├── Square44x44Logo.targetsize-24_altform-unplated.png │ ├── Square44x44Logo.targetsize-256.png │ ├── Square44x44Logo.targetsize-32.png │ ├── Square44x44Logo.targetsize-48.png │ ├── StoreLogo.backup.png │ ├── StoreLogo.scale-100.png │ ├── StoreLogo.scale-125.png │ ├── StoreLogo.scale-150.png │ ├── StoreLogo.scale-200.png │ ├── StoreLogo.scale-400.png │ ├── Wide310x150Logo.scale-100.png │ ├── Wide310x150Logo.scale-125.png │ ├── Wide310x150Logo.scale-150.png │ ├── Wide310x150Logo.scale-200.png │ ├── Wide310x150Logo.scale-400.png │ ├── dark │ │ ├── HTML.png │ │ ├── abacus.png │ │ ├── broom.png │ │ ├── camel.png │ │ ├── collapse.png │ │ ├── color-wheel.png │ │ ├── colosseum.png │ │ ├── command.png │ │ ├── counter.png │ │ ├── dice.png │ │ ├── elephant.png │ │ ├── filtration.png │ │ ├── fingerprint.png │ │ ├── flask.png │ │ ├── flip.png │ │ ├── globe.png │ │ ├── identification.png │ │ ├── kebab.png │ │ ├── link.png │ │ ├── metamorphose.png │ │ ├── pineapple.png │ │ ├── quote.png │ │ ├── roman.png │ │ ├── scissors.png │ │ ├── snake.png │ │ ├── sort-characters.png │ │ ├── sort-numbers.png │ │ ├── table.png │ │ ├── term.png │ │ ├── translation.png │ │ ├── type.png │ │ ├── unknown.png │ │ ├── watch.png │ │ └── website.png │ ├── light │ │ ├── HTML.png │ │ ├── abacus.png │ │ ├── broom.png │ │ ├── camel.png │ │ ├── collapse.png │ │ ├── color-wheel.png │ │ ├── colosseum.png │ │ ├── command.png │ │ ├── counter.png │ │ ├── dice.png │ │ ├── elephant.png │ │ ├── filtration.png │ │ ├── fingerprint.png │ │ ├── flask.png │ │ ├── flip.png │ │ ├── globe.png │ │ ├── identification.png │ │ ├── kebab.png │ │ ├── link.png │ │ ├── metamorphose.png │ │ ├── pineapple.png │ │ ├── quote.png │ │ ├── roman.png │ │ ├── scissors.png │ │ ├── snake.png │ │ ├── sort-characters.png │ │ ├── sort-numbers.png │ │ ├── table.png │ │ ├── term.png │ │ ├── translation.png │ │ ├── type.png │ │ ├── unknown.png │ │ ├── watch.png │ │ └── website.png │ └── third-party-licenses.txt ├── Converters │ ├── ElementThemeToTextConverter.cs │ ├── IconNameToIconConverter.cs │ ├── StatusTypeToColorConverter.cs │ └── StatusTypeToElementThemeConverter.cs ├── Models │ ├── Script.cs │ ├── ScriptExecution.cs │ ├── ScriptMetadata.cs │ └── Selection.cs ├── Package.appxmanifest ├── Properties │ ├── AssemblyInfo.cs │ └── Default.rd.xml ├── Services │ ├── BoopPseudoLanguage.cs │ ├── RequireLoader.cs │ ├── ScriptManager.cs │ └── SettingsService.cs ├── ViewModels │ ├── MainViewModel.cs │ ├── ScriptViewModel.cs │ ├── SettingsViewModel.cs │ └── StatusViewModel.cs ├── Views │ ├── AboutDialog.xaml │ ├── AboutDialog.xaml.cs │ ├── ColorCodeThemes.cs │ ├── LineNumbers.xaml │ ├── LineNumbers.xaml.cs │ ├── MainPage.xaml │ ├── MainPage.xaml.cs │ ├── RtfFormatter.cs │ ├── SettingsDialog.xaml │ ├── SettingsDialog.xaml.cs │ └── SyntaxHighlightingRichEditBox.cs └── Woop.csproj ├── icons ├── woop_logo.png ├── woop_logo.svg ├── woop_logo_shadow.png └── woop_logo_shadow.svg ├── readme.md └── store-badge.png /.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 | Woop/Assets/Scripts/ 7 | 8 | # User-specific files 9 | *.rsuser 10 | *.suo 11 | *.user 12 | *.userosscache 13 | *.sln.docstates 14 | 15 | # User-specific files (MonoDevelop/Xamarin Studio) 16 | *.userprefs 17 | 18 | # Build results 19 | [Dd]ebug/ 20 | [Dd]ebugPublic/ 21 | [Rr]elease/ 22 | [Rr]eleases/ 23 | x64/ 24 | x86/ 25 | [Aa][Rr][Mm]/ 26 | [Aa][Rr][Mm]64/ 27 | bld/ 28 | [Bb]in/ 29 | [Oo]bj/ 30 | [Ll]og/ 31 | 32 | # Visual Studio 2015/2017 cache/options directory 33 | .vs/ 34 | # Uncomment if you have tasks that create the project's static files in wwwroot 35 | #wwwroot/ 36 | 37 | # Visual Studio 2017 auto generated files 38 | Generated\ Files/ 39 | 40 | # MSTest test Results 41 | [Tt]est[Rr]esult*/ 42 | [Bb]uild[Ll]og.* 43 | 44 | # NUNIT 45 | *.VisualState.xml 46 | TestResult.xml 47 | 48 | # Build Results of an ATL Project 49 | [Dd]ebugPS/ 50 | [Rr]eleasePS/ 51 | dlldata.c 52 | 53 | # Benchmark Results 54 | BenchmarkDotNet.Artifacts/ 55 | 56 | # .NET Core 57 | project.lock.json 58 | project.fragment.lock.json 59 | artifacts/ 60 | 61 | # StyleCop 62 | StyleCopReport.xml 63 | 64 | # Files built by Visual Studio 65 | *_i.c 66 | *_p.c 67 | *_h.h 68 | *.ilk 69 | *.meta 70 | *.obj 71 | *.iobj 72 | *.pch 73 | *.pdb 74 | *.ipdb 75 | *.pgc 76 | *.pgd 77 | *.rsp 78 | *.sbr 79 | *.tlb 80 | *.tli 81 | *.tlh 82 | *.tmp 83 | *.tmp_proj 84 | *_wpftmp.csproj 85 | *.log 86 | *.vspscc 87 | *.vssscc 88 | .builds 89 | *.pidb 90 | *.svclog 91 | *.scc 92 | 93 | # Chutzpah Test files 94 | _Chutzpah* 95 | 96 | # Visual C++ cache files 97 | ipch/ 98 | *.aps 99 | *.ncb 100 | *.opendb 101 | *.opensdf 102 | *.sdf 103 | *.cachefile 104 | *.VC.db 105 | *.VC.VC.opendb 106 | 107 | # Visual Studio profiler 108 | *.psess 109 | *.vsp 110 | *.vspx 111 | *.sap 112 | 113 | # Visual Studio Trace Files 114 | *.e2e 115 | 116 | # TFS 2012 Local Workspace 117 | $tf/ 118 | 119 | # Guidance Automation Toolkit 120 | *.gpState 121 | 122 | # ReSharper is a .NET coding add-in 123 | _ReSharper*/ 124 | *.[Rr]e[Ss]harper 125 | *.DotSettings.user 126 | 127 | # JustCode is a .NET coding add-in 128 | .JustCode 129 | 130 | # TeamCity is a build add-in 131 | _TeamCity* 132 | 133 | # DotCover is a Code Coverage Tool 134 | *.dotCover 135 | 136 | # AxoCover is a Code Coverage Tool 137 | .axoCover/* 138 | !.axoCover/settings.json 139 | 140 | # Visual Studio code coverage results 141 | *.coverage 142 | *.coveragexml 143 | 144 | # NCrunch 145 | _NCrunch_* 146 | .*crunch*.local.xml 147 | nCrunchTemp_* 148 | 149 | # MightyMoose 150 | *.mm.* 151 | AutoTest.Net/ 152 | 153 | # Web workbench (sass) 154 | .sass-cache/ 155 | 156 | # Installshield output folder 157 | [Ee]xpress/ 158 | 159 | # DocProject is a documentation generator add-in 160 | DocProject/buildhelp/ 161 | DocProject/Help/*.HxT 162 | DocProject/Help/*.HxC 163 | DocProject/Help/*.hhc 164 | DocProject/Help/*.hhk 165 | DocProject/Help/*.hhp 166 | DocProject/Help/Html2 167 | DocProject/Help/html 168 | 169 | # Click-Once directory 170 | publish/ 171 | 172 | # Publish Web Output 173 | *.[Pp]ublish.xml 174 | *.azurePubxml 175 | # Note: Comment the next line if you want to checkin your web deploy settings, 176 | # but database connection strings (with potential passwords) will be unencrypted 177 | *.pubxml 178 | *.publishproj 179 | 180 | # Microsoft Azure Web App publish settings. Comment the next line if you want to 181 | # checkin your Azure Web App publish settings, but sensitive information contained 182 | # in these scripts will be unencrypted 183 | PublishScripts/ 184 | 185 | # NuGet Packages 186 | *.nupkg 187 | # The packages folder can be ignored because of Package Restore 188 | **/[Pp]ackages/* 189 | # except build/, which is used as an MSBuild target. 190 | !**/[Pp]ackages/build/ 191 | # Uncomment if necessary however generally it will be regenerated when needed 192 | #!**/[Pp]ackages/repositories.config 193 | # NuGet v3's project.json files produces more ignorable files 194 | *.nuget.props 195 | *.nuget.targets 196 | 197 | # Microsoft Azure Build Output 198 | csx/ 199 | *.build.csdef 200 | 201 | # Microsoft Azure Emulator 202 | ecf/ 203 | rcf/ 204 | 205 | # Windows Store app package directories and files 206 | AppPackages/ 207 | BundleArtifacts/ 208 | Package.StoreAssociation.xml 209 | _pkginfo.txt 210 | *.appx 211 | 212 | # Visual Studio cache files 213 | # files ending in .cache can be ignored 214 | *.[Cc]ache 215 | # but keep track of directories ending in .cache 216 | !?*.[Cc]ache/ 217 | 218 | # Others 219 | ClientBin/ 220 | ~$* 221 | *~ 222 | *.dbmdl 223 | *.dbproj.schemaview 224 | *.jfm 225 | *.pfx 226 | *.publishsettings 227 | orleans.codegen.cs 228 | 229 | # Including strong name files can present a security risk 230 | # (https://github.com/github/gitignore/pull/2483#issue-259490424) 231 | #*.snk 232 | 233 | # Since there are multiple workflows, uncomment next line to ignore bower_components 234 | # (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) 235 | #bower_components/ 236 | 237 | # RIA/Silverlight projects 238 | Generated_Code/ 239 | 240 | # Backup & report files from converting an old project file 241 | # to a newer Visual Studio version. Backup files are not needed, 242 | # because we have git ;-) 243 | _UpgradeReport_Files/ 244 | Backup*/ 245 | UpgradeLog*.XML 246 | UpgradeLog*.htm 247 | ServiceFabricBackup/ 248 | *.rptproj.bak 249 | 250 | # SQL Server files 251 | *.mdf 252 | *.ldf 253 | *.ndf 254 | 255 | # Business Intelligence projects 256 | *.rdl.data 257 | *.bim.layout 258 | *.bim_*.settings 259 | *.rptproj.rsuser 260 | *- Backup*.rdl 261 | 262 | # Microsoft Fakes 263 | FakesAssemblies/ 264 | 265 | # GhostDoc plugin setting file 266 | *.GhostDoc.xml 267 | 268 | # Node.js Tools for Visual Studio 269 | .ntvs_analysis.dat 270 | node_modules/ 271 | 272 | # Visual Studio 6 build log 273 | *.plg 274 | 275 | # Visual Studio 6 workspace options file 276 | *.opt 277 | 278 | # Visual Studio 6 auto-generated workspace file (contains which files were open etc.) 279 | *.vbw 280 | 281 | # Visual Studio LightSwitch build output 282 | **/*.HTMLClient/GeneratedArtifacts 283 | **/*.DesktopClient/GeneratedArtifacts 284 | **/*.DesktopClient/ModelManifest.xml 285 | **/*.Server/GeneratedArtifacts 286 | **/*.Server/ModelManifest.xml 287 | _Pvt_Extensions 288 | 289 | # Paket dependency manager 290 | .paket/paket.exe 291 | paket-files/ 292 | 293 | # FAKE - F# Make 294 | .fake/ 295 | 296 | # JetBrains Rider 297 | .idea/ 298 | *.sln.iml 299 | 300 | # CodeRush personal settings 301 | .cr/personal 302 | 303 | # Python Tools for Visual Studio (PTVS) 304 | __pycache__/ 305 | *.pyc 306 | 307 | # Cake - Uncomment if you are using it 308 | # tools/** 309 | # !tools/packages.config 310 | 311 | # Tabs Studio 312 | *.tss 313 | 314 | # Telerik's JustMock configuration file 315 | *.jmconfig 316 | 317 | # BizTalk build output 318 | *.btp.cs 319 | *.btm.cs 320 | *.odx.cs 321 | *.xsd.cs 322 | 323 | # OpenCover UI analysis results 324 | OpenCover/ 325 | 326 | # Azure Stream Analytics local run output 327 | ASALocalRun/ 328 | 329 | # MSBuild Binary and Structured Log 330 | *.binlog 331 | 332 | # NVidia Nsight GPU debugger configuration file 333 | *.nvuser 334 | 335 | # MFractors (Xamarin productivity tool) working folder 336 | .mfractor/ 337 | 338 | # Local History for Visual Studio 339 | .localhistory/ 340 | 341 | # BeatPulse healthcheck temp database 342 | healthchecksdb -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "submodules/Boop"] 2 | path = submodules/Boop 3 | url = https://github.com/IvanMathy/Boop 4 | -------------------------------------------------------------------------------- /Screenshots/0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felixse/Woop/0e242b6144dec5dbbc42aca3552e4aed63085bc1/Screenshots/0.png -------------------------------------------------------------------------------- /Screenshots/1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felixse/Woop/0e242b6144dec5dbbc42aca3552e4aed63085bc1/Screenshots/1.png -------------------------------------------------------------------------------- /Screenshots/2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felixse/Woop/0e242b6144dec5dbbc42aca3552e4aed63085bc1/Screenshots/2.png -------------------------------------------------------------------------------- /Screenshots/3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felixse/Woop/0e242b6144dec5dbbc42aca3552e4aed63085bc1/Screenshots/3.png -------------------------------------------------------------------------------- /Screenshots/4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felixse/Woop/0e242b6144dec5dbbc42aca3552e4aed63085bc1/Screenshots/4.png -------------------------------------------------------------------------------- /Screenshots/5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felixse/Woop/0e242b6144dec5dbbc42aca3552e4aed63085bc1/Screenshots/5.png -------------------------------------------------------------------------------- /Screenshots/demo.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felixse/Woop/0e242b6144dec5dbbc42aca3552e4aed63085bc1/Screenshots/demo.gif -------------------------------------------------------------------------------- /Woop.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio Version 16 4 | VisualStudioVersion = 16.0.30503.244 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Woop", "Woop\Woop.csproj", "{FF2D47DE-F11F-445F-8C46-1AC5378DBC03}" 7 | EndProject 8 | Global 9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 10 | Debug|Any CPU = Debug|Any CPU 11 | Debug|ARM = Debug|ARM 12 | Debug|ARM64 = Debug|ARM64 13 | Debug|x64 = Debug|x64 14 | Debug|x86 = Debug|x86 15 | Release|Any CPU = Release|Any CPU 16 | Release|ARM = Release|ARM 17 | Release|ARM64 = Release|ARM64 18 | Release|x64 = Release|x64 19 | Release|x86 = Release|x86 20 | EndGlobalSection 21 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 22 | {FF2D47DE-F11F-445F-8C46-1AC5378DBC03}.Debug|Any CPU.ActiveCfg = Debug|x86 23 | {FF2D47DE-F11F-445F-8C46-1AC5378DBC03}.Debug|ARM.ActiveCfg = Debug|ARM 24 | {FF2D47DE-F11F-445F-8C46-1AC5378DBC03}.Debug|ARM.Build.0 = Debug|ARM 25 | {FF2D47DE-F11F-445F-8C46-1AC5378DBC03}.Debug|ARM.Deploy.0 = Debug|ARM 26 | {FF2D47DE-F11F-445F-8C46-1AC5378DBC03}.Debug|ARM64.ActiveCfg = Debug|ARM64 27 | {FF2D47DE-F11F-445F-8C46-1AC5378DBC03}.Debug|ARM64.Build.0 = Debug|ARM64 28 | {FF2D47DE-F11F-445F-8C46-1AC5378DBC03}.Debug|ARM64.Deploy.0 = Debug|ARM64 29 | {FF2D47DE-F11F-445F-8C46-1AC5378DBC03}.Debug|x64.ActiveCfg = Debug|x64 30 | {FF2D47DE-F11F-445F-8C46-1AC5378DBC03}.Debug|x64.Build.0 = Debug|x64 31 | {FF2D47DE-F11F-445F-8C46-1AC5378DBC03}.Debug|x64.Deploy.0 = Debug|x64 32 | {FF2D47DE-F11F-445F-8C46-1AC5378DBC03}.Debug|x86.ActiveCfg = Debug|x86 33 | {FF2D47DE-F11F-445F-8C46-1AC5378DBC03}.Debug|x86.Build.0 = Debug|x86 34 | {FF2D47DE-F11F-445F-8C46-1AC5378DBC03}.Debug|x86.Deploy.0 = Debug|x86 35 | {FF2D47DE-F11F-445F-8C46-1AC5378DBC03}.Release|Any CPU.ActiveCfg = Release|x86 36 | {FF2D47DE-F11F-445F-8C46-1AC5378DBC03}.Release|ARM.ActiveCfg = Release|ARM 37 | {FF2D47DE-F11F-445F-8C46-1AC5378DBC03}.Release|ARM.Build.0 = Release|ARM 38 | {FF2D47DE-F11F-445F-8C46-1AC5378DBC03}.Release|ARM.Deploy.0 = Release|ARM 39 | {FF2D47DE-F11F-445F-8C46-1AC5378DBC03}.Release|ARM64.ActiveCfg = Release|ARM64 40 | {FF2D47DE-F11F-445F-8C46-1AC5378DBC03}.Release|ARM64.Build.0 = Release|ARM64 41 | {FF2D47DE-F11F-445F-8C46-1AC5378DBC03}.Release|ARM64.Deploy.0 = Release|ARM64 42 | {FF2D47DE-F11F-445F-8C46-1AC5378DBC03}.Release|x64.ActiveCfg = Release|x64 43 | {FF2D47DE-F11F-445F-8C46-1AC5378DBC03}.Release|x64.Build.0 = Release|x64 44 | {FF2D47DE-F11F-445F-8C46-1AC5378DBC03}.Release|x64.Deploy.0 = Release|x64 45 | {FF2D47DE-F11F-445F-8C46-1AC5378DBC03}.Release|x86.ActiveCfg = Release|x86 46 | {FF2D47DE-F11F-445F-8C46-1AC5378DBC03}.Release|x86.Build.0 = Release|x86 47 | {FF2D47DE-F11F-445F-8C46-1AC5378DBC03}.Release|x86.Deploy.0 = Release|x86 48 | EndGlobalSection 49 | GlobalSection(SolutionProperties) = preSolution 50 | HideSolutionNode = FALSE 51 | EndGlobalSection 52 | GlobalSection(ExtensibilityGlobals) = postSolution 53 | SolutionGuid = {D4D87441-3610-4D94-8D03-9663E678AC5A} 54 | EndGlobalSection 55 | EndGlobal 56 | -------------------------------------------------------------------------------- /Woop/Actions/FocusAction.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Xaml.Interactivity; 2 | using Windows.UI.Xaml; 3 | using Windows.UI.Xaml.Controls; 4 | 5 | namespace Woop.Actions 6 | { 7 | public class FocusAction : DependencyObject, IAction 8 | { 9 | public object Execute(object sender, object parameter) 10 | { 11 | var control = TargetObject ?? sender as Control; 12 | if (control != null) 13 | { 14 | if (!control.IsLoaded) 15 | control.Loaded += Control_Loaded; 16 | else 17 | control.Focus(FocusState.Programmatic); 18 | } 19 | 20 | return null; 21 | } 22 | 23 | private void Control_Loaded(object sender, RoutedEventArgs e) 24 | { 25 | Control control = sender as Control; 26 | control.Focus(FocusState.Programmatic); 27 | control.Loaded -= Control_Loaded; // won't be needed anymore. Remove reference just in case 28 | } 29 | 30 | public Control TargetObject 31 | { 32 | get { return (Control)GetValue(TargetObjectProperty); } 33 | set { SetValue(TargetObjectProperty, value); } 34 | } 35 | 36 | public static readonly DependencyProperty TargetObjectProperty = 37 | DependencyProperty.Register(nameof(TargetObject), typeof(Control), typeof(FocusAction), new PropertyMetadata(null)); 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /Woop/App.xaml: -------------------------------------------------------------------------------- 1 |  7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | -------------------------------------------------------------------------------- /Woop/App.xaml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using Windows.ApplicationModel; 3 | using Windows.ApplicationModel.Activation; 4 | using Windows.UI.Xaml; 5 | using Windows.UI.Xaml.Controls; 6 | using Windows.UI.Xaml.Navigation; 7 | using Woop.Services; 8 | using Woop.Views; 9 | 10 | namespace Woop 11 | { 12 | /// 13 | /// Provides application-specific behavior to supplement the default Application class. 14 | /// 15 | sealed partial class App : Application 16 | { 17 | private readonly SettingsService _settingsService; 18 | 19 | /// 20 | /// Initializes the singleton application object. This is the first line of authored code 21 | /// executed, and as such is the logical equivalent of main() or WinMain(). 22 | /// 23 | public App() 24 | { 25 | this.InitializeComponent(); 26 | this.Suspending += OnSuspending; 27 | 28 | _settingsService = new SettingsService(); 29 | 30 | if (_settingsService.ApplicationTheme != ElementTheme.Default) 31 | { 32 | App.Current.RequestedTheme = _settingsService.ApplicationTheme == ElementTheme.Light ? ApplicationTheme.Light : ApplicationTheme.Dark; 33 | } 34 | } 35 | 36 | /// 37 | /// Invoked when the application is launched normally by the end user. Other entry points 38 | /// will be used such as when the application is launched to open a specific file. 39 | /// 40 | /// Details about the launch request and process. 41 | protected override void OnLaunched(LaunchActivatedEventArgs e) 42 | { 43 | Frame rootFrame = Window.Current.Content as Frame; 44 | 45 | // Do not repeat app initialization when the Window already has content, 46 | // just ensure that the window is active 47 | if (rootFrame == null) 48 | { 49 | // Create a Frame to act as the navigation context and navigate to the first page 50 | rootFrame = new Frame(); 51 | 52 | rootFrame.NavigationFailed += OnNavigationFailed; 53 | 54 | if (e.PreviousExecutionState == ApplicationExecutionState.Terminated) 55 | { 56 | //TODO: Load state from previously suspended application 57 | } 58 | 59 | // Place the frame in the current Window 60 | Window.Current.Content = rootFrame; 61 | } 62 | 63 | if (e.PrelaunchActivated == false) 64 | { 65 | if (rootFrame.Content == null) 66 | { 67 | // When the navigation stack isn't restored navigate to the first page, 68 | // configuring the new page by passing required information as a navigation 69 | // parameter 70 | rootFrame.Navigate(typeof(MainPage), e.Arguments); 71 | } 72 | // Ensure the current window is active 73 | Window.Current.Activate(); 74 | } 75 | } 76 | 77 | /// 78 | /// Invoked when Navigation to a certain page fails 79 | /// 80 | /// The Frame which failed navigation 81 | /// Details about the navigation failure 82 | void OnNavigationFailed(object sender, NavigationFailedEventArgs e) 83 | { 84 | throw new Exception("Failed to load Page " + e.SourcePageType.FullName); 85 | } 86 | 87 | /// 88 | /// Invoked when application execution is being suspended. Application state is saved 89 | /// without knowing whether the application will be terminated or resumed with the contents 90 | /// of memory still intact. 91 | /// 92 | /// The source of the suspend request. 93 | /// Details about the suspend request. 94 | private void OnSuspending(object sender, SuspendingEventArgs e) 95 | { 96 | var deferral = e.SuspendingOperation.GetDeferral(); 97 | //TODO: Save application state and stop any background activity 98 | deferral.Complete(); 99 | } 100 | } 101 | } 102 | -------------------------------------------------------------------------------- /Woop/Assets/BadgeLogo.scale-100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felixse/Woop/0e242b6144dec5dbbc42aca3552e4aed63085bc1/Woop/Assets/BadgeLogo.scale-100.png -------------------------------------------------------------------------------- /Woop/Assets/BadgeLogo.scale-125.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felixse/Woop/0e242b6144dec5dbbc42aca3552e4aed63085bc1/Woop/Assets/BadgeLogo.scale-125.png -------------------------------------------------------------------------------- /Woop/Assets/BadgeLogo.scale-150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felixse/Woop/0e242b6144dec5dbbc42aca3552e4aed63085bc1/Woop/Assets/BadgeLogo.scale-150.png -------------------------------------------------------------------------------- /Woop/Assets/BadgeLogo.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felixse/Woop/0e242b6144dec5dbbc42aca3552e4aed63085bc1/Woop/Assets/BadgeLogo.scale-200.png -------------------------------------------------------------------------------- /Woop/Assets/BadgeLogo.scale-400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felixse/Woop/0e242b6144dec5dbbc42aca3552e4aed63085bc1/Woop/Assets/BadgeLogo.scale-400.png -------------------------------------------------------------------------------- /Woop/Assets/LargeTile.scale-100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felixse/Woop/0e242b6144dec5dbbc42aca3552e4aed63085bc1/Woop/Assets/LargeTile.scale-100.png -------------------------------------------------------------------------------- /Woop/Assets/LargeTile.scale-125.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felixse/Woop/0e242b6144dec5dbbc42aca3552e4aed63085bc1/Woop/Assets/LargeTile.scale-125.png -------------------------------------------------------------------------------- /Woop/Assets/LargeTile.scale-150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felixse/Woop/0e242b6144dec5dbbc42aca3552e4aed63085bc1/Woop/Assets/LargeTile.scale-150.png -------------------------------------------------------------------------------- /Woop/Assets/LargeTile.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felixse/Woop/0e242b6144dec5dbbc42aca3552e4aed63085bc1/Woop/Assets/LargeTile.scale-200.png -------------------------------------------------------------------------------- /Woop/Assets/LargeTile.scale-400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felixse/Woop/0e242b6144dec5dbbc42aca3552e4aed63085bc1/Woop/Assets/LargeTile.scale-400.png -------------------------------------------------------------------------------- /Woop/Assets/LockScreenLogo.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felixse/Woop/0e242b6144dec5dbbc42aca3552e4aed63085bc1/Woop/Assets/LockScreenLogo.scale-200.png -------------------------------------------------------------------------------- /Woop/Assets/Require.js: -------------------------------------------------------------------------------- 1 | function require(name) { 2 | const module = { exports: {} }; 3 | ((module, exports) => { 4 | eval(_loader.Load(name)) 5 | })(module, module.exports); 6 | return module.exports; 7 | }; -------------------------------------------------------------------------------- /Woop/Assets/SmallTile.scale-100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felixse/Woop/0e242b6144dec5dbbc42aca3552e4aed63085bc1/Woop/Assets/SmallTile.scale-100.png -------------------------------------------------------------------------------- /Woop/Assets/SmallTile.scale-125.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felixse/Woop/0e242b6144dec5dbbc42aca3552e4aed63085bc1/Woop/Assets/SmallTile.scale-125.png -------------------------------------------------------------------------------- /Woop/Assets/SmallTile.scale-150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felixse/Woop/0e242b6144dec5dbbc42aca3552e4aed63085bc1/Woop/Assets/SmallTile.scale-150.png -------------------------------------------------------------------------------- /Woop/Assets/SmallTile.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felixse/Woop/0e242b6144dec5dbbc42aca3552e4aed63085bc1/Woop/Assets/SmallTile.scale-200.png -------------------------------------------------------------------------------- /Woop/Assets/SmallTile.scale-400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felixse/Woop/0e242b6144dec5dbbc42aca3552e4aed63085bc1/Woop/Assets/SmallTile.scale-400.png -------------------------------------------------------------------------------- /Woop/Assets/SplashScreen.scale-100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felixse/Woop/0e242b6144dec5dbbc42aca3552e4aed63085bc1/Woop/Assets/SplashScreen.scale-100.png -------------------------------------------------------------------------------- /Woop/Assets/SplashScreen.scale-125.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felixse/Woop/0e242b6144dec5dbbc42aca3552e4aed63085bc1/Woop/Assets/SplashScreen.scale-125.png -------------------------------------------------------------------------------- /Woop/Assets/SplashScreen.scale-150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felixse/Woop/0e242b6144dec5dbbc42aca3552e4aed63085bc1/Woop/Assets/SplashScreen.scale-150.png -------------------------------------------------------------------------------- /Woop/Assets/SplashScreen.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felixse/Woop/0e242b6144dec5dbbc42aca3552e4aed63085bc1/Woop/Assets/SplashScreen.scale-200.png -------------------------------------------------------------------------------- /Woop/Assets/SplashScreen.scale-400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felixse/Woop/0e242b6144dec5dbbc42aca3552e4aed63085bc1/Woop/Assets/SplashScreen.scale-400.png -------------------------------------------------------------------------------- /Woop/Assets/Square150x150Logo.scale-100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felixse/Woop/0e242b6144dec5dbbc42aca3552e4aed63085bc1/Woop/Assets/Square150x150Logo.scale-100.png -------------------------------------------------------------------------------- /Woop/Assets/Square150x150Logo.scale-125.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felixse/Woop/0e242b6144dec5dbbc42aca3552e4aed63085bc1/Woop/Assets/Square150x150Logo.scale-125.png -------------------------------------------------------------------------------- /Woop/Assets/Square150x150Logo.scale-150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felixse/Woop/0e242b6144dec5dbbc42aca3552e4aed63085bc1/Woop/Assets/Square150x150Logo.scale-150.png -------------------------------------------------------------------------------- /Woop/Assets/Square150x150Logo.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felixse/Woop/0e242b6144dec5dbbc42aca3552e4aed63085bc1/Woop/Assets/Square150x150Logo.scale-200.png -------------------------------------------------------------------------------- /Woop/Assets/Square150x150Logo.scale-400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felixse/Woop/0e242b6144dec5dbbc42aca3552e4aed63085bc1/Woop/Assets/Square150x150Logo.scale-400.png -------------------------------------------------------------------------------- /Woop/Assets/Square44x44Logo.altform-lightunplated_targetsize-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felixse/Woop/0e242b6144dec5dbbc42aca3552e4aed63085bc1/Woop/Assets/Square44x44Logo.altform-lightunplated_targetsize-16.png -------------------------------------------------------------------------------- /Woop/Assets/Square44x44Logo.altform-lightunplated_targetsize-24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felixse/Woop/0e242b6144dec5dbbc42aca3552e4aed63085bc1/Woop/Assets/Square44x44Logo.altform-lightunplated_targetsize-24.png -------------------------------------------------------------------------------- /Woop/Assets/Square44x44Logo.altform-lightunplated_targetsize-256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felixse/Woop/0e242b6144dec5dbbc42aca3552e4aed63085bc1/Woop/Assets/Square44x44Logo.altform-lightunplated_targetsize-256.png -------------------------------------------------------------------------------- /Woop/Assets/Square44x44Logo.altform-lightunplated_targetsize-32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felixse/Woop/0e242b6144dec5dbbc42aca3552e4aed63085bc1/Woop/Assets/Square44x44Logo.altform-lightunplated_targetsize-32.png -------------------------------------------------------------------------------- /Woop/Assets/Square44x44Logo.altform-lightunplated_targetsize-48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felixse/Woop/0e242b6144dec5dbbc42aca3552e4aed63085bc1/Woop/Assets/Square44x44Logo.altform-lightunplated_targetsize-48.png -------------------------------------------------------------------------------- /Woop/Assets/Square44x44Logo.altform-unplated_targetsize-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felixse/Woop/0e242b6144dec5dbbc42aca3552e4aed63085bc1/Woop/Assets/Square44x44Logo.altform-unplated_targetsize-16.png -------------------------------------------------------------------------------- /Woop/Assets/Square44x44Logo.altform-unplated_targetsize-256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felixse/Woop/0e242b6144dec5dbbc42aca3552e4aed63085bc1/Woop/Assets/Square44x44Logo.altform-unplated_targetsize-256.png -------------------------------------------------------------------------------- /Woop/Assets/Square44x44Logo.altform-unplated_targetsize-32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felixse/Woop/0e242b6144dec5dbbc42aca3552e4aed63085bc1/Woop/Assets/Square44x44Logo.altform-unplated_targetsize-32.png -------------------------------------------------------------------------------- /Woop/Assets/Square44x44Logo.altform-unplated_targetsize-48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felixse/Woop/0e242b6144dec5dbbc42aca3552e4aed63085bc1/Woop/Assets/Square44x44Logo.altform-unplated_targetsize-48.png -------------------------------------------------------------------------------- /Woop/Assets/Square44x44Logo.scale-100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felixse/Woop/0e242b6144dec5dbbc42aca3552e4aed63085bc1/Woop/Assets/Square44x44Logo.scale-100.png -------------------------------------------------------------------------------- /Woop/Assets/Square44x44Logo.scale-125.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felixse/Woop/0e242b6144dec5dbbc42aca3552e4aed63085bc1/Woop/Assets/Square44x44Logo.scale-125.png -------------------------------------------------------------------------------- /Woop/Assets/Square44x44Logo.scale-150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felixse/Woop/0e242b6144dec5dbbc42aca3552e4aed63085bc1/Woop/Assets/Square44x44Logo.scale-150.png -------------------------------------------------------------------------------- /Woop/Assets/Square44x44Logo.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felixse/Woop/0e242b6144dec5dbbc42aca3552e4aed63085bc1/Woop/Assets/Square44x44Logo.scale-200.png -------------------------------------------------------------------------------- /Woop/Assets/Square44x44Logo.scale-400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felixse/Woop/0e242b6144dec5dbbc42aca3552e4aed63085bc1/Woop/Assets/Square44x44Logo.scale-400.png -------------------------------------------------------------------------------- /Woop/Assets/Square44x44Logo.targetsize-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felixse/Woop/0e242b6144dec5dbbc42aca3552e4aed63085bc1/Woop/Assets/Square44x44Logo.targetsize-16.png -------------------------------------------------------------------------------- /Woop/Assets/Square44x44Logo.targetsize-24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felixse/Woop/0e242b6144dec5dbbc42aca3552e4aed63085bc1/Woop/Assets/Square44x44Logo.targetsize-24.png -------------------------------------------------------------------------------- /Woop/Assets/Square44x44Logo.targetsize-24_altform-unplated.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felixse/Woop/0e242b6144dec5dbbc42aca3552e4aed63085bc1/Woop/Assets/Square44x44Logo.targetsize-24_altform-unplated.png -------------------------------------------------------------------------------- /Woop/Assets/Square44x44Logo.targetsize-256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felixse/Woop/0e242b6144dec5dbbc42aca3552e4aed63085bc1/Woop/Assets/Square44x44Logo.targetsize-256.png -------------------------------------------------------------------------------- /Woop/Assets/Square44x44Logo.targetsize-32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felixse/Woop/0e242b6144dec5dbbc42aca3552e4aed63085bc1/Woop/Assets/Square44x44Logo.targetsize-32.png -------------------------------------------------------------------------------- /Woop/Assets/Square44x44Logo.targetsize-48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felixse/Woop/0e242b6144dec5dbbc42aca3552e4aed63085bc1/Woop/Assets/Square44x44Logo.targetsize-48.png -------------------------------------------------------------------------------- /Woop/Assets/StoreLogo.backup.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felixse/Woop/0e242b6144dec5dbbc42aca3552e4aed63085bc1/Woop/Assets/StoreLogo.backup.png -------------------------------------------------------------------------------- /Woop/Assets/StoreLogo.scale-100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felixse/Woop/0e242b6144dec5dbbc42aca3552e4aed63085bc1/Woop/Assets/StoreLogo.scale-100.png -------------------------------------------------------------------------------- /Woop/Assets/StoreLogo.scale-125.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felixse/Woop/0e242b6144dec5dbbc42aca3552e4aed63085bc1/Woop/Assets/StoreLogo.scale-125.png -------------------------------------------------------------------------------- /Woop/Assets/StoreLogo.scale-150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felixse/Woop/0e242b6144dec5dbbc42aca3552e4aed63085bc1/Woop/Assets/StoreLogo.scale-150.png -------------------------------------------------------------------------------- /Woop/Assets/StoreLogo.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felixse/Woop/0e242b6144dec5dbbc42aca3552e4aed63085bc1/Woop/Assets/StoreLogo.scale-200.png -------------------------------------------------------------------------------- /Woop/Assets/StoreLogo.scale-400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felixse/Woop/0e242b6144dec5dbbc42aca3552e4aed63085bc1/Woop/Assets/StoreLogo.scale-400.png -------------------------------------------------------------------------------- /Woop/Assets/Wide310x150Logo.scale-100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felixse/Woop/0e242b6144dec5dbbc42aca3552e4aed63085bc1/Woop/Assets/Wide310x150Logo.scale-100.png -------------------------------------------------------------------------------- /Woop/Assets/Wide310x150Logo.scale-125.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felixse/Woop/0e242b6144dec5dbbc42aca3552e4aed63085bc1/Woop/Assets/Wide310x150Logo.scale-125.png -------------------------------------------------------------------------------- /Woop/Assets/Wide310x150Logo.scale-150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felixse/Woop/0e242b6144dec5dbbc42aca3552e4aed63085bc1/Woop/Assets/Wide310x150Logo.scale-150.png -------------------------------------------------------------------------------- /Woop/Assets/Wide310x150Logo.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felixse/Woop/0e242b6144dec5dbbc42aca3552e4aed63085bc1/Woop/Assets/Wide310x150Logo.scale-200.png -------------------------------------------------------------------------------- /Woop/Assets/Wide310x150Logo.scale-400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felixse/Woop/0e242b6144dec5dbbc42aca3552e4aed63085bc1/Woop/Assets/Wide310x150Logo.scale-400.png -------------------------------------------------------------------------------- /Woop/Assets/dark/HTML.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felixse/Woop/0e242b6144dec5dbbc42aca3552e4aed63085bc1/Woop/Assets/dark/HTML.png -------------------------------------------------------------------------------- /Woop/Assets/dark/abacus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felixse/Woop/0e242b6144dec5dbbc42aca3552e4aed63085bc1/Woop/Assets/dark/abacus.png -------------------------------------------------------------------------------- /Woop/Assets/dark/broom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felixse/Woop/0e242b6144dec5dbbc42aca3552e4aed63085bc1/Woop/Assets/dark/broom.png -------------------------------------------------------------------------------- /Woop/Assets/dark/camel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felixse/Woop/0e242b6144dec5dbbc42aca3552e4aed63085bc1/Woop/Assets/dark/camel.png -------------------------------------------------------------------------------- /Woop/Assets/dark/collapse.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felixse/Woop/0e242b6144dec5dbbc42aca3552e4aed63085bc1/Woop/Assets/dark/collapse.png -------------------------------------------------------------------------------- /Woop/Assets/dark/color-wheel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felixse/Woop/0e242b6144dec5dbbc42aca3552e4aed63085bc1/Woop/Assets/dark/color-wheel.png -------------------------------------------------------------------------------- /Woop/Assets/dark/colosseum.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felixse/Woop/0e242b6144dec5dbbc42aca3552e4aed63085bc1/Woop/Assets/dark/colosseum.png -------------------------------------------------------------------------------- /Woop/Assets/dark/command.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felixse/Woop/0e242b6144dec5dbbc42aca3552e4aed63085bc1/Woop/Assets/dark/command.png -------------------------------------------------------------------------------- /Woop/Assets/dark/counter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felixse/Woop/0e242b6144dec5dbbc42aca3552e4aed63085bc1/Woop/Assets/dark/counter.png -------------------------------------------------------------------------------- /Woop/Assets/dark/dice.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felixse/Woop/0e242b6144dec5dbbc42aca3552e4aed63085bc1/Woop/Assets/dark/dice.png -------------------------------------------------------------------------------- /Woop/Assets/dark/elephant.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felixse/Woop/0e242b6144dec5dbbc42aca3552e4aed63085bc1/Woop/Assets/dark/elephant.png -------------------------------------------------------------------------------- /Woop/Assets/dark/filtration.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felixse/Woop/0e242b6144dec5dbbc42aca3552e4aed63085bc1/Woop/Assets/dark/filtration.png -------------------------------------------------------------------------------- /Woop/Assets/dark/fingerprint.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felixse/Woop/0e242b6144dec5dbbc42aca3552e4aed63085bc1/Woop/Assets/dark/fingerprint.png -------------------------------------------------------------------------------- /Woop/Assets/dark/flask.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felixse/Woop/0e242b6144dec5dbbc42aca3552e4aed63085bc1/Woop/Assets/dark/flask.png -------------------------------------------------------------------------------- /Woop/Assets/dark/flip.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felixse/Woop/0e242b6144dec5dbbc42aca3552e4aed63085bc1/Woop/Assets/dark/flip.png -------------------------------------------------------------------------------- /Woop/Assets/dark/globe.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felixse/Woop/0e242b6144dec5dbbc42aca3552e4aed63085bc1/Woop/Assets/dark/globe.png -------------------------------------------------------------------------------- /Woop/Assets/dark/identification.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felixse/Woop/0e242b6144dec5dbbc42aca3552e4aed63085bc1/Woop/Assets/dark/identification.png -------------------------------------------------------------------------------- /Woop/Assets/dark/kebab.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felixse/Woop/0e242b6144dec5dbbc42aca3552e4aed63085bc1/Woop/Assets/dark/kebab.png -------------------------------------------------------------------------------- /Woop/Assets/dark/link.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felixse/Woop/0e242b6144dec5dbbc42aca3552e4aed63085bc1/Woop/Assets/dark/link.png -------------------------------------------------------------------------------- /Woop/Assets/dark/metamorphose.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felixse/Woop/0e242b6144dec5dbbc42aca3552e4aed63085bc1/Woop/Assets/dark/metamorphose.png -------------------------------------------------------------------------------- /Woop/Assets/dark/pineapple.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felixse/Woop/0e242b6144dec5dbbc42aca3552e4aed63085bc1/Woop/Assets/dark/pineapple.png -------------------------------------------------------------------------------- /Woop/Assets/dark/quote.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felixse/Woop/0e242b6144dec5dbbc42aca3552e4aed63085bc1/Woop/Assets/dark/quote.png -------------------------------------------------------------------------------- /Woop/Assets/dark/roman.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felixse/Woop/0e242b6144dec5dbbc42aca3552e4aed63085bc1/Woop/Assets/dark/roman.png -------------------------------------------------------------------------------- /Woop/Assets/dark/scissors.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felixse/Woop/0e242b6144dec5dbbc42aca3552e4aed63085bc1/Woop/Assets/dark/scissors.png -------------------------------------------------------------------------------- /Woop/Assets/dark/snake.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felixse/Woop/0e242b6144dec5dbbc42aca3552e4aed63085bc1/Woop/Assets/dark/snake.png -------------------------------------------------------------------------------- /Woop/Assets/dark/sort-characters.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felixse/Woop/0e242b6144dec5dbbc42aca3552e4aed63085bc1/Woop/Assets/dark/sort-characters.png -------------------------------------------------------------------------------- /Woop/Assets/dark/sort-numbers.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felixse/Woop/0e242b6144dec5dbbc42aca3552e4aed63085bc1/Woop/Assets/dark/sort-numbers.png -------------------------------------------------------------------------------- /Woop/Assets/dark/table.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felixse/Woop/0e242b6144dec5dbbc42aca3552e4aed63085bc1/Woop/Assets/dark/table.png -------------------------------------------------------------------------------- /Woop/Assets/dark/term.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felixse/Woop/0e242b6144dec5dbbc42aca3552e4aed63085bc1/Woop/Assets/dark/term.png -------------------------------------------------------------------------------- /Woop/Assets/dark/translation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felixse/Woop/0e242b6144dec5dbbc42aca3552e4aed63085bc1/Woop/Assets/dark/translation.png -------------------------------------------------------------------------------- /Woop/Assets/dark/type.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felixse/Woop/0e242b6144dec5dbbc42aca3552e4aed63085bc1/Woop/Assets/dark/type.png -------------------------------------------------------------------------------- /Woop/Assets/dark/unknown.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felixse/Woop/0e242b6144dec5dbbc42aca3552e4aed63085bc1/Woop/Assets/dark/unknown.png -------------------------------------------------------------------------------- /Woop/Assets/dark/watch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felixse/Woop/0e242b6144dec5dbbc42aca3552e4aed63085bc1/Woop/Assets/dark/watch.png -------------------------------------------------------------------------------- /Woop/Assets/dark/website.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felixse/Woop/0e242b6144dec5dbbc42aca3552e4aed63085bc1/Woop/Assets/dark/website.png -------------------------------------------------------------------------------- /Woop/Assets/light/HTML.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felixse/Woop/0e242b6144dec5dbbc42aca3552e4aed63085bc1/Woop/Assets/light/HTML.png -------------------------------------------------------------------------------- /Woop/Assets/light/abacus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felixse/Woop/0e242b6144dec5dbbc42aca3552e4aed63085bc1/Woop/Assets/light/abacus.png -------------------------------------------------------------------------------- /Woop/Assets/light/broom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felixse/Woop/0e242b6144dec5dbbc42aca3552e4aed63085bc1/Woop/Assets/light/broom.png -------------------------------------------------------------------------------- /Woop/Assets/light/camel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felixse/Woop/0e242b6144dec5dbbc42aca3552e4aed63085bc1/Woop/Assets/light/camel.png -------------------------------------------------------------------------------- /Woop/Assets/light/collapse.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felixse/Woop/0e242b6144dec5dbbc42aca3552e4aed63085bc1/Woop/Assets/light/collapse.png -------------------------------------------------------------------------------- /Woop/Assets/light/color-wheel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felixse/Woop/0e242b6144dec5dbbc42aca3552e4aed63085bc1/Woop/Assets/light/color-wheel.png -------------------------------------------------------------------------------- /Woop/Assets/light/colosseum.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felixse/Woop/0e242b6144dec5dbbc42aca3552e4aed63085bc1/Woop/Assets/light/colosseum.png -------------------------------------------------------------------------------- /Woop/Assets/light/command.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felixse/Woop/0e242b6144dec5dbbc42aca3552e4aed63085bc1/Woop/Assets/light/command.png -------------------------------------------------------------------------------- /Woop/Assets/light/counter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felixse/Woop/0e242b6144dec5dbbc42aca3552e4aed63085bc1/Woop/Assets/light/counter.png -------------------------------------------------------------------------------- /Woop/Assets/light/dice.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felixse/Woop/0e242b6144dec5dbbc42aca3552e4aed63085bc1/Woop/Assets/light/dice.png -------------------------------------------------------------------------------- /Woop/Assets/light/elephant.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felixse/Woop/0e242b6144dec5dbbc42aca3552e4aed63085bc1/Woop/Assets/light/elephant.png -------------------------------------------------------------------------------- /Woop/Assets/light/filtration.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felixse/Woop/0e242b6144dec5dbbc42aca3552e4aed63085bc1/Woop/Assets/light/filtration.png -------------------------------------------------------------------------------- /Woop/Assets/light/fingerprint.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felixse/Woop/0e242b6144dec5dbbc42aca3552e4aed63085bc1/Woop/Assets/light/fingerprint.png -------------------------------------------------------------------------------- /Woop/Assets/light/flask.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felixse/Woop/0e242b6144dec5dbbc42aca3552e4aed63085bc1/Woop/Assets/light/flask.png -------------------------------------------------------------------------------- /Woop/Assets/light/flip.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felixse/Woop/0e242b6144dec5dbbc42aca3552e4aed63085bc1/Woop/Assets/light/flip.png -------------------------------------------------------------------------------- /Woop/Assets/light/globe.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felixse/Woop/0e242b6144dec5dbbc42aca3552e4aed63085bc1/Woop/Assets/light/globe.png -------------------------------------------------------------------------------- /Woop/Assets/light/identification.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felixse/Woop/0e242b6144dec5dbbc42aca3552e4aed63085bc1/Woop/Assets/light/identification.png -------------------------------------------------------------------------------- /Woop/Assets/light/kebab.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felixse/Woop/0e242b6144dec5dbbc42aca3552e4aed63085bc1/Woop/Assets/light/kebab.png -------------------------------------------------------------------------------- /Woop/Assets/light/link.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felixse/Woop/0e242b6144dec5dbbc42aca3552e4aed63085bc1/Woop/Assets/light/link.png -------------------------------------------------------------------------------- /Woop/Assets/light/metamorphose.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felixse/Woop/0e242b6144dec5dbbc42aca3552e4aed63085bc1/Woop/Assets/light/metamorphose.png -------------------------------------------------------------------------------- /Woop/Assets/light/pineapple.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felixse/Woop/0e242b6144dec5dbbc42aca3552e4aed63085bc1/Woop/Assets/light/pineapple.png -------------------------------------------------------------------------------- /Woop/Assets/light/quote.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felixse/Woop/0e242b6144dec5dbbc42aca3552e4aed63085bc1/Woop/Assets/light/quote.png -------------------------------------------------------------------------------- /Woop/Assets/light/roman.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felixse/Woop/0e242b6144dec5dbbc42aca3552e4aed63085bc1/Woop/Assets/light/roman.png -------------------------------------------------------------------------------- /Woop/Assets/light/scissors.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felixse/Woop/0e242b6144dec5dbbc42aca3552e4aed63085bc1/Woop/Assets/light/scissors.png -------------------------------------------------------------------------------- /Woop/Assets/light/snake.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felixse/Woop/0e242b6144dec5dbbc42aca3552e4aed63085bc1/Woop/Assets/light/snake.png -------------------------------------------------------------------------------- /Woop/Assets/light/sort-characters.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felixse/Woop/0e242b6144dec5dbbc42aca3552e4aed63085bc1/Woop/Assets/light/sort-characters.png -------------------------------------------------------------------------------- /Woop/Assets/light/sort-numbers.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felixse/Woop/0e242b6144dec5dbbc42aca3552e4aed63085bc1/Woop/Assets/light/sort-numbers.png -------------------------------------------------------------------------------- /Woop/Assets/light/table.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felixse/Woop/0e242b6144dec5dbbc42aca3552e4aed63085bc1/Woop/Assets/light/table.png -------------------------------------------------------------------------------- /Woop/Assets/light/term.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felixse/Woop/0e242b6144dec5dbbc42aca3552e4aed63085bc1/Woop/Assets/light/term.png -------------------------------------------------------------------------------- /Woop/Assets/light/translation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felixse/Woop/0e242b6144dec5dbbc42aca3552e4aed63085bc1/Woop/Assets/light/translation.png -------------------------------------------------------------------------------- /Woop/Assets/light/type.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felixse/Woop/0e242b6144dec5dbbc42aca3552e4aed63085bc1/Woop/Assets/light/type.png -------------------------------------------------------------------------------- /Woop/Assets/light/unknown.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felixse/Woop/0e242b6144dec5dbbc42aca3552e4aed63085bc1/Woop/Assets/light/unknown.png -------------------------------------------------------------------------------- /Woop/Assets/light/watch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felixse/Woop/0e242b6144dec5dbbc42aca3552e4aed63085bc1/Woop/Assets/light/watch.png -------------------------------------------------------------------------------- /Woop/Assets/light/website.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felixse/Woop/0e242b6144dec5dbbc42aca3552e4aed63085bc1/Woop/Assets/light/website.png -------------------------------------------------------------------------------- /Woop/Assets/third-party-licenses.txt: -------------------------------------------------------------------------------- 1 | ClearScript 2 | 3 | MIT License 4 | 5 | Copyright (c) Microsoft Corporation 6 | All rights reserved. 7 | 8 | Permission is hereby granted, free of charge, to any person obtaining a copy 9 | of this software and associated documentation files (the "Software"), to deal 10 | in the Software without restriction, including without limitation the rights 11 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 12 | copies of the Software, and to permit persons to whom the Software is 13 | furnished to do so, subject to the following conditions: 14 | 15 | The above copyright notice and this permission notice shall be included in all 16 | copies or substantial portions of the Software. 17 | 18 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 19 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 20 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 21 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 22 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 23 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 24 | SOFTWARE. 25 | 26 | ColorCode.Universal 27 | 28 | # Microsoft Public License (Ms-PL) 29 | 30 | This license governs use of the accompanying software. If you use the software, you accept this license. If you do not accept the license, do not use the software. 31 | 32 | 1. Definitions 33 | The terms "reproduce," "reproduction," "derivative works," and "distribution" have the same meaning here as under U.S. copyright law. 34 | A "contribution" is the original software, or any additions or changes to the software. 35 | A "contributor" is any person that distributes its contribution under this license. 36 | "Licensed patents" are a contributor's patent claims that read directly on its contribution. 37 | 38 | 2. Grant of Rights 39 | (A) Copyright Grant- Subject to the terms of this license, including the license conditions and limitations in section 3, each contributor grants you a non-exclusive, worldwide, royalty-free copyright license to reproduce its contribution, prepare derivative works of its contribution, and distribute its contribution or any derivative works that you create. 40 | (B) Patent Grant- Subject to the terms of this license, including the license conditions and limitations in section 3, each contributor grants you a non-exclusive, worldwide, royalty-free license under its licensed patents to make, have made, use, sell, offer for sale, import, and/or otherwise dispose of its contribution in the software or derivative works of the contribution in the software. 41 | 42 | 3. Conditions and Limitations 43 | (A) No Trademark License- This license does not grant you rights to use any contributors' name, logo, or trademarks. 44 | (B) If you bring a patent claim against any contributor over patents that you claim are infringed by the software, your patent license from such contributor to the software ends automatically. 45 | (C) If you distribute any portion of the software, you must retain all copyright, patent, trademark, and attribution notices that are present in the software. 46 | (D) If you distribute any portion of the software in source code form, you may do so only under this license by including a complete copy of this license with your distribution. If you distribute any portion of the software in compiled or object code form, you may only do so under a license that complies with this license. 47 | (E) The software is licensed "as-is." You bear the risk of using it. The contributors give no express warranties, guarantees or conditions. You may have additional consumer rights under your local laws which this license cannot change. To the extent permitted under your local laws, the contributors exclude the implied warranties of merchantability, fitness for a particular purpose and non-infringement. 48 | 49 | FuseSharp 50 | 51 | MIT License 52 | 53 | Copyright (c) 2020 Felix Seidl 54 | Copyright (c) 2017 Kirollos Risk 55 | 56 | Permission is hereby granted, free of charge, to any person obtaining a copy 57 | of this software and associated documentation files (the "Software"), to deal 58 | in the Software without restriction, including without limitation the rights 59 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 60 | copies of the Software, and to permit persons to whom the Software is 61 | furnished to do so, subject to the following conditions: 62 | 63 | The above copyright notice and this permission notice shall be included in 64 | all copies or substantial portions of the Software. 65 | 66 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 67 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 68 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 69 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 70 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 71 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 72 | THE SOFTWARE. 73 | 74 | Windows Community Toolkit 75 | 76 | Copyright (c) .NET Foundation and Contributors 77 | 78 | All rights reserved. 79 | 80 | # MIT License (MIT) 81 | 82 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 83 | 84 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 85 | 86 | THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 87 | 88 | XamlBehaviors 89 | 90 | The MIT License (MIT) 91 | 92 | Copyright (c) 2015 Microsoft 93 | 94 | Permission is hereby granted, free of charge, to any person obtaining a copy 95 | of this software and associated documentation files (the "Software"), to deal 96 | in the Software without restriction, including without limitation the rights 97 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 98 | copies of the Software, and to permit persons to whom the Software is 99 | furnished to do so, subject to the following conditions: 100 | 101 | The above copyright notice and this permission notice shall be included in all 102 | copies or substantial portions of the Software. 103 | 104 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 105 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 106 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 107 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 108 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 109 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 110 | SOFTWARE. -------------------------------------------------------------------------------- /Woop/Converters/ElementThemeToTextConverter.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using Windows.UI.Xaml; 3 | using Windows.UI.Xaml.Data; 4 | 5 | namespace Woop.Converters 6 | { 7 | public class ElementThemeToTextConverter : IValueConverter 8 | { 9 | public object Convert(object value, Type targetType, object parameter, string language) 10 | { 11 | if (value is ElementTheme elementTheme) 12 | { 13 | switch (elementTheme) 14 | { 15 | case ElementTheme.Default: 16 | return "System default"; 17 | case ElementTheme.Light: 18 | return "Light"; 19 | case ElementTheme.Dark: 20 | return "Dark"; 21 | } 22 | } 23 | 24 | return null; 25 | } 26 | 27 | public object ConvertBack(object value, Type targetType, object parameter, string language) 28 | { 29 | throw new NotImplementedException(); 30 | } 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /Woop/Converters/IconNameToIconConverter.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using Windows.UI.Xaml; 3 | using Windows.UI.Xaml.Data; 4 | using Windows.UI.Xaml.Media.Imaging; 5 | 6 | namespace Woop.Converters 7 | { 8 | public class IconNameToIconConverter : IValueConverter 9 | { 10 | public object Convert(object value, Type targetType, object parameter, string language) 11 | { 12 | var theme = Application.Current.RequestedTheme == ApplicationTheme.Light ? "light" : "dark"; 13 | 14 | if (value is string iconName && !string.IsNullOrWhiteSpace(iconName)) 15 | { 16 | 17 | return new BitmapImage(new Uri($"ms-appx:///Assets/{theme}/{iconName}.png")); 18 | } 19 | 20 | return new BitmapImage(new Uri($"ms-appx:///Assets/{theme}/unknown.png")); 21 | } 22 | 23 | public object ConvertBack(object value, Type targetType, object parameter, string language) 24 | { 25 | throw new NotImplementedException(); 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /Woop/Converters/StatusTypeToColorConverter.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using Windows.UI; 3 | using Windows.UI.Xaml.Data; 4 | using Windows.UI.Xaml.Media; 5 | using Woop.ViewModels; 6 | 7 | namespace Woop.Converters 8 | { 9 | public class StatusTypeToColorConverter : IValueConverter 10 | { 11 | public object Convert(object value, Type targetType, object parameter, string language) 12 | { 13 | if (value is StatusViewModel.StatusType type) 14 | { 15 | switch (type) 16 | { 17 | case StatusViewModel.StatusType.Normal: 18 | return new SolidColorBrush(Colors.Transparent); 19 | case StatusViewModel.StatusType.Info: 20 | return new SolidColorBrush(Microsoft.Toolkit.Uwp.Helpers.ColorHelper.ToColor("#0063B1")); 21 | case StatusViewModel.StatusType.Success: 22 | return new SolidColorBrush(Microsoft.Toolkit.Uwp.Helpers.ColorHelper.ToColor("#10893E")); 23 | case StatusViewModel.StatusType.Error: 24 | return new SolidColorBrush(Microsoft.Toolkit.Uwp.Helpers.ColorHelper.ToColor("#E74856")); 25 | } 26 | } 27 | 28 | return null; 29 | } 30 | 31 | public object ConvertBack(object value, Type targetType, object parameter, string language) 32 | { 33 | throw new NotImplementedException(); 34 | } 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /Woop/Converters/StatusTypeToElementThemeConverter.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using Windows.UI.Xaml; 3 | using Windows.UI.Xaml.Data; 4 | using Woop.ViewModels; 5 | 6 | namespace Woop.Converters 7 | { 8 | public class StatusTypeToElementThemeConverter : IValueConverter 9 | { 10 | public object Convert(object value, Type targetType, object parameter, string language) 11 | { 12 | if (value is StatusViewModel.StatusType type) 13 | { 14 | switch (type) 15 | { 16 | case StatusViewModel.StatusType.Normal: 17 | return ElementTheme.Default; 18 | case StatusViewModel.StatusType.Info: 19 | case StatusViewModel.StatusType.Success: 20 | case StatusViewModel.StatusType.Error: 21 | return ElementTheme.Dark; 22 | } 23 | } 24 | 25 | return null; 26 | } 27 | 28 | public object ConvertBack(object value, Type targetType, object parameter, string language) 29 | { 30 | throw new NotImplementedException(); 31 | } 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /Woop/Models/Script.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.ClearScript.V8; 2 | using System; 3 | using System.Text.Json; 4 | using Woop.Services; 5 | 6 | namespace Woop.Models 7 | { 8 | public class Script 9 | { 10 | public bool IsBuiltIn { get; } 11 | 12 | public ScriptMetadata Metadata { get; } 13 | 14 | public Lazy Context { get; } 15 | 16 | public Script(V8Runtime runtime, string scriptContent, string requireScript, bool builtIn) 17 | { 18 | var metaStart = scriptContent.IndexOf("/**"); 19 | var metaEnd = scriptContent.IndexOf("**/"); 20 | var metaContent = scriptContent.Substring(metaStart + 3, metaEnd - metaStart - 3); 21 | Metadata = JsonSerializer.Deserialize(metaContent, new JsonSerializerOptions { AllowTrailingCommas = true, PropertyNameCaseInsensitive = true }); 22 | IsBuiltIn = builtIn; 23 | Context = new Lazy(() => { 24 | var context = runtime.CreateScriptEngine(); 25 | RequireLoader.EnableRequire(context, requireScript); 26 | context.Execute(scriptContent); 27 | return context; 28 | }); 29 | } 30 | 31 | public string Run(string selection, string fullText, int insertPosition, Action postInfo, Action postError) 32 | { 33 | try 34 | { 35 | var execution = new ScriptExecution(selection, fullText, insertPosition, postInfo, postError); 36 | Context.Value.Script.main(execution); 37 | return execution.text ?? string.Empty; 38 | } 39 | catch (Exception e) 40 | { 41 | postError(e.Message); 42 | return selection ?? fullText; 43 | } 44 | } 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /Woop/Models/ScriptExecution.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Diagnostics.CodeAnalysis; 3 | 4 | namespace Woop.Models 5 | { 6 | [SuppressMessage("Style", "IDE1006:Naming Styles", Justification = "Casing defined by Boop API")] 7 | public class ScriptExecution 8 | { 9 | private readonly Action _postInfo; 10 | private readonly Action _postError; 11 | 12 | public ScriptExecution(string selection, string fullText, int insertIndex, Action postInfo, Action postError) 13 | { 14 | isSelection = !string.IsNullOrEmpty(selection); 15 | this.selection = selection; 16 | this.fullText = fullText; 17 | this.insertIndex = insertIndex; 18 | 19 | _postInfo = postInfo; 20 | _postError = postError; 21 | } 22 | 23 | public bool isSelection { get; } 24 | 25 | public int insertIndex { get; private set; } 26 | 27 | public string selection { get; set; } 28 | 29 | public string fullText { get; set; } 30 | 31 | public string text 32 | { 33 | get => isSelection ? selection : fullText; 34 | set 35 | { 36 | if (isSelection) 37 | { 38 | selection = value; 39 | } 40 | else 41 | { 42 | fullText = value; 43 | } 44 | } 45 | } 46 | 47 | public void insert(string newValue) 48 | { 49 | if (isSelection) 50 | { 51 | selection = newValue; 52 | return; 53 | } 54 | 55 | fullText.Insert(insertIndex, newValue); 56 | 57 | insertIndex += newValue.Length; 58 | } 59 | 60 | 61 | public void postError(string error) 62 | { 63 | _postError(error); 64 | } 65 | 66 | public void postInfo(string info) 67 | { 68 | _postInfo(info); 69 | } 70 | } 71 | } 72 | -------------------------------------------------------------------------------- /Woop/Models/ScriptMetadata.cs: -------------------------------------------------------------------------------- 1 | using FuseSharp; 2 | using System.Collections.Generic; 3 | 4 | namespace Woop.Models 5 | { 6 | public class ScriptMetadata : IFuseable 7 | { 8 | public string Name { get; set; } 9 | 10 | public string Tags { get; set; } 11 | 12 | public string Description { get; set; } 13 | 14 | public string Icon { get; set; } 15 | 16 | public double Bias { get; set; } 17 | 18 | IEnumerable IFuseable.Properties => new[] 19 | { 20 | new FuseProperty(Name, 0.9), 21 | new FuseProperty(Tags, 0.6), 22 | new FuseProperty(Description, 0.2) 23 | }; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /Woop/Models/Selection.cs: -------------------------------------------------------------------------------- 1 | namespace Woop.Models 2 | { 3 | public class Selection 4 | { 5 | public int Start { get; set; } 6 | public int Length { get; set; } 7 | public string Content { get; set; } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /Woop/Package.appxmanifest: -------------------------------------------------------------------------------- 1 |  2 | 3 | 8 | 9 | 13 | 14 | 15 | 16 | 17 | Woop! 18 | FS Apps 19 | Assets\StoreLogo.png 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 34 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | -------------------------------------------------------------------------------- /Woop/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.InteropServices; 3 | 4 | // General Information about an assembly is controlled through the following 5 | // set of attributes. Change these attribute values to modify the information 6 | // associated with an assembly. 7 | [assembly: AssemblyTitle("Woop")] 8 | [assembly: AssemblyDescription("")] 9 | [assembly: AssemblyConfiguration("")] 10 | [assembly: AssemblyCompany("")] 11 | [assembly: AssemblyProduct("Woop")] 12 | [assembly: AssemblyCopyright("Copyright © 2020")] 13 | [assembly: AssemblyTrademark("")] 14 | [assembly: AssemblyCulture("")] 15 | 16 | // Version information for an assembly consists of the following four values: 17 | // 18 | // Major Version 19 | // Minor Version 20 | // Build Number 21 | // Revision 22 | // 23 | // You can specify all the values or you can default the Build and Revision Numbers 24 | // by using the '*' as shown below: 25 | // [assembly: AssemblyVersion("1.0.*")] 26 | [assembly: AssemblyVersion("1.0.0.0")] 27 | [assembly: AssemblyFileVersion("1.0.0.0")] 28 | [assembly: ComVisible(false)] -------------------------------------------------------------------------------- /Woop/Properties/Default.rd.xml: -------------------------------------------------------------------------------- 1 | 17 | 18 | 19 | 20 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /Woop/Services/BoopPseudoLanguage.cs: -------------------------------------------------------------------------------- 1 | using ColorCode; 2 | using ColorCode.Common; 3 | using System.Collections.Generic; 4 | using System.Runtime.InteropServices; 5 | 6 | namespace Woop.Services 7 | { 8 | public class BoopPseudoLanguage : ILanguage 9 | { 10 | private readonly IEnumerable _commonAttributes = new string[] { "var", "val", "let", "if", "else", "export", "import", "return", "static", "fun", "function", "func", "class", "open", "new", "as", "where", "select", "delete", "add", "limit", "update", "insert" }; 11 | 12 | private readonly IEnumerable _moreAttributes = new string[] { "true", "false", "to", "string", "int", "float", "double", "bool", "boolean", "from" }; 13 | 14 | private readonly LanguageRule _singleLineComment; 15 | private readonly LanguageRule _multiLineComment; 16 | private readonly LanguageRule _htmlComment; 17 | private readonly LanguageRule _number; 18 | private readonly LanguageRule _keywords; 19 | private readonly LanguageRule _attributes; 20 | private readonly LanguageRule _utcDates; 21 | private readonly LanguageRule _md5Hashes; 22 | private readonly LanguageRule _xmlTags; 23 | private readonly LanguageRule _jsonLabels; 24 | private readonly LanguageRule _singleQuotes; 25 | private readonly LanguageRule _doubleQuotes; 26 | private readonly LanguageRule _backTicks; 27 | private readonly LanguageRule _multiLineString; 28 | 29 | public BoopPseudoLanguage() 30 | { 31 | _singleLineComment = new LanguageRule( 32 | @"(//.*?)\r?$", 33 | new Dictionary 34 | { 35 | [1] = ScopeName.Comment 36 | } 37 | ); 38 | 39 | _multiLineComment = new LanguageRule( 40 | @"/\*([^*]|[\r\n]|(\*+([^*/]|[\r\n])))*\*+/", 41 | new Dictionary 42 | { 43 | [0] = ScopeName.Comment 44 | } 45 | ); 46 | 47 | _htmlComment = new LanguageRule( 48 | @"", 49 | new Dictionary 50 | { 51 | [0] = ScopeName.Comment 52 | } 53 | ); 54 | 55 | _number = new LanguageRule( 56 | @"\b(?:0x[a-f0-9]+|(?:\d(?:_\d+)*\d*(?:\.\d*)?|\.\d\+)(?:e[+\-]?\d+)?)\b", 57 | new Dictionary 58 | { 59 | [0] = ScopeName.Number 60 | } 61 | ); 62 | 63 | _keywords = new LanguageRule( 64 | $"(?i)\\b({string.Join('|', _commonAttributes)})\\b", 65 | new Dictionary 66 | { 67 | [0] = ScopeName.Attribute 68 | } 69 | ); 70 | 71 | _attributes = new LanguageRule( 72 | $"(?i)\\b({string.Join('|', _moreAttributes)})\\b", 73 | new Dictionary 74 | { 75 | [0] = ScopeName.Keyword 76 | } 77 | ); 78 | 79 | // todo broken 80 | _utcDates = new LanguageRule( 81 | @"(?:(Sun|Mon|Tue|Wed|Thu|Fri|Sat),\\s+)?(0[1-9]|[1-2]?[0-9]|3[01])\\s+(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s+(19[0-9]{2}|[2-9][0-9]{3})\\s+(2[0-3]|[0-1][0-9]):([0-5][0-9])(?::(60|[0-5][0-9]))?\\s+([-\\+][0-9]{2}[0-5][0-9]|(?:UT|GMT|(?:E|C|M|P)(?:ST|DT)|[A-IK-Z]))", 82 | new Dictionary 83 | { 84 | [0] = ScopeName.Number 85 | } 86 | ); 87 | 88 | _md5Hashes = new LanguageRule( 89 | "[a-f0-9]{32}", 90 | new Dictionary 91 | { 92 | [0] = ScopeName.Keyword 93 | } 94 | ); 95 | 96 | // todo changed implementation, sync to Boop? 97 | _xmlTags = new LanguageRule( 98 | "(<.[^(><.)]+>)", 99 | new Dictionary 100 | { 101 | [0] = ScopeName.Attribute 102 | } 103 | ); 104 | 105 | _jsonLabels = new LanguageRule( 106 | @"""([^""]+?)""\s*(?=:)", 107 | new Dictionary 108 | { 109 | [0] = ScopeName.PseudoKeyword 110 | } 111 | ); 112 | 113 | _singleQuotes = new LanguageRule( 114 | @"'[^\n]*?'", 115 | new Dictionary 116 | { 117 | [0] = ScopeName.String 118 | } 119 | ); 120 | 121 | _doubleQuotes = new LanguageRule( 122 | @"\""(?:[^\""\\]|\\.)*\""", 123 | new Dictionary 124 | { 125 | [0] = ScopeName.String 126 | } 127 | ); 128 | 129 | _backTicks = new LanguageRule( 130 | @"`[^\n]*?`", 131 | new Dictionary 132 | { 133 | [0] = ScopeName.String 134 | } 135 | ); 136 | 137 | _multiLineString = new LanguageRule( 138 | @"(?s)(\""\""\"")(.*?)(\""\""\"")", 139 | new Dictionary 140 | { 141 | [0] = ScopeName.String 142 | } 143 | ); 144 | } 145 | 146 | public string Id => "Boop"; 147 | 148 | public string Name => Id; 149 | 150 | public string CssClassName => Id; 151 | 152 | public string FirstLinePattern => null; 153 | 154 | public IList Rules => new List 155 | { 156 | _multiLineComment, 157 | _singleLineComment, 158 | _htmlComment, 159 | _number, 160 | _keywords, 161 | _attributes, 162 | _utcDates, 163 | _md5Hashes, 164 | _xmlTags, 165 | _jsonLabels, 166 | _multiLineString, 167 | _singleQuotes, 168 | _doubleQuotes, 169 | _backTicks, 170 | }; 171 | 172 | public bool HasAlias(string lang) 173 | { 174 | return false; 175 | } 176 | 177 | public override string ToString() 178 | { 179 | return Name; 180 | } 181 | } 182 | } 183 | -------------------------------------------------------------------------------- /Woop/Services/RequireLoader.cs: -------------------------------------------------------------------------------- 1 | //using ChakraCore.NET; 2 | using Microsoft.ClearScript.V8; 3 | using System.Collections.Generic; 4 | using System.IO; 5 | 6 | namespace Woop.Services 7 | { 8 | public class RequireLoader 9 | { 10 | private readonly Dictionary _scriptCache = new Dictionary(); 11 | 12 | public string RootPath { get; set; } = string.Empty; 13 | 14 | public string LoadLib(string name) 15 | { 16 | if (!_scriptCache.ContainsKey(name)) 17 | { 18 | _scriptCache.Add(name, Load(name)); 19 | } 20 | return _scriptCache[name]; 21 | } 22 | 23 | public static void EnableRequire(V8ScriptEngine engine, string requireScript, string rootPath = null) 24 | { 25 | RequireLoader loader = new RequireLoader() { RootPath = rootPath }; 26 | engine.AddHostObject("_loader", loader); 27 | engine.Execute(requireScript); 28 | } 29 | 30 | public string Load(string name) 31 | { 32 | name = name.Replace("@boop/", $"Assets/Scripts/lib/"); 33 | var directoryInfo = new DirectoryInfo(Directory.GetCurrentDirectory() + "\\" + RootPath); 34 | 35 | var fileName = name + ".js"; 36 | var files = directoryInfo.GetFiles(fileName); 37 | if (files.Length == 1) 38 | { 39 | return files[0].OpenText().ReadToEnd(); 40 | } 41 | else 42 | { 43 | return string.Empty; 44 | } 45 | } 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /Woop/Services/ScriptManager.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Diagnostics; 4 | using System.Threading.Tasks; 5 | using Windows.Storage; 6 | using Woop.Models; 7 | using System.Linq; 8 | using Microsoft.ClearScript.V8; 9 | using Windows.Storage.AccessCache; 10 | 11 | namespace Woop.Services 12 | { 13 | public class ScriptManager 14 | { 15 | private readonly V8Runtime _runtime; 16 | private readonly SettingsService _settingsService; 17 | 18 | public ScriptManager(SettingsService settingsService) 19 | { 20 | _settingsService = settingsService; 21 | 22 | _runtime = new V8Runtime(); 23 | } 24 | 25 | public async Task> InitializeAsync() 26 | { 27 | var appInstalledFolder = Windows.ApplicationModel.Package.Current.InstalledLocation; 28 | var scriptsFolder = await appInstalledFolder.GetFolderAsync("Assets\\Scripts"); 29 | 30 | var requireFile = await StorageFile.GetFileFromApplicationUriAsync(new Uri("ms-appx:///Assets/Require.js")); 31 | var requireScript = await FileIO.ReadTextAsync(requireFile); 32 | 33 | var builtInScripts = await InitializeScripts(scriptsFolder, requireScript, true); 34 | 35 | var customScripts = Enumerable.Empty