Repository: James231/Start-Menu-Manager
Branch: master
Commit: 577e5ce171b4
Files: 154
Total size: 755.0 KB
Directory structure:
gitextract_gz0lcu5f/
├── .gitignore
├── CustomAnalysisRules.Test.ruleset
├── CustomAnalysisRules.ruleset
├── Directory.Build.props
├── LICENSE
├── README.md
├── StartMenuManager.sln
├── src/
│ ├── HL/
│ │ ├── AssemblyInfo.cs
│ │ ├── HL.csproj
│ │ ├── HighlightingTheme/
│ │ │ ├── GlobalStyle.cs
│ │ │ └── SyntaxDefinition.cs
│ │ ├── Interfaces/
│ │ │ ├── IHLTheme.cs
│ │ │ └── IThemedHighlightingManager.cs
│ │ ├── LICENSE
│ │ ├── Manager/
│ │ │ ├── BusyManager.cs
│ │ │ ├── DefaultHighlightingManager.cs
│ │ │ ├── DelayLoadedHighlightingDefinition.cs
│ │ │ ├── ExtensionMethods.cs
│ │ │ ├── HLTheme.cs
│ │ │ ├── HighlightingBrush.cs
│ │ │ ├── HighlightingLoader.cs
│ │ │ ├── HighlightingThemeLoader.cs
│ │ │ ├── ThemedHighlightingManager.cs
│ │ │ ├── V2Loader.cs
│ │ │ ├── XmlHighlightingDefinition.cs
│ │ │ └── XshtdLoader.cs
│ │ ├── Modes/
│ │ │ ├── ModeV1.xsd
│ │ │ ├── ModeV2.xsd
│ │ │ └── ModeV2_htd.xsd
│ │ ├── Resources/
│ │ │ ├── HLResources.cs
│ │ │ ├── Light/
│ │ │ │ ├── AS3.xshd
│ │ │ │ ├── ASPX.xshd
│ │ │ │ ├── Boo.xshd
│ │ │ │ ├── CPP-Mode.xshd
│ │ │ │ ├── CSS-Mode.xshd
│ │ │ │ ├── CSharp-Mode.xshd
│ │ │ │ ├── Coco-Mode.xshd
│ │ │ │ ├── DOSBATCH.xshd
│ │ │ │ ├── FSharp-Mode.xshd
│ │ │ │ ├── GRazor-Mode.xshd
│ │ │ │ ├── Gcode.xshd
│ │ │ │ ├── HLSL.xshd
│ │ │ │ ├── HTML-Mode.xshd
│ │ │ │ ├── INI.xshd
│ │ │ │ ├── Java-Mode.xshd
│ │ │ │ ├── JavaScript-Mode.xshd
│ │ │ │ ├── Log.xshd
│ │ │ │ ├── MarkDown-Mode.xshd
│ │ │ │ ├── PHP-Mode.xshd
│ │ │ │ ├── PLSQL.xshd
│ │ │ │ ├── Pascal.xshd
│ │ │ │ ├── Patch-Mode.xshd
│ │ │ │ ├── PowerShell.xshd
│ │ │ │ ├── Python-Mode.xshd
│ │ │ │ ├── Ruby.xshd
│ │ │ │ ├── TSQL-Mode.xshd
│ │ │ │ ├── TXT.xshd
│ │ │ │ ├── Tex-Mode.xshd
│ │ │ │ ├── VB-Mode.xshd
│ │ │ │ ├── XML-Mode.xshd
│ │ │ │ ├── XmlDoc.xshd
│ │ │ │ ├── scheme.xshd
│ │ │ │ ├── squirrel.xshd
│ │ │ │ └── vtl.xshd
│ │ │ └── Themes/
│ │ │ ├── Dark.xshtd
│ │ │ ├── TrueBlue.xshtd
│ │ │ └── VS2019_Dark.xshtd
│ │ └── Xshtd/
│ │ ├── IXshtdVisitor.cs
│ │ ├── XhstdThemeDefinition.cs
│ │ ├── XmlHighlightingThemeDefinition.cs
│ │ ├── XshtdColor.cs
│ │ ├── XshtdElement.cs
│ │ ├── XshtdGlobalStyle.cs
│ │ ├── XshtdGlobalStyles.cs
│ │ ├── XshtdSyntaxDefinition.cs
│ │ └── interfaces/
│ │ ├── IFreezable.cs
│ │ ├── IHighlightingDefinitionReferenceResolver.cs
│ │ └── IHighlightingThemeDefinition.cs
│ ├── StartMenuManager.Builder/
│ │ ├── App.config
│ │ ├── Program.cs
│ │ ├── Properties/
│ │ │ └── AssemblyInfo.cs
│ │ └── StartMenuManager.Builder.csproj
│ ├── StartMenuManager.Core/
│ │ ├── DataStructures/
│ │ │ ├── Action.cs
│ │ │ ├── Actions/
│ │ │ │ ├── CommandAction.cs
│ │ │ │ ├── FileAction.cs
│ │ │ │ ├── FolderAction.cs
│ │ │ │ ├── SoftwareAction.cs
│ │ │ │ └── WebsiteAction.cs
│ │ │ ├── Config.cs
│ │ │ ├── SettingsConfig.cs
│ │ │ ├── Shortcut.cs
│ │ │ └── ValidationError.cs
│ │ ├── Serialization/
│ │ │ └── Serializer.cs
│ │ └── StartMenuManager.Core.csproj
│ ├── StartMenuManager.GUI/
│ │ ├── App.config
│ │ ├── App.xaml
│ │ ├── App.xaml.cs
│ │ ├── Builder.cs
│ │ ├── Dialogs/
│ │ │ ├── MessageDialog.cs
│ │ │ ├── SettingsDialog.cs
│ │ │ └── YesNoDialog.cs
│ │ ├── Extensions/
│ │ │ └── ActionExtensions.cs
│ │ ├── IconExtractorWindow.xaml
│ │ ├── IconExtractorWindow.xaml.cs
│ │ ├── JsonViewManager.cs
│ │ ├── LowerMenuBar.cs
│ │ ├── MainWindow.xaml
│ │ ├── MainWindow.xaml.cs
│ │ ├── Properties/
│ │ │ ├── AssemblyInfo.cs
│ │ │ ├── Resources.Designer.cs
│ │ │ ├── Resources.resx
│ │ │ ├── Settings.Designer.cs
│ │ │ └── Settings.settings
│ │ ├── Runner.cs
│ │ ├── Serialization/
│ │ │ ├── IconManager.cs
│ │ │ └── JsonSerializer.cs
│ │ ├── ShortcutControl.xaml
│ │ ├── ShortcutControl.xaml.cs
│ │ ├── ShortcutListArea.cs
│ │ ├── StartMenuManager.GUI.csproj
│ │ ├── Structures/
│ │ │ ├── DialogTypes.cs
│ │ │ └── ShortcutType.cs
│ │ ├── SubShortcutControl.xaml
│ │ ├── SubShortcutControl.xaml.cs
│ │ ├── TitleBarButtons.cs
│ │ ├── Utils/
│ │ │ ├── DialogManager.cs
│ │ │ ├── IconExtractorWindow_TitleBarControl.cs
│ │ │ ├── ThemeManager.cs
│ │ │ ├── TitleBarControl.cs
│ │ │ └── WindowRef.cs
│ │ ├── WelcomeCard.cs
│ │ └── app.manifest
│ ├── StartMenuManager.GUI.Installer/
│ │ ├── Product.wxs
│ │ ├── StartMenuManager.GUI.Installer.wixproj
│ │ └── netchecker.wxs
│ ├── StartMenuManager.PreUninstall/
│ │ ├── App.config
│ │ ├── Program.cs
│ │ ├── Properties/
│ │ │ └── AssemblyInfo.cs
│ │ └── StartMenuManager.PreUninstall.csproj
│ ├── StartMenuManager.Runner/
│ │ ├── App.config
│ │ ├── Program.cs
│ │ ├── Properties/
│ │ │ └── AssemblyInfo.cs
│ │ └── StartMenuManager.Runner.csproj
│ └── TextEditLib/
│ ├── AssemblyInfo.cs
│ ├── Extensions/
│ │ └── HighlightCurrentLineBackgroundRenderer.cs
│ ├── TextEdit.xaml
│ ├── TextEdit.xaml.cs
│ ├── TextEditLib.csproj
│ └── Themes/
│ ├── DarkBrushs.xaml
│ ├── Generic.xaml
│ ├── Icons.xaml
│ ├── LightBrushs.xaml
│ └── ResourceKeys.cs
└── stylecop.json
================================================
FILE CONTENTS
================================================
================================================
FILE: .gitignore
================================================
## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.
##
## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore
# User-specific files
*.suo
*.user
*.userosscache
*.sln.docstates
# User-specific files (MonoDevelop/Xamarin Studio)
*.userprefs
# Build results
[Dd]ebug/
[Dd]ebugPublic/
[Rr]elease/
[Rr]eleases/
x64/
x86/
bld/
[Bb]in/
[Oo]bj/
[Ll]og/
# Visual Studio 2015/2017 cache/options directory
.vs/
# Uncomment if you have tasks that create the project's static files in wwwroot
#wwwroot/
# Visual Studio 2017 auto generated files
Generated\ Files/
# MSTest test Results
[Tt]est[Rr]esult*/
[Bb]uild[Ll]og.*
# NUNIT
*.VisualState.xml
TestResult.xml
# Build Results of an ATL Project
[Dd]ebugPS/
[Rr]eleasePS/
dlldata.c
# Benchmark Results
BenchmarkDotNet.Artifacts/
# .NET Core
project.lock.json
project.fragment.lock.json
artifacts/
**/Properties/launchSettings.json
# StyleCop
StyleCopReport.xml
# Files built by Visual Studio
*_i.c
*_p.c
*_i.h
*.ilk
*.meta
*.obj
*.iobj
*.pch
*.pdb
*.ipdb
*.pgc
*.pgd
*.rsp
*.sbr
*.tlb
*.tli
*.tlh
*.tmp
*.tmp_proj
*.log
*.vspscc
*.vssscc
.builds
*.pidb
*.svclog
*.scc
# Chutzpah Test files
_Chutzpah*
# Visual C++ cache files
ipch/
*.aps
*.ncb
*.opendb
*.opensdf
*.sdf
*.cachefile
*.VC.db
*.VC.VC.opendb
# Visual Studio profiler
*.psess
*.vsp
*.vspx
*.sap
# TFS 2012 Local Workspace
$tf/
# Guidance Automation Toolkit
*.gpState
# ReSharper is a .NET coding add-in
_ReSharper*/
*.[Rr]e[Ss]harper
*.DotSettings.user
# JustCode is a .NET coding add-in
.JustCode
# TeamCity is a build add-in
_TeamCity*
# DotCover is a Code Coverage Tool
*.dotCover
# AxoCover is a Code Coverage Tool
.axoCover/*
!.axoCover/settings.json
# Visual Studio code coverage results
*.coverage
*.coveragexml
# NCrunch
_NCrunch_*
.*crunch*.local.xml
nCrunchTemp_*
# MightyMoose
*.mm.*
AutoTest.Net/
# Web workbench (sass)
.sass-cache/
# Installshield output folder
[Ee]xpress/
# DocProject is a documentation generator add-in
DocProject/buildhelp/
DocProject/Help/*.HxT
DocProject/Help/*.HxC
DocProject/Help/*.hhc
DocProject/Help/*.hhk
DocProject/Help/*.hhp
DocProject/Help/Html2
DocProject/Help/html
# Click-Once directory
publish/
# Publish Web Output
*.[Pp]ublish.xml
*.azurePubxml
# Note: Comment the next line if you want to checkin your web deploy settings,
# but database connection strings (with potential passwords) will be unencrypted
*.pubxml
*.publishproj
# Microsoft Azure Web App publish settings. Comment the next line if you want to
# checkin your Azure Web App publish settings, but sensitive information contained
# in these scripts will be unencrypted
PublishScripts/
# NuGet Packages
*.nupkg
# The packages folder can be ignored because of Package Restore
**/[Pp]ackages/*
# except build/, which is used as an MSBuild target.
!**/[Pp]ackages/build/
# Uncomment if necessary however generally it will be regenerated when needed
#!**/[Pp]ackages/repositories.config
# NuGet v3's project.json files produces more ignorable files
*.nuget.props
*.nuget.targets
# Microsoft Azure Build Output
csx/
*.build.csdef
# Microsoft Azure Emulator
ecf/
rcf/
# Windows Store app package directories and files
AppPackages/
BundleArtifacts/
Package.StoreAssociation.xml
_pkginfo.txt
*.appx
# Visual Studio cache files
# files ending in .cache can be ignored
*.[Cc]ache
# but keep track of directories ending in .cache
!*.[Cc]ache/
# Others
ClientBin/
~$*
*~
*.dbmdl
*.dbproj.schemaview
*.jfm
*.pfx
*.publishsettings
orleans.codegen.cs
# Including strong name files can present a security risk
# (https://github.com/github/gitignore/pull/2483#issue-259490424)
#*.snk
# Since there are multiple workflows, uncomment next line to ignore bower_components
# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
#bower_components/
# RIA/Silverlight projects
Generated_Code/
# Backup & report files from converting an old project file
# to a newer Visual Studio version. Backup files are not needed,
# because we have git ;-)
_UpgradeReport_Files/
Backup*/
UpgradeLog*.XML
UpgradeLog*.htm
ServiceFabricBackup/
*.rptproj.bak
# SQL Server files
*.mdf
*.ldf
*.ndf
# Business Intelligence projects
*.rdl.data
*.bim.layout
*.bim_*.settings
*.rptproj.rsuser
# Microsoft Fakes
FakesAssemblies/
# GhostDoc plugin setting file
*.GhostDoc.xml
# Node.js Tools for Visual Studio
.ntvs_analysis.dat
node_modules/
# Visual Studio 6 build log
*.plg
# Visual Studio 6 workspace options file
*.opt
# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
*.vbw
# Visual Studio LightSwitch build output
**/*.HTMLClient/GeneratedArtifacts
**/*.DesktopClient/GeneratedArtifacts
**/*.DesktopClient/ModelManifest.xml
**/*.Server/GeneratedArtifacts
**/*.Server/ModelManifest.xml
_Pvt_Extensions
# Paket dependency manager
.paket/paket.exe
paket-files/
# FAKE - F# Make
.fake/
# JetBrains Rider
.idea/
*.sln.iml
# CodeRush
.cr/
# Python Tools for Visual Studio (PTVS)
__pycache__/
*.pyc
# Cake - Uncomment if you are using it
# tools/**
# !tools/packages.config
# Tabs Studio
*.tss
# Telerik's JustMock configuration file
*.jmconfig
# BizTalk build output
*.btp.cs
*.btm.cs
*.odx.cs
*.xsd.cs
# OpenCover UI analysis results
OpenCover/
# Azure Stream Analytics local run output
ASALocalRun/
# MSBuild Binary and Structured Log
*.binlog
# NVidia Nsight GPU debugger configuration file
*.nvuser
# MFractors (Xamarin productivity tool) working folder
.mfractor/
================================================
FILE: CustomAnalysisRules.Test.ruleset
================================================
================================================
FILE: CustomAnalysisRules.ruleset
================================================
================================================
FILE: Directory.Build.props
================================================
true
Full
7.3
true
false
$(EnableSourceLink)
true
true
true
$(AllowedOutputExtensionsInPackageBuildOutputFolder);.pdb
false
$(MSBuildThisFileDirectory)\CustomAnalysisRules.Test.ruleset
true
$(MSBuildThisFileDirectory)\CustomAnalysisRules.ruleset
================================================
FILE: LICENSE
================================================
MIT License
Copyright (c) 2019 James231
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:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
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.
================================================
FILE: README.md
================================================
# Start Menu Manager
[](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=MLD56V6HQWCKU&source=url)
Windows 10 App to improve you productivity with shortcuts. See the features below:
:star: :star: :star: And if you like it ... please star it! :star: :star: :star:
Introduction Video:
[
](https://youtu.be/22APfw-ZSxI)
### Add Shorcuts to Start Menu
The app lets you add any kind of shortcut to the Start Menu:
- Website Shorcuts
- Software Shorcuts
- File Shorcuts
- Folder Shorcuts
- Shorcuts to run Commands/Scripts
- 'Group' Shortcuts which open multiple things at the same time
### Add Shortcuts Anywhere
Once created, those shorcuts can be moved or added elsewhere. They can be pinned to the Start Menu, added to the Taskbar, added to your Desktop, or put anywhere you like.
### Fixes Windows 10 Bugs
Windows 10 Search is buggy and inconsistent. Sometimes you might type in the exact name of an app, but get redirected to Bing search results inside a web brower.
Start Menu Manager fixes this. All shorctuts are treated like apps so they get priority in Windows 10 Search and appear at the top of the search results.
### Additional Features
- Clean modern Graphical Interface with light/dark themes.
- Want an icon for your shortcut? The app can extract images from your favorite websites to use as shortcut icons.
- Or provide custom icons as `.ico` files.
- Shortcuts can be saved to JSON format so you can copy them between devices.
- You can also generate the shortcuts from JSON using a terminal to avoid the GUI.
- If you don't like it, uninstallation removes all shortcuts and leaves no 'junk' behind.
- No performance loss as no background processes are used. Apps will start with an almost unnoticable overhead.
## Screenshots
Click for full size.
[
](https://cdn.jam-es.com/img/start-menu-manager/screen1.png)
[
](https://cdn.jam-es.com/img/start-menu-manager/screen2.png)
[
](https://cdn.jam-es.com/img/start-menu-manager/screen3.png)
## Installation
Requires Windows 10 with recent updates.
**Disclaimer:** The app needs to run with Administrator privileges, so it can access the directories to place the shortcuts. If you don't have Administrator privileges, then it won't work.
1. Go to the [GitHub Releases page](https://github.com/James231/Start-Menu-Manager/releases).
2. Scroll Down and download the `.msi` file in the 'Assets' section.
3. Run the installer to install the software.
## How to Use
It should be intuitive from the app, but just in case ...
1. Open the 'Start Menu Manager' app through the Start Menu.
2. Click the 'Add Shortcut' button to begin creating a shorcut.
3. Change the 'Shortcut Name'. This will be the name which appears in the Start Menu and Windows Search.
4. Change the 'Shortcut Type' to the kind of shortcut you want to create. And fill in the details for that type. E.g. Set the 'Website Url' for Web shortcuts.
5. Next to 'Icon' press 'Select from Website' to pick an icon from your favorite website.
6. Create as many shortcuts as you want in the same way.
7. Press 'Generate' to create the shortcuts. You'll see them added to the start menu under 'Recently Added'.
**Optional:**
8. In the Start Menu, right click on the shortcut to pin it, or add it to the Taskbar.
9. Naviagate to the Start Menu folder through the App Settings and copy the shortcut to wherever you want it.
**Note:** When generating the shorcuts, icons might not immediatley be displayed correctly in the Start Menu. This is a bug with Windows. One fix is to look in the 'Display' settings in the Windows 10 Settings App. Change the 'Scale and Layout' percentage, wait a few seconds, then change it back again.
## Uninstall
Open the 'Apps & Features' page in the Windows 10 Settings app. Select 'Start Menu Manager' and select 'Uninstall'. Everything is removed, including the shorctuts you created with the tool.
## Building the App from Source
If you want to get your hands dirty you can build from the source code. Just clone the repository and open the solution (`.sln`) in Visual Studio 2019 or later.
The `StartMenuManager.GUI` project contains the main WPF application. `StartMenuManager.Builder` is a console app which creates the shorcuts a from JSON file. `StartMenuManager.Runner` is a console app used to run the Shortcuts when they are clicked. There are a few other class libraries, a project which acts as an uninstallation step, and an Wix installer project.
VS may prompt you to open as an administrator, since running the app requires those privileges.
Once built, the various console apps (`.exe` files with `.dll`s) need to be put in the correct locations relative to each other. See the `Program Files` of an installed version of the app to see the correct setup.
## License
This code is released under MIT license. This means you can use this for whatever you want. Modify, distribute, sell, fork, and use this as much as you like. Both for personal and commercial use. I hold no responsibility if anything goes wrong.
If you use this, you don't need to refer to this repo, or give me any kind of credit but it would be appreciated. At least a :star: would be nice.
It took a lot of work to make this available for free. If you are feeling more generous, perhaps you could consider donating?
[](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=MLD56V6HQWCKU&source=url)
## Contributing
Pull Requests are welcome. But, note that by creating a pull request you are giving me permission to merge your code and release it under the MIT license mentioned above. At no point will you be able to withdraw merged code from the repository, or change the license under which it has been made available.
## References
This wouldn't have been possible without ...
[Material Design In Xaml](http://materialdesigninxaml.net/) - The WPF styles used in this app.
[AvalonEdit](http://avalonedit.net/) - The code editor WPF control used for the JSON editing in the app.
[AvalonEditHighlightingThemes](https://github.com/Dirkster99/AvalonEditHighlightingThemes) - Implementation of Themes in AvalonEdit. Used for light/dark JSON editing themes.
[FontAwesome.WPF](https://www.nuget.org/packages/FontAwesome.WPF/) - Only used for the loading spinner on the Icon Extractor page.
[Json.NET](https://www.newtonsoft.com/json) - JSON serializer.
[JsonSubTypes](https://www.newtonsoft.com/json) - JSON SubType implementation for Json.NET.
[Wix Toolset](https://wixtoolset.org/) - Used to create the `.msi` installer.
... and obvious credit to Microsoft for C#, WPF, .NET, and the best OS in existence :)
================================================
FILE: StartMenuManager.sln
================================================
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16
VisualStudioVersion = 16.0.30330.147
MinimumVisualStudioVersion = 10.0.40219.1
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "HL", "src\HL\HL.csproj", "{3DFE9408-3EC2-45F6-B814-ACA60A4DA722}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StartMenuManager.Builder", "src\StartMenuManager.Builder\StartMenuManager.Builder.csproj", "{72692F58-2690-4677-A87B-A686BCAA6FF2}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "StartMenuManager.Core", "src\StartMenuManager.Core\StartMenuManager.Core.csproj", "{03E687E5-87C9-4234-86F9-1E746E428764}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StartMenuManager.GUI", "src\StartMenuManager.GUI\StartMenuManager.GUI.csproj", "{AB31D486-50B4-4FF1-9E2C-3D8A29FB8EF4}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StartMenuManager.PreUninstall", "src\StartMenuManager.PreUninstall\StartMenuManager.PreUninstall.csproj", "{E9C16107-0F20-4B36-A65F-54D4290736AB}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StartMenuManager.Runner", "src\StartMenuManager.Runner\StartMenuManager.Runner.csproj", "{567580BE-01CE-420C-86F5-1E91EF50BEEE}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TextEditLib", "src\TextEditLib\TextEditLib.csproj", "{3BAB726C-8CFA-4631-80F3-FB05D3CE2D78}"
EndProject
Project("{930C7802-8A8C-48F9-8165-68863BCCD9DD}") = "StartMenuManager.GUI.Installer", "src\StartMenuManager.GUI.Installer\StartMenuManager.GUI.Installer.wixproj", "{B7CBB2B3-65E2-44FB-AAD6-9BD76884D09D}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Debug|x86 = Debug|x86
Release|Any CPU = Release|Any CPU
Release|x86 = Release|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{3DFE9408-3EC2-45F6-B814-ACA60A4DA722}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{3DFE9408-3EC2-45F6-B814-ACA60A4DA722}.Debug|Any CPU.Build.0 = Debug|Any CPU
{3DFE9408-3EC2-45F6-B814-ACA60A4DA722}.Debug|x86.ActiveCfg = Debug|Any CPU
{3DFE9408-3EC2-45F6-B814-ACA60A4DA722}.Debug|x86.Build.0 = Debug|Any CPU
{3DFE9408-3EC2-45F6-B814-ACA60A4DA722}.Release|Any CPU.ActiveCfg = Release|Any CPU
{3DFE9408-3EC2-45F6-B814-ACA60A4DA722}.Release|Any CPU.Build.0 = Release|Any CPU
{3DFE9408-3EC2-45F6-B814-ACA60A4DA722}.Release|x86.ActiveCfg = Release|Any CPU
{3DFE9408-3EC2-45F6-B814-ACA60A4DA722}.Release|x86.Build.0 = Release|Any CPU
{72692F58-2690-4677-A87B-A686BCAA6FF2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{72692F58-2690-4677-A87B-A686BCAA6FF2}.Debug|Any CPU.Build.0 = Debug|Any CPU
{72692F58-2690-4677-A87B-A686BCAA6FF2}.Debug|x86.ActiveCfg = Debug|Any CPU
{72692F58-2690-4677-A87B-A686BCAA6FF2}.Debug|x86.Build.0 = Debug|Any CPU
{72692F58-2690-4677-A87B-A686BCAA6FF2}.Release|Any CPU.ActiveCfg = Release|Any CPU
{72692F58-2690-4677-A87B-A686BCAA6FF2}.Release|Any CPU.Build.0 = Release|Any CPU
{72692F58-2690-4677-A87B-A686BCAA6FF2}.Release|x86.ActiveCfg = Release|Any CPU
{72692F58-2690-4677-A87B-A686BCAA6FF2}.Release|x86.Build.0 = Release|Any CPU
{03E687E5-87C9-4234-86F9-1E746E428764}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{03E687E5-87C9-4234-86F9-1E746E428764}.Debug|Any CPU.Build.0 = Debug|Any CPU
{03E687E5-87C9-4234-86F9-1E746E428764}.Debug|x86.ActiveCfg = Debug|Any CPU
{03E687E5-87C9-4234-86F9-1E746E428764}.Debug|x86.Build.0 = Debug|Any CPU
{03E687E5-87C9-4234-86F9-1E746E428764}.Release|Any CPU.ActiveCfg = Release|Any CPU
{03E687E5-87C9-4234-86F9-1E746E428764}.Release|Any CPU.Build.0 = Release|Any CPU
{03E687E5-87C9-4234-86F9-1E746E428764}.Release|x86.ActiveCfg = Release|Any CPU
{03E687E5-87C9-4234-86F9-1E746E428764}.Release|x86.Build.0 = Release|Any CPU
{AB31D486-50B4-4FF1-9E2C-3D8A29FB8EF4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{AB31D486-50B4-4FF1-9E2C-3D8A29FB8EF4}.Debug|Any CPU.Build.0 = Debug|Any CPU
{AB31D486-50B4-4FF1-9E2C-3D8A29FB8EF4}.Debug|x86.ActiveCfg = Debug|Any CPU
{AB31D486-50B4-4FF1-9E2C-3D8A29FB8EF4}.Debug|x86.Build.0 = Debug|Any CPU
{AB31D486-50B4-4FF1-9E2C-3D8A29FB8EF4}.Release|Any CPU.ActiveCfg = Release|Any CPU
{AB31D486-50B4-4FF1-9E2C-3D8A29FB8EF4}.Release|Any CPU.Build.0 = Release|Any CPU
{AB31D486-50B4-4FF1-9E2C-3D8A29FB8EF4}.Release|x86.ActiveCfg = Release|Any CPU
{AB31D486-50B4-4FF1-9E2C-3D8A29FB8EF4}.Release|x86.Build.0 = Release|Any CPU
{E9C16107-0F20-4B36-A65F-54D4290736AB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{E9C16107-0F20-4B36-A65F-54D4290736AB}.Debug|Any CPU.Build.0 = Debug|Any CPU
{E9C16107-0F20-4B36-A65F-54D4290736AB}.Debug|x86.ActiveCfg = Debug|Any CPU
{E9C16107-0F20-4B36-A65F-54D4290736AB}.Debug|x86.Build.0 = Debug|Any CPU
{E9C16107-0F20-4B36-A65F-54D4290736AB}.Release|Any CPU.ActiveCfg = Release|Any CPU
{E9C16107-0F20-4B36-A65F-54D4290736AB}.Release|Any CPU.Build.0 = Release|Any CPU
{E9C16107-0F20-4B36-A65F-54D4290736AB}.Release|x86.ActiveCfg = Release|Any CPU
{E9C16107-0F20-4B36-A65F-54D4290736AB}.Release|x86.Build.0 = Release|Any CPU
{567580BE-01CE-420C-86F5-1E91EF50BEEE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{567580BE-01CE-420C-86F5-1E91EF50BEEE}.Debug|Any CPU.Build.0 = Debug|Any CPU
{567580BE-01CE-420C-86F5-1E91EF50BEEE}.Debug|x86.ActiveCfg = Debug|Any CPU
{567580BE-01CE-420C-86F5-1E91EF50BEEE}.Debug|x86.Build.0 = Debug|Any CPU
{567580BE-01CE-420C-86F5-1E91EF50BEEE}.Release|Any CPU.ActiveCfg = Release|Any CPU
{567580BE-01CE-420C-86F5-1E91EF50BEEE}.Release|Any CPU.Build.0 = Release|Any CPU
{567580BE-01CE-420C-86F5-1E91EF50BEEE}.Release|x86.ActiveCfg = Release|Any CPU
{567580BE-01CE-420C-86F5-1E91EF50BEEE}.Release|x86.Build.0 = Release|Any CPU
{3BAB726C-8CFA-4631-80F3-FB05D3CE2D78}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{3BAB726C-8CFA-4631-80F3-FB05D3CE2D78}.Debug|Any CPU.Build.0 = Debug|Any CPU
{3BAB726C-8CFA-4631-80F3-FB05D3CE2D78}.Debug|x86.ActiveCfg = Debug|Any CPU
{3BAB726C-8CFA-4631-80F3-FB05D3CE2D78}.Debug|x86.Build.0 = Debug|Any CPU
{3BAB726C-8CFA-4631-80F3-FB05D3CE2D78}.Release|Any CPU.ActiveCfg = Release|Any CPU
{3BAB726C-8CFA-4631-80F3-FB05D3CE2D78}.Release|Any CPU.Build.0 = Release|Any CPU
{3BAB726C-8CFA-4631-80F3-FB05D3CE2D78}.Release|x86.ActiveCfg = Release|Any CPU
{3BAB726C-8CFA-4631-80F3-FB05D3CE2D78}.Release|x86.Build.0 = Release|Any CPU
{B7CBB2B3-65E2-44FB-AAD6-9BD76884D09D}.Debug|Any CPU.ActiveCfg = Debug|x86
{B7CBB2B3-65E2-44FB-AAD6-9BD76884D09D}.Debug|x86.ActiveCfg = Debug|x86
{B7CBB2B3-65E2-44FB-AAD6-9BD76884D09D}.Debug|x86.Build.0 = Debug|x86
{B7CBB2B3-65E2-44FB-AAD6-9BD76884D09D}.Release|Any CPU.ActiveCfg = Release|x86
{B7CBB2B3-65E2-44FB-AAD6-9BD76884D09D}.Release|x86.ActiveCfg = Release|x86
{B7CBB2B3-65E2-44FB-AAD6-9BD76884D09D}.Release|x86.Build.0 = Release|x86
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {9B76E47D-2E1B-4E6E-B7D2-7D9C00328767}
EndGlobalSection
EndGlobal
================================================
FILE: src/HL/AssemblyInfo.cs
================================================
// -------------------------------------------------------------------------------------------------
// Start Menu Manager - Copyright 2020 - Jam-Es.com
// Licensed under the MIT License (MIT). See LICENSE in the repo root for license information.
// -------------------------------------------------------------------------------------------------
using System.Windows;
#pragma warning disable
[assembly: ThemeInfo(
ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located
//(used if a resource is not found in the page,
// or application resource dictionaries)
ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located
//(used if a resource is not found in the page,
// app, or any theme specific resource dictionaries)
)]
================================================
FILE: src/HL/HL.csproj
================================================
net4;netcoreapp3.0
true
1.0.4
1.0.4
1.0.4
Open Source
Dirkster.HL
2019-2020
This assembly implements a docking layout system for WPF.
true
https://github.com/Dirkster99/HL
https://github.com/Dirkster99/HL
Dirkster.HL
https://github.com/Dirkster99/HL
LICENSE
icon.png
avalonedit dark-theme light-theme theming highlighting
Mutlitargetting NetCore3 and Net 4.0
Designer
Designer
Designer
PreserveNewest
================================================
FILE: src/HL/HighlightingTheme/GlobalStyle.cs
================================================
// -------------------------------------------------------------------------------------------------
// Start Menu Manager - Copyright 2020 - Jam-Es.com
// Licensed under the MIT License (MIT). See LICENSE in the repo root for license information.
// -------------------------------------------------------------------------------------------------
#pragma warning disable
namespace HL.HighlightingTheme
{
using HL.Xshtd.interfaces;
using System.Windows.Media;
///
/// Implements an object that holds general color and style definitions for the
/// Editor. These style definitions are usually non-highlighting language specific
/// (eg Hyperlink color) and can overwrite existing WPF definition (eg background or
/// foreground color)
///
public class GlobalStyle : AbstractFreezable, IFreezable
{
#region fields
private string _TypeName;
private Color? _Foregroundcolor;
private Color? _Backgroundcolor;
private Color? _Bordercolor;
#endregion fields
#region ctors
///
/// Construct a named (eg. 'Comment') WordStyle object
///
///
public GlobalStyle(string typeName)
: this()
{
this.TypeName = typeName;
}
///
/// Hidden standard constructor
///
protected GlobalStyle()
{
this.TypeName = string.Empty;
_Foregroundcolor = null;
_Backgroundcolor = null;
_Bordercolor = null;
}
#endregion ctors
#region properties
///
/// Typed name of object
///
/// (eg 'DefaultStyle', 'NonPrintableCharacter' ...,
/// (this is usually the key in a collection of these styles)
///
public string TypeName
{
get
{
return _TypeName;
}
set
{
if (IsFrozen)
throw new System.InvalidOperationException("Property is already frozen.");
_TypeName = value;
}
}
///
/// Get/set brush definition for the foreground used in this style
///
public Color? foregroundcolor
{
get
{
return _Foregroundcolor;
}
set
{
if (IsFrozen)
throw new System.InvalidOperationException("Property is already frozen.");
_Foregroundcolor = value;
}
}
///
/// Get/set brush definition for the background used in this style
///
public Color? backgroundcolor
{
get
{
return _Backgroundcolor;
}
set
{
if (IsFrozen)
throw new System.InvalidOperationException("Property is already frozen.");
_Backgroundcolor = value;
}
}
///
/// Get/set brush definition for the border used in this style
///
public Color? bordercolor
{
get
{
return _Bordercolor;
}
set
{
if (IsFrozen)
throw new System.InvalidOperationException("Property is already frozen.");
_Bordercolor = value;
}
}
#endregion properties
#region methods
///
/// Returns a string that represents the current object.
///
///
public override string ToString()
{
return "[" + (string.IsNullOrEmpty(this.TypeName) ? string.Empty : this.TypeName) + "]";
}
#endregion methods
}
}
================================================
FILE: src/HL/HighlightingTheme/SyntaxDefinition.cs
================================================
// -------------------------------------------------------------------------------------------------
// Start Menu Manager - Copyright 2020 - Jam-Es.com
// Licensed under the MIT License (MIT). See LICENSE in the repo root for license information.
// -------------------------------------------------------------------------------------------------
#pragma warning disable
namespace HL.HighlightingTheme
{
using HL.Xshtd.interfaces;
using ICSharpCode.AvalonEdit.Highlighting;
using ICSharpCode.AvalonEdit.Utils;
using System;
using System.Collections.Generic;
///
/// Implements the object that keeps track of each syntax definition reference
/// within a highlighting theme definition.
///
public class SyntaxDefinition : AbstractFreezable, IFreezable
{
#region fields
string _Name;
private readonly Dictionary _NamedHighlightingColors;
#endregion fields
#region ctors
///
/// Class constructor
///
public SyntaxDefinition(string paramName)
: this()
{
this._Name = paramName;
}
///
/// Class constructor
///
public SyntaxDefinition()
{
this.Extensions = new NullSafeCollection();
_NamedHighlightingColors = new Dictionary();
}
#endregion ctors
#region properties
///
/// Gets/Sets the name of the color.
///
public string Name
{
get
{
return _Name;
}
set
{
if (IsFrozen)
throw new InvalidOperationException();
_Name = value;
}
}
///
/// Gets the associated extensions.
///
public IList Extensions { get; private set; }
///
/// Gets an enumeration of all highlighting colors that are defined
/// for this highlighting pattern (eg. C#) as part of a highlighting theme (eg 'True Blue').
///
public IEnumerable NamedHighlightingColors
{
get
{
return _NamedHighlightingColors.Values;
}
}
#endregion properties
#region methods
///
/// Returns a string that represents the current object.
///
///
public override string ToString()
{
return "[" + GetType().Name + " " + (string.IsNullOrEmpty(this.Name) ? string.Empty : this.Name) + "]";
}
///
/// Gets a named color definition or null.
///
///
///
public HighlightingColor ColorGet(string name)
{
HighlightingColor color;
if (_NamedHighlightingColors.TryGetValue(name, out color))
return color;
return null;
}
///
/// Adds another named color definition.
/// Exceptions:
///
/// key is null.
///
///
/// An element with the same key already exists in the System.Collections.Generic.Dictionary`2.
///
///
public void ColorAdd(HighlightingColor color)
{
_NamedHighlightingColors.Add(color.Name, color);
}
internal void ColorReplace(string name, HighlightingColor themeColor)
{
_NamedHighlightingColors.Remove(name);
_NamedHighlightingColors.Add(name, themeColor);
}
#endregion methods
}
}
================================================
FILE: src/HL/Interfaces/IHLTheme.cs
================================================
// -------------------------------------------------------------------------------------------------
// Start Menu Manager - © Copyright 2020 - Jam-Es.com
// Licensed under the MIT License (MIT). See LICENSE in the repo root for license information.
// -------------------------------------------------------------------------------------------------
#pragma warning disable
namespace HL.Manager
{
using System.Collections.ObjectModel;
using HL.HighlightingTheme;
using HL.Xshtd;
using HL.Xshtd.interfaces;
using ICSharpCode.AvalonEdit.Highlighting;
///
/// Defines a highlighting theme which is based on a WPF theme (eg. 'Light')
/// with a corresponding set of highlighting definitions (eg. 'XML', 'C#' etc)
/// to ensure that highlightings are correct in the contecxt of
/// (different background colors) WPF themes.
///
public interface IHLTheme
{
#region properties
///
/// Gets the display independent key value that should by unique in an
/// overall collection of highlighting themes and should be used for retrieval purposes.
///
string Key { get; }
///
/// Gets the prefix of the XSHD resources that should be used to lookup
/// the actual resource for this theme.
///
/// This property is null for a derived highlighting theme since finding its
/// base highlighting should by performed through
/// and the corresponding property of that entry.
///
string HLBasePrefix { get; }
///
/// Gets the name of theme (eg. 'Dark' or 'Light' which is used as
/// the base of a derived highlighting theme.
///
/// This property has the same value as the property
/// if the highlighting is GENERIC (since these highlightings come without
/// additional theme resources).
///
string HLBaseKey { get; }
///
/// Gets the prefix of the resource under which a theme resource definition
/// file xshTd can be found (eg 'HL.Resources.Themes').
///
string HLThemePrefix { get; }
///
/// Gets the file name under which a theme resource definition
/// file xshTd can be found (eg 'Dark.xshtd').
///
string HLThemeFileName { get; }
///
/// Gets the name of theme (eg. 'Dark', 'Light' or 'True Blue' for display purposes in the UI.
///
string DisplayName { get; }
///
/// Gets a copy of all highlightings defined in this object.
///
ReadOnlyCollection HighlightingDefinitions { get; }
///
/// Gets the theme highlighting definition for this theme
/// or null (highlighting definition is generic and not based on a theme).
///
IHighlightingThemeDefinition HlTheme { get; }
///
/// Gets/sets whether built-in themes have already been registered or not
/// Use this to avoid registration of built-in themes twice for one and the
/// same highlighting theme.
///
bool IsBuiltInThemesRegistered { get; set; }
#endregion properties
#region methods
///
/// Gets the highlighting definition by name, or null if it is not found.
///
IHighlightingDefinition GetDefinition(string name);
///
/// Gets a highlighting definition by extension.
/// Returns null if the definition is not found.
///
IHighlightingDefinition GetDefinitionByExtension(string extension);
///
/// Registers a highlighting definition.
///
/// The name to register the definition with.
/// The file extensions to register the definition for.
/// The highlighting definition.
void RegisterHighlighting(string name, string[] extensions, IHighlightingDefinition highlighting);
///
/// Gets the highlighting theme definition by name, or null if it is not found.
///
///
SyntaxDefinition GetThemeDefinition(string highlightingName);
///
/// Converts a XSHD reference from namespace prefix and themename
/// into a object and returns it.
///
///
///
///
XhstdThemeDefinition ResolveHighLightingTheme(string hLPrefix, string hLThemeName);
#endregion methods
}
}
================================================
FILE: src/HL/Interfaces/IThemedHighlightingManager.cs
================================================
// -------------------------------------------------------------------------------------------------
// Start Menu Manager - Copyright 2020 - Jam-Es.com
// Licensed under the MIT License (MIT). See LICENSE in the repo root for license information.
// -------------------------------------------------------------------------------------------------
#pragma warning disable
namespace HL.Interfaces
{
using HL.Manager;
using HL.Xshtd.interfaces;
using ICSharpCode.AvalonEdit.Highlighting;
using System;
using System.Collections.ObjectModel;
///
/// Defines a Highlighting Manager that associates syntax highlighting definitions with file extentions
/// (*.cs -> 'C#') with consideration of the current WPF App theme
///
/// Extension App Theme SyntaxHighlighter
/// (*.cs + 'Dark') -> 'C#' (with color definitions for 'Dark')
///
public interface IThemedHighlightingManager : IHighlightingDefinitionReferenceResolver,
IHighlightingThemeDefinitionReferenceResolver
{
#region properties
///
/// Gets the current highlighting theme (eg 'Light' or 'Dark') that should be used as
/// a base for the syntax highlighting in AvalonEdit.
///
IHLTheme CurrentTheme { get; }
#endregion properties
#region methods
///
/// Gets a copy of all highlightings.
///
ReadOnlyCollection HighlightingDefinitions { get; }
///
/// Gets a highlighting definition by extension.
/// Returns null if the definition is not found.
///
IHighlightingDefinition GetDefinitionByExtension(string extension);
///
/// Registers a highlighting definition for the .
///
/// The name to register the definition with.
/// The file extensions to register the definition for.
/// The highlighting definition.
void RegisterHighlighting(string name, string[] extensions, IHighlightingDefinition highlighting);
///
/// Registers a highlighting definition.
///
/// The name to register the definition with.
/// The file extensions to register the definition for.
/// A function that loads the highlighting definition.
void RegisterHighlighting(string name, string[] extensions, Func lazyLoadedHighlighting);
///
/// Resets the highlighting theme based on the name of the WPF App Theme
/// (eg: WPF APP Theme 'Dark' -> Resolve highlighting 'C#' to 'Dark'->'C#')
///
/// Throws an if the WPF APP theme is not known.
///
///
void SetCurrentTheme(string name);
#endregion methods
}
}
================================================
FILE: src/HL/LICENSE
================================================
Copyright 2019-2020 Dirkster99
MIT License (https://opensource.org/licenses/MIT)
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:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
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.
================================================
FILE: src/HL/Manager/BusyManager.cs
================================================
// -------------------------------------------------------------------------------------------------
// Start Menu Manager - Copyright 2020 - Jam-Es.com
// Licensed under the MIT License (MIT). See LICENSE in the repo root for license information.
// -------------------------------------------------------------------------------------------------
#pragma warning disable
namespace HL.Manager
{
using System;
using System.Collections.Generic;
///
/// This class is used to prevent stack overflows by representing a 'busy' flag
/// that prevents reentrance when another call is running.
/// However, using a simple 'bool busy' is not thread-safe, so we use a
/// thread-static BusyManager.
///
internal static class BusyManager
{
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1815:OverrideEqualsAndOperatorEqualsOnValueTypes")]
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1034:NestedTypesShouldNotBeVisible",
Justification = "Should always be used with 'var'")]
public struct BusyLock : IDisposable
{
public static readonly BusyLock Failed = new BusyLock(null);
readonly List