├── .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