Browse Source
git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@4209 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61shortcuts
29 changed files with 1401 additions and 0 deletions
@ -0,0 +1,23 @@ |
|||||||
|
|
||||||
|
Microsoft Visual Studio Solution File, Format Version 10.00 |
||||||
|
# Visual Studio 2008 |
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ShortcutsManagement", "ShortcutsManagement\ShortcutsManagement.csproj", "{CF2FF1D1-A5FE-4848-936A-E2DFBE154562}" |
||||||
|
EndProject |
||||||
|
Global |
||||||
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution |
||||||
|
Debug in SharpDevelop|Any CPU = Debug in SharpDevelop|Any CPU |
||||||
|
Debug|Any CPU = Debug|Any CPU |
||||||
|
Release|Any CPU = Release|Any CPU |
||||||
|
EndGlobalSection |
||||||
|
GlobalSection(ProjectConfigurationPlatforms) = postSolution |
||||||
|
{CF2FF1D1-A5FE-4848-936A-E2DFBE154562}.Debug in SharpDevelop|Any CPU.ActiveCfg = Debug in SharpDevelop|Any CPU |
||||||
|
{CF2FF1D1-A5FE-4848-936A-E2DFBE154562}.Debug in SharpDevelop|Any CPU.Build.0 = Debug in SharpDevelop|Any CPU |
||||||
|
{CF2FF1D1-A5FE-4848-936A-E2DFBE154562}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
||||||
|
{CF2FF1D1-A5FE-4848-936A-E2DFBE154562}.Debug|Any CPU.Build.0 = Debug|Any CPU |
||||||
|
{CF2FF1D1-A5FE-4848-936A-E2DFBE154562}.Release|Any CPU.ActiveCfg = Release|Any CPU |
||||||
|
{CF2FF1D1-A5FE-4848-936A-E2DFBE154562}.Release|Any CPU.Build.0 = Release|Any CPU |
||||||
|
EndGlobalSection |
||||||
|
GlobalSection(SolutionProperties) = preSolution |
||||||
|
HideSolutionNode = FALSE |
||||||
|
EndGlobalSection |
||||||
|
EndGlobal |
Binary file not shown.
@ -0,0 +1,8 @@ |
|||||||
|
<Application x:Class="ICSharpCode.ShortcutsManagement.App" |
||||||
|
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" |
||||||
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" |
||||||
|
StartupUri="Window1.xaml"> |
||||||
|
<Application.Resources> |
||||||
|
|
||||||
|
</Application.Resources> |
||||||
|
</Application> |
@ -0,0 +1,11 @@ |
|||||||
|
using System.Windows; |
||||||
|
|
||||||
|
namespace ICSharpCode.ShortcutsManagement |
||||||
|
{ |
||||||
|
/// <summary>
|
||||||
|
/// Interaction logic for App.xaml
|
||||||
|
/// </summary>
|
||||||
|
public partial class App : Application |
||||||
|
{ |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,55 @@ |
|||||||
|
using System.Reflection; |
||||||
|
using System.Resources; |
||||||
|
using System.Runtime.CompilerServices; |
||||||
|
using System.Runtime.InteropServices; |
||||||
|
using System.Windows; |
||||||
|
|
||||||
|
// General Information about an assembly is controlled through the following
|
||||||
|
// set of attributes. Change these attribute values to modify the information
|
||||||
|
// associated with an assembly.
|
||||||
|
[assembly: AssemblyTitle("ShortcutsManagement")] |
||||||
|
[assembly: AssemblyDescription("")] |
||||||
|
[assembly: AssemblyConfiguration("")] |
||||||
|
[assembly: AssemblyCompany("Nexum Insurance Technologies")] |
||||||
|
[assembly: AssemblyProduct("ShortcutsManagement")] |
||||||
|
[assembly: AssemblyCopyright("Copyright © Nexum Insurance Technologies 2009")] |
||||||
|
[assembly: AssemblyTrademark("")] |
||||||
|
[assembly: AssemblyCulture("")] |
||||||
|
|
||||||
|
// Setting ComVisible to false makes the types in this assembly not visible
|
||||||
|
// to COM components. If you need to access a type in this assembly from
|
||||||
|
// COM, set the ComVisible attribute to true on that type.
|
||||||
|
[assembly: ComVisible(false)] |
||||||
|
|
||||||
|
//In order to begin building localizable applications, set
|
||||||
|
//<UICulture>CultureYouAreCodingWith</UICulture> in your .csproj file
|
||||||
|
//inside a <PropertyGroup>. For example, if you are using US english
|
||||||
|
//in your source files, set the <UICulture> to en-US. Then uncomment
|
||||||
|
//the NeutralResourceLanguage attribute below. Update the "en-US" in
|
||||||
|
//the line below to match the UICulture setting in the project file.
|
||||||
|
|
||||||
|
//[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)]
|
||||||
|
|
||||||
|
|
||||||
|
[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)
|
||||||
|
)] |
||||||
|
|
||||||
|
|
||||||
|
// Version information for an assembly consists of the following four values:
|
||||||
|
//
|
||||||
|
// Major Version
|
||||||
|
// Minor Version
|
||||||
|
// Build Number
|
||||||
|
// Revision
|
||||||
|
//
|
||||||
|
// You can specify all the values or you can default the Build and Revision Numbers
|
||||||
|
// by using the '*' as shown below:
|
||||||
|
// [assembly: AssemblyVersion("1.0.*")]
|
||||||
|
[assembly: AssemblyVersion("1.0.0.0")] |
||||||
|
[assembly: AssemblyFileVersion("1.0.0.0")] |
@ -0,0 +1,63 @@ |
|||||||
|
//------------------------------------------------------------------------------
|
||||||
|
// <auto-generated>
|
||||||
|
// This code was generated by a tool.
|
||||||
|
// Runtime Version:2.0.50727.3082
|
||||||
|
//
|
||||||
|
// Changes to this file may cause incorrect behavior and will be lost if
|
||||||
|
// the code is regenerated.
|
||||||
|
// </auto-generated>
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
namespace ICSharpCode.ShortcutsManagement.Properties { |
||||||
|
using System; |
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// A strongly-typed resource class, for looking up localized strings, etc.
|
||||||
|
/// </summary>
|
||||||
|
// This class was auto-generated by the StronglyTypedResourceBuilder
|
||||||
|
// class via a tool like ResGen or Visual Studio.
|
||||||
|
// To add or remove a member, edit your .ResX file then rerun ResGen
|
||||||
|
// with the /str option, or rebuild your VS project.
|
||||||
|
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "2.0.0.0")] |
||||||
|
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()] |
||||||
|
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] |
||||||
|
internal class Resources { |
||||||
|
|
||||||
|
private static global::System.Resources.ResourceManager resourceMan; |
||||||
|
|
||||||
|
private static global::System.Globalization.CultureInfo resourceCulture; |
||||||
|
|
||||||
|
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] |
||||||
|
internal Resources() { |
||||||
|
} |
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Returns the cached ResourceManager instance used by this class.
|
||||||
|
/// </summary>
|
||||||
|
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] |
||||||
|
internal static global::System.Resources.ResourceManager ResourceManager { |
||||||
|
get { |
||||||
|
if (object.ReferenceEquals(resourceMan, null)) { |
||||||
|
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("ICSharpCode.ShortcutsManagement.Properties.Resources", typeof(Resources).Assembly); |
||||||
|
resourceMan = temp; |
||||||
|
} |
||||||
|
return resourceMan; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Overrides the current thread's CurrentUICulture property for all
|
||||||
|
/// resource lookups using this strongly typed resource class.
|
||||||
|
/// </summary>
|
||||||
|
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] |
||||||
|
internal static global::System.Globalization.CultureInfo Culture { |
||||||
|
get { |
||||||
|
return resourceCulture; |
||||||
|
} |
||||||
|
set { |
||||||
|
resourceCulture = value; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,117 @@ |
|||||||
|
<?xml version="1.0" encoding="utf-8"?> |
||||||
|
<root> |
||||||
|
<!-- |
||||||
|
Microsoft ResX Schema |
||||||
|
|
||||||
|
Version 2.0 |
||||||
|
|
||||||
|
The primary goals of this format is to allow a simple XML format |
||||||
|
that is mostly human readable. The generation and parsing of the |
||||||
|
various data types are done through the TypeConverter classes |
||||||
|
associated with the data types. |
||||||
|
|
||||||
|
Example: |
||||||
|
|
||||||
|
... ado.net/XML headers & schema ... |
||||||
|
<resheader name="resmimetype">text/microsoft-resx</resheader> |
||||||
|
<resheader name="version">2.0</resheader> |
||||||
|
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> |
||||||
|
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> |
||||||
|
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data> |
||||||
|
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> |
||||||
|
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> |
||||||
|
<value>[base64 mime encoded serialized .NET Framework object]</value> |
||||||
|
</data> |
||||||
|
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> |
||||||
|
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value> |
||||||
|
<comment>This is a comment</comment> |
||||||
|
</data> |
||||||
|
|
||||||
|
There are any number of "resheader" rows that contain simple |
||||||
|
name/value pairs. |
||||||
|
|
||||||
|
Each data row contains a name, and value. The row also contains a |
||||||
|
type or mimetype. Type corresponds to a .NET class that support |
||||||
|
text/value conversion through the TypeConverter architecture. |
||||||
|
Classes that don't support this are serialized and stored with the |
||||||
|
mimetype set. |
||||||
|
|
||||||
|
The mimetype is used for serialized objects, and tells the |
||||||
|
ResXResourceReader how to depersist the object. This is currently not |
||||||
|
extensible. For a given mimetype the value must be set accordingly: |
||||||
|
|
||||||
|
Note - application/x-microsoft.net.object.binary.base64 is the format |
||||||
|
that the ResXResourceWriter will generate, however the reader can |
||||||
|
read any of the formats listed below. |
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.binary.base64 |
||||||
|
value : The object must be serialized with |
||||||
|
: System.Serialization.Formatters.Binary.BinaryFormatter |
||||||
|
: and then encoded with base64 encoding. |
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.soap.base64 |
||||||
|
value : The object must be serialized with |
||||||
|
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter |
||||||
|
: and then encoded with base64 encoding. |
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.bytearray.base64 |
||||||
|
value : The object must be serialized into a byte array |
||||||
|
: using a System.ComponentModel.TypeConverter |
||||||
|
: and then encoded with base64 encoding. |
||||||
|
--> |
||||||
|
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> |
||||||
|
<xsd:element name="root" msdata:IsDataSet="true"> |
||||||
|
<xsd:complexType> |
||||||
|
<xsd:choice maxOccurs="unbounded"> |
||||||
|
<xsd:element name="metadata"> |
||||||
|
<xsd:complexType> |
||||||
|
<xsd:sequence> |
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" /> |
||||||
|
</xsd:sequence> |
||||||
|
<xsd:attribute name="name" type="xsd:string" /> |
||||||
|
<xsd:attribute name="type" type="xsd:string" /> |
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" /> |
||||||
|
</xsd:complexType> |
||||||
|
</xsd:element> |
||||||
|
<xsd:element name="assembly"> |
||||||
|
<xsd:complexType> |
||||||
|
<xsd:attribute name="alias" type="xsd:string" /> |
||||||
|
<xsd:attribute name="name" type="xsd:string" /> |
||||||
|
</xsd:complexType> |
||||||
|
</xsd:element> |
||||||
|
<xsd:element name="data"> |
||||||
|
<xsd:complexType> |
||||||
|
<xsd:sequence> |
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> |
||||||
|
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> |
||||||
|
</xsd:sequence> |
||||||
|
<xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" /> |
||||||
|
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> |
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> |
||||||
|
</xsd:complexType> |
||||||
|
</xsd:element> |
||||||
|
<xsd:element name="resheader"> |
||||||
|
<xsd:complexType> |
||||||
|
<xsd:sequence> |
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> |
||||||
|
</xsd:sequence> |
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" /> |
||||||
|
</xsd:complexType> |
||||||
|
</xsd:element> |
||||||
|
</xsd:choice> |
||||||
|
</xsd:complexType> |
||||||
|
</xsd:element> |
||||||
|
</xsd:schema> |
||||||
|
<resheader name="resmimetype"> |
||||||
|
<value>text/microsoft-resx</value> |
||||||
|
</resheader> |
||||||
|
<resheader name="version"> |
||||||
|
<value>2.0</value> |
||||||
|
</resheader> |
||||||
|
<resheader name="reader"> |
||||||
|
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> |
||||||
|
</resheader> |
||||||
|
<resheader name="writer"> |
||||||
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> |
||||||
|
</resheader> |
||||||
|
</root> |
@ -0,0 +1,26 @@ |
|||||||
|
//------------------------------------------------------------------------------
|
||||||
|
// <auto-generated>
|
||||||
|
// This code was generated by a tool.
|
||||||
|
// Runtime Version:2.0.50727.3082
|
||||||
|
//
|
||||||
|
// Changes to this file may cause incorrect behavior and will be lost if
|
||||||
|
// the code is regenerated.
|
||||||
|
// </auto-generated>
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
namespace ICSharpCode.ShortcutsManagement.Properties { |
||||||
|
|
||||||
|
|
||||||
|
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] |
||||||
|
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "9.0.0.0")] |
||||||
|
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { |
||||||
|
|
||||||
|
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); |
||||||
|
|
||||||
|
public static Settings Default { |
||||||
|
get { |
||||||
|
return defaultInstance; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,7 @@ |
|||||||
|
<?xml version='1.0' encoding='utf-8'?> |
||||||
|
<SettingsFile xmlns="uri:settings" CurrentProfile="(Default)"> |
||||||
|
<Profiles> |
||||||
|
<Profile Name="(Default)" /> |
||||||
|
</Profiles> |
||||||
|
<Settings /> |
||||||
|
</SettingsFile> |
After Width: | Height: | Size: 1.0 KiB |
After Width: | Height: | Size: 1.3 KiB |
@ -0,0 +1,19 @@ |
|||||||
|
<AddIn name = "ShortcutsPrototype" |
||||||
|
author = "Sergej Andrejev" |
||||||
|
url = "" |
||||||
|
description = "Addin allows managing application shortcuts"> |
||||||
|
|
||||||
|
<Manifest> |
||||||
|
<Identity name="ShortcutsManagement" version = "@SharpDevelopCoreVersion"/> |
||||||
|
</Manifest> |
||||||
|
|
||||||
|
<Runtime> |
||||||
|
<Import assembly = "ICSharpCode.ShortcutsManagement.exe"/> |
||||||
|
</Runtime> |
||||||
|
|
||||||
|
<Path name = "/SharpDevelop/Dialogs/OptionsDialog/TextEditorOptions"> |
||||||
|
<OptionPanel id = "ShortcutsManagement" |
||||||
|
label = "Shortcuts management" |
||||||
|
class = "ICSharpCode.ShortcutsManagement.ShortcutsManagementOptionsPanel" /> |
||||||
|
</Path> |
||||||
|
</AddIn> |
@ -0,0 +1,156 @@ |
|||||||
|
<?xml version="1.0" encoding="utf-8"?> |
||||||
|
<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> |
||||||
|
<PropertyGroup> |
||||||
|
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> |
||||||
|
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> |
||||||
|
<ProductVersion>9.0.30729</ProductVersion> |
||||||
|
<SchemaVersion>2.0</SchemaVersion> |
||||||
|
<ProjectGuid>{CF2FF1D1-A5FE-4848-936A-E2DFBE154562}</ProjectGuid> |
||||||
|
<OutputType>WinExe</OutputType> |
||||||
|
<AppDesignerFolder>Properties</AppDesignerFolder> |
||||||
|
<RootNamespace>ICSharpCode.ShortcutsManagement</RootNamespace> |
||||||
|
<AssemblyName>ICSharpCode.ShortcutsManagement</AssemblyName> |
||||||
|
<TargetFrameworkVersion>v3.5</TargetFrameworkVersion> |
||||||
|
<FileAlignment>512</FileAlignment> |
||||||
|
<ProjectTypeGuids>{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids> |
||||||
|
<WarningLevel>4</WarningLevel> |
||||||
|
</PropertyGroup> |
||||||
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> |
||||||
|
<DebugSymbols>true</DebugSymbols> |
||||||
|
<DebugType>full</DebugType> |
||||||
|
<Optimize>false</Optimize> |
||||||
|
<OutputPath>bin\Debug\</OutputPath> |
||||||
|
<DefineConstants>DEBUG;TRACE</DefineConstants> |
||||||
|
<ErrorReport>prompt</ErrorReport> |
||||||
|
<WarningLevel>4</WarningLevel> |
||||||
|
</PropertyGroup> |
||||||
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> |
||||||
|
<DebugType>pdbonly</DebugType> |
||||||
|
<Optimize>true</Optimize> |
||||||
|
<OutputPath>bin\Release\</OutputPath> |
||||||
|
<DefineConstants>TRACE</DefineConstants> |
||||||
|
<ErrorReport>prompt</ErrorReport> |
||||||
|
<WarningLevel>4</WarningLevel> |
||||||
|
</PropertyGroup> |
||||||
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug in SharpDevelop|AnyCPU' "> |
||||||
|
<DebugSymbols>true</DebugSymbols> |
||||||
|
<OutputPath>..\..\..\..\..\AddIns\AddIns\Misc\ShortcutsManagement\</OutputPath> |
||||||
|
<DefineConstants>DEBUG;TRACE</DefineConstants> |
||||||
|
<DebugType>full</DebugType> |
||||||
|
<PlatformTarget>AnyCPU</PlatformTarget> |
||||||
|
<CodeAnalysisUseTypeNameInSuppression>true</CodeAnalysisUseTypeNameInSuppression> |
||||||
|
<CodeAnalysisModuleSuppressionsFile>GlobalSuppressions.cs</CodeAnalysisModuleSuppressionsFile> |
||||||
|
<ErrorReport>prompt</ErrorReport> |
||||||
|
</PropertyGroup> |
||||||
|
<ItemGroup> |
||||||
|
<Reference Include="ICSharpCode.Core, Version=4.0.0.4172, Culture=neutral, PublicKeyToken=f829da5c02be14ee, processorArchitecture=MSIL"> |
||||||
|
<SpecificVersion>False</SpecificVersion> |
||||||
|
<HintPath>..\..\..\..\..\bin\ICSharpCode.Core.dll</HintPath> |
||||||
|
</Reference> |
||||||
|
<Reference Include="ICSharpCode.SharpDevelop, Version=4.0.0.4172, Culture=neutral, PublicKeyToken=f829da5c02be14ee, processorArchitecture=MSIL"> |
||||||
|
<SpecificVersion>False</SpecificVersion> |
||||||
|
<HintPath>..\..\..\..\..\bin\ICSharpCode.SharpDevelop.dll</HintPath> |
||||||
|
</Reference> |
||||||
|
<Reference Include="System" /> |
||||||
|
<Reference Include="System.Core"> |
||||||
|
<RequiredTargetFramework>3.5</RequiredTargetFramework> |
||||||
|
</Reference> |
||||||
|
<Reference Include="System.Xml.Linq"> |
||||||
|
<RequiredTargetFramework>3.5</RequiredTargetFramework> |
||||||
|
</Reference> |
||||||
|
<Reference Include="System.Data.DataSetExtensions"> |
||||||
|
<RequiredTargetFramework>3.5</RequiredTargetFramework> |
||||||
|
</Reference> |
||||||
|
<Reference Include="System.Data" /> |
||||||
|
<Reference Include="System.Xml" /> |
||||||
|
<Reference Include="UIAutomationProvider"> |
||||||
|
<RequiredTargetFramework>3.0</RequiredTargetFramework> |
||||||
|
</Reference> |
||||||
|
<Reference Include="WindowsBase"> |
||||||
|
<RequiredTargetFramework>3.0</RequiredTargetFramework> |
||||||
|
</Reference> |
||||||
|
<Reference Include="PresentationCore"> |
||||||
|
<RequiredTargetFramework>3.0</RequiredTargetFramework> |
||||||
|
</Reference> |
||||||
|
<Reference Include="PresentationFramework"> |
||||||
|
<RequiredTargetFramework>3.0</RequiredTargetFramework> |
||||||
|
</Reference> |
||||||
|
</ItemGroup> |
||||||
|
<ItemGroup> |
||||||
|
<ApplicationDefinition Include="App.xaml"> |
||||||
|
<Generator>MSBuild:Compile</Generator> |
||||||
|
<SubType>Designer</SubType> |
||||||
|
</ApplicationDefinition> |
||||||
|
<Page Include="Src\Dialogs\ShortcutsManagementOptionsPanel.xaml"> |
||||||
|
<Generator>MSBuild:Compile</Generator> |
||||||
|
<SubType>Designer</SubType> |
||||||
|
</Page> |
||||||
|
<Page Include="Themes\Generic.xaml"> |
||||||
|
<Generator>MSBuild:Compile</Generator> |
||||||
|
<SubType>Designer</SubType> |
||||||
|
</Page> |
||||||
|
<Page Include="Window1.xaml"> |
||||||
|
<Generator>MSBuild:Compile</Generator> |
||||||
|
<SubType>Designer</SubType> |
||||||
|
</Page> |
||||||
|
<Compile Include="App.xaml.cs"> |
||||||
|
<DependentUpon>App.xaml</DependentUpon> |
||||||
|
<SubType>Code</SubType> |
||||||
|
</Compile> |
||||||
|
<Compile Include="Window1.xaml.cs"> |
||||||
|
<DependentUpon>Window1.xaml</DependentUpon> |
||||||
|
<SubType>Code</SubType> |
||||||
|
</Compile> |
||||||
|
</ItemGroup> |
||||||
|
<ItemGroup> |
||||||
|
<Compile Include="Src\Data\AddIn.cs" /> |
||||||
|
<Compile Include="Src\Converters\GesturesListConverter.cs" /> |
||||||
|
<Compile Include="Properties\AssemblyInfo.cs"> |
||||||
|
<SubType>Code</SubType> |
||||||
|
</Compile> |
||||||
|
<Compile Include="Properties\Resources.Designer.cs"> |
||||||
|
<AutoGen>True</AutoGen> |
||||||
|
<DesignTime>True</DesignTime> |
||||||
|
<DependentUpon>Resources.resx</DependentUpon> |
||||||
|
</Compile> |
||||||
|
<Compile Include="Properties\Settings.Designer.cs"> |
||||||
|
<AutoGen>True</AutoGen> |
||||||
|
<DependentUpon>Settings.settings</DependentUpon> |
||||||
|
<DesignTimeSharedInput>True</DesignTimeSharedInput> |
||||||
|
</Compile> |
||||||
|
<Compile Include="Src\Data\Shortcut.cs" /> |
||||||
|
<Compile Include="Src\Data\ShortcutCategory.cs" /> |
||||||
|
<Compile Include="Src\Dialogs\ShortcutsManagementOptionsPanel.xaml.cs"> |
||||||
|
<DependentUpon>ShortcutsManagementOptionsPanel.xaml</DependentUpon> |
||||||
|
</Compile> |
||||||
|
<Compile Include="Src\Data\ShortcutsProvider.cs" /> |
||||||
|
<Compile Include="Src\Converters\ShortcutsTreeConverter.cs" /> |
||||||
|
<Compile Include="Src\Extensions\TextBlockBehavior.cs" /> |
||||||
|
<Compile Include="Src\Extensions\TreeViewExtensions.cs" /> |
||||||
|
<Compile Include="Src\Converters\TypeNameConverter.cs" /> |
||||||
|
<EmbeddedResource Include="Properties\Resources.resx"> |
||||||
|
<Generator>ResXFileCodeGenerator</Generator> |
||||||
|
<LastGenOutput>Resources.Designer.cs</LastGenOutput> |
||||||
|
</EmbeddedResource> |
||||||
|
<None Include="Properties\Settings.settings"> |
||||||
|
<Generator>SettingsSingleFileGenerator</Generator> |
||||||
|
<LastGenOutput>Settings.Designer.cs</LastGenOutput> |
||||||
|
</None> |
||||||
|
<AppDesigner Include="Properties\" /> |
||||||
|
</ItemGroup> |
||||||
|
<ItemGroup> |
||||||
|
<Resource Include="Resources\key_enter.png" /> |
||||||
|
<Resource Include="Resources\key_enter_pressed.png" /> |
||||||
|
<Content Include="ShortcutsManagement.addin"> |
||||||
|
<CopyToOutputDirectory>Always</CopyToOutputDirectory> |
||||||
|
</Content> |
||||||
|
</ItemGroup> |
||||||
|
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> |
||||||
|
<!-- To modify your build process, add your task inside one of the targets below and uncomment it. |
||||||
|
Other similar extension points exist, see Microsoft.Common.targets. |
||||||
|
<Target Name="BeforeBuild"> |
||||||
|
</Target> |
||||||
|
<Target Name="AfterBuild"> |
||||||
|
</Target> |
||||||
|
--> |
||||||
|
</Project> |
@ -0,0 +1,6 @@ |
|||||||
|
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> |
||||||
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug in SharpDevelop|AnyCPU' "> |
||||||
|
<StartAction>Program</StartAction> |
||||||
|
<StartProgram>C:\VSC\SharpDevelop40\SharpDevelop\bin\SharpDevelop.exe</StartProgram> |
||||||
|
</PropertyGroup> |
||||||
|
</Project> |
@ -0,0 +1,27 @@ |
|||||||
|
using System; |
||||||
|
using System.Collections.Generic; |
||||||
|
using System.Linq; |
||||||
|
using System.Globalization; |
||||||
|
using System.Windows.Data; |
||||||
|
|
||||||
|
namespace ICSharpCode.ShortcutsManagement |
||||||
|
{ |
||||||
|
public class GesturesListConverter : IValueConverter |
||||||
|
{ |
||||||
|
public object Convert(object value, Type targetType, object parameter, CultureInfo culture) |
||||||
|
{ |
||||||
|
if (value is IEnumerable<string> && (targetType == typeof(string) || targetType.IsSubclassOf(typeof(string)))) |
||||||
|
{ |
||||||
|
var enumerableValue = (IEnumerable<string>)value; |
||||||
|
return string.Join(" | ", enumerableValue.ToArray()); |
||||||
|
} |
||||||
|
|
||||||
|
return value.ToString(); |
||||||
|
} |
||||||
|
|
||||||
|
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) |
||||||
|
{ |
||||||
|
throw new NotImplementedException("Reverse convertion is not implemented:"); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,25 @@ |
|||||||
|
using System; |
||||||
|
using System.Collections.Generic; |
||||||
|
using System.Globalization; |
||||||
|
using System.Linq; |
||||||
|
using System.Windows.Data; |
||||||
|
|
||||||
|
namespace ICSharpCode.ShortcutsManagement |
||||||
|
{ |
||||||
|
public class ShortcutsTreeConverter : IMultiValueConverter |
||||||
|
{ |
||||||
|
public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture) |
||||||
|
{ |
||||||
|
var items = new List<object>(); |
||||||
|
items.AddRange(((IEnumerable<ShortcutCategory>)values[0]).Cast<object>()); |
||||||
|
items.AddRange(((IEnumerable<Shortcut>)values[1]).Cast<object>()); |
||||||
|
|
||||||
|
return items; |
||||||
|
} |
||||||
|
|
||||||
|
public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture) |
||||||
|
{ |
||||||
|
throw new System.NotImplementedException(); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,19 @@ |
|||||||
|
using System; |
||||||
|
using System.Globalization; |
||||||
|
using System.Windows.Data; |
||||||
|
|
||||||
|
namespace ICSharpCode.ShortcutsManagement |
||||||
|
{ |
||||||
|
class TypeNameConverter : IValueConverter |
||||||
|
{ |
||||||
|
public object Convert(object value, Type targetType, object parameter, CultureInfo culture) |
||||||
|
{ |
||||||
|
return value.GetType().Name; |
||||||
|
} |
||||||
|
|
||||||
|
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) |
||||||
|
{ |
||||||
|
throw new System.NotImplementedException(); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,84 @@ |
|||||||
|
using System.Collections.Generic; |
||||||
|
using System.ComponentModel; |
||||||
|
|
||||||
|
namespace ICSharpCode.ShortcutsManagement |
||||||
|
{ |
||||||
|
/// <summary>
|
||||||
|
/// Add-in where shortcuts were registered
|
||||||
|
/// </summary>
|
||||||
|
public class AddIn : INotifyPropertyChanged |
||||||
|
{ |
||||||
|
private string name; |
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Add-in name
|
||||||
|
///
|
||||||
|
/// Dependency property
|
||||||
|
/// </summary>
|
||||||
|
public string Name |
||||||
|
{ |
||||||
|
get |
||||||
|
{ |
||||||
|
return name; |
||||||
|
} |
||||||
|
set |
||||||
|
{ |
||||||
|
if (name != value) |
||||||
|
{ |
||||||
|
name = value; |
||||||
|
InvokePropertyChanged("Name"); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
private bool isVisible; |
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Is category visible in shortcuts tree
|
||||||
|
///
|
||||||
|
/// Dependency property
|
||||||
|
/// </summary>
|
||||||
|
public bool IsVisible |
||||||
|
{ |
||||||
|
get |
||||||
|
{ |
||||||
|
return isVisible; |
||||||
|
} |
||||||
|
set |
||||||
|
{ |
||||||
|
if (isVisible != value) |
||||||
|
{ |
||||||
|
isVisible = value; |
||||||
|
InvokePropertyChanged("IsVisible"); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
public List<ShortcutCategory> Categories |
||||||
|
{ |
||||||
|
get; |
||||||
|
private set; |
||||||
|
} |
||||||
|
|
||||||
|
public AddIn(string addInName) |
||||||
|
{ |
||||||
|
IsVisible = true; |
||||||
|
Name = addInName; |
||||||
|
Categories = new List<ShortcutCategory>(); |
||||||
|
} |
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Invoke dependency property changed event
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="propertyName">Name of dependency property from this classs</param>
|
||||||
|
private void InvokePropertyChanged(string propertyName) |
||||||
|
{ |
||||||
|
if (PropertyChanged != null) |
||||||
|
{ |
||||||
|
PropertyChanged(this, new PropertyChangedEventArgs(propertyName)); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
public event PropertyChangedEventHandler PropertyChanged; |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,90 @@ |
|||||||
|
using System.Collections.Generic; |
||||||
|
using System.ComponentModel; |
||||||
|
|
||||||
|
namespace ICSharpCode.ShortcutsManagement |
||||||
|
{ |
||||||
|
/// <summary>
|
||||||
|
/// Shortcut
|
||||||
|
/// </summary>
|
||||||
|
public class Shortcut : INotifyPropertyChanged |
||||||
|
{ |
||||||
|
/// <summary>
|
||||||
|
/// List of keyboard gestures which will invoke provided action
|
||||||
|
/// </summary>
|
||||||
|
public List<string> Gestures |
||||||
|
{ |
||||||
|
get; |
||||||
|
private set; |
||||||
|
} |
||||||
|
|
||||||
|
private string name; |
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Shortcut action name
|
||||||
|
/// </summary>
|
||||||
|
public string Name |
||||||
|
{ |
||||||
|
get |
||||||
|
{ |
||||||
|
return name; |
||||||
|
} |
||||||
|
set |
||||||
|
{ |
||||||
|
if(name != value) |
||||||
|
{ |
||||||
|
name = value; |
||||||
|
InvokePropertyChanged("Name"); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
private bool isVisible; |
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Is category visible in shortcuts tree
|
||||||
|
///
|
||||||
|
/// Dependency property
|
||||||
|
/// </summary>
|
||||||
|
public bool IsVisible |
||||||
|
{ |
||||||
|
get |
||||||
|
{ |
||||||
|
return isVisible; |
||||||
|
} |
||||||
|
set |
||||||
|
{ |
||||||
|
if(isVisible != value) |
||||||
|
{ |
||||||
|
isVisible = value; |
||||||
|
InvokePropertyChanged("IsVisible"); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Create new shortcut
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="shortcutName">Shortcut action name</param>
|
||||||
|
/// <param name="gestures">Gestures</param>
|
||||||
|
public Shortcut(string shortcutName, List<string> gestures) |
||||||
|
{ |
||||||
|
IsVisible = true; |
||||||
|
Name = shortcutName; |
||||||
|
Gestures = gestures ?? new List<string>(); |
||||||
|
} |
||||||
|
|
||||||
|
public event PropertyChangedEventHandler PropertyChanged; |
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Invoke dependency property changed event
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="propertyName">Name of dependency property from this classs</param>
|
||||||
|
private void InvokePropertyChanged(string propertyName) |
||||||
|
{ |
||||||
|
if (PropertyChanged != null) |
||||||
|
{ |
||||||
|
PropertyChanged(this, new PropertyChangedEventArgs(propertyName)); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,101 @@ |
|||||||
|
using System.Collections.Generic; |
||||||
|
using System.ComponentModel; |
||||||
|
|
||||||
|
namespace ICSharpCode.ShortcutsManagement |
||||||
|
{ |
||||||
|
/// <summary>
|
||||||
|
/// Shortcut category
|
||||||
|
/// </summary>
|
||||||
|
public class ShortcutCategory : INotifyPropertyChanged |
||||||
|
{ |
||||||
|
private string name; |
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Category name
|
||||||
|
///
|
||||||
|
/// Dependency property
|
||||||
|
/// </summary>
|
||||||
|
public string Name |
||||||
|
{ |
||||||
|
get |
||||||
|
{ |
||||||
|
return name; |
||||||
|
} |
||||||
|
set |
||||||
|
{ |
||||||
|
if (name != value) |
||||||
|
{ |
||||||
|
name = value; |
||||||
|
InvokePropertyChanged("Name"); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
private bool isVisible; |
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Is category visible in shortcuts tree
|
||||||
|
///
|
||||||
|
/// Dependency property
|
||||||
|
/// </summary>
|
||||||
|
public bool IsVisible |
||||||
|
{ |
||||||
|
get |
||||||
|
{ |
||||||
|
return isVisible; |
||||||
|
} |
||||||
|
set |
||||||
|
{ |
||||||
|
if (isVisible != value) |
||||||
|
{ |
||||||
|
isVisible = value; |
||||||
|
InvokePropertyChanged("IsVisible"); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Sub cateories
|
||||||
|
/// </summary>
|
||||||
|
public List<ShortcutCategory> SubCategories |
||||||
|
{ |
||||||
|
get; |
||||||
|
private set; |
||||||
|
} |
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Shortcuts assigned to this category
|
||||||
|
/// </summary>
|
||||||
|
public List<Shortcut> Shortcuts |
||||||
|
{ |
||||||
|
get; |
||||||
|
private set; |
||||||
|
} |
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Create new category
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="categoryName">Category name</param>
|
||||||
|
public ShortcutCategory(string categoryName) |
||||||
|
{ |
||||||
|
IsVisible = true; |
||||||
|
Shortcuts = new List<Shortcut>(); |
||||||
|
SubCategories = new List<ShortcutCategory>(); |
||||||
|
Name = categoryName; |
||||||
|
} |
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Invoke dependency property changed event
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="propertyName">Name of dependency property from this classs</param>
|
||||||
|
private void InvokePropertyChanged(string propertyName) |
||||||
|
{ |
||||||
|
if (PropertyChanged != null) |
||||||
|
{ |
||||||
|
PropertyChanged(this, new PropertyChangedEventArgs(propertyName)); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
public event PropertyChangedEventHandler PropertyChanged; |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,116 @@ |
|||||||
|
using System; |
||||||
|
using System.Collections.Generic; |
||||||
|
using System.Collections.ObjectModel; |
||||||
|
|
||||||
|
namespace ICSharpCode.ShortcutsManagement |
||||||
|
{ |
||||||
|
internal class ShortcutsProvider |
||||||
|
{ |
||||||
|
private readonly ObservableCollection<AddIn> addins = new ObservableCollection<AddIn>(); |
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Get list of add-ins containing shortcuts
|
||||||
|
/// </summary>
|
||||||
|
/// <returns>List of add-ins</returns>
|
||||||
|
public ObservableCollection<AddIn> GetAddIns() |
||||||
|
{ |
||||||
|
return addins; |
||||||
|
} |
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Filter addins, child categories and shortcuts where item name
|
||||||
|
/// contains filter string
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="filterString">Filter string</param>
|
||||||
|
public void Filter(string filterString) |
||||||
|
{ |
||||||
|
foreach (var addIn in addins) |
||||||
|
{ |
||||||
|
var addInNameContainsFilterString = addIn.Name.IndexOf(filterString, StringComparison.InvariantCultureIgnoreCase) >= 0; |
||||||
|
|
||||||
|
var subCategoryIsVisible = false; |
||||||
|
foreach (var category in addIn.Categories) |
||||||
|
{ |
||||||
|
if(Filter(category, filterString, addInNameContainsFilterString ? (bool?) true : null)) |
||||||
|
{ |
||||||
|
subCategoryIsVisible = true; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
addIn.IsVisible = addInNameContainsFilterString || subCategoryIsVisible; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Filter category and child elements where item name contains
|
||||||
|
/// filter string
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="category">Category to filter</param>
|
||||||
|
/// <param name="filterString">Filter string</param>
|
||||||
|
/// <param name="forseMatch">If set to true all sub elements are expanded</param>
|
||||||
|
/// <returns></returns>
|
||||||
|
private static bool Filter(ShortcutCategory category, string filterString, bool? forseMatch) |
||||||
|
{ |
||||||
|
if(category.Name.IndexOf(filterString, StringComparison.InvariantCultureIgnoreCase) >= 0) |
||||||
|
{ |
||||||
|
forseMatch = true; |
||||||
|
} |
||||||
|
|
||||||
|
var isSubElementVisible = false; |
||||||
|
foreach (var subCategory in category.SubCategories) |
||||||
|
{ |
||||||
|
if(Filter(subCategory, filterString, forseMatch)) |
||||||
|
{ |
||||||
|
isSubElementVisible = true; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
foreach (var shortcut in category.Shortcuts) |
||||||
|
{ |
||||||
|
if ((forseMatch.HasValue && forseMatch.Value) || shortcut.Name.IndexOf(filterString, StringComparison.InvariantCultureIgnoreCase) >= 0) |
||||||
|
{ |
||||||
|
shortcut.IsVisible = true; |
||||||
|
isSubElementVisible = true; |
||||||
|
} |
||||||
|
else |
||||||
|
{ |
||||||
|
shortcut.IsVisible = false; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
return category.IsVisible = (forseMatch.HasValue && forseMatch.Value) || isSubElementVisible; |
||||||
|
} |
||||||
|
|
||||||
|
public ShortcutsProvider() |
||||||
|
{ |
||||||
|
// Test data
|
||||||
|
addins.Add(new AddIn("SharpDevelop")); |
||||||
|
addins[0].Categories.Add(new ShortcutCategory("Editing")); |
||||||
|
addins[0].Categories[0].Shortcuts.Add(new Shortcut("Copy", new List<string> { "Ctrl+C" })); |
||||||
|
addins[0].Categories[0].Shortcuts.Add(new Shortcut("Paste", new List<string> { "Ctrl+V", "Ctrl+Insert" })); |
||||||
|
addins[0].Categories[0].Shortcuts.Add(new Shortcut("Cut", new List<string> { "Ctrl+X" })); |
||||||
|
addins[0].Categories[0].Shortcuts.Add(new Shortcut("Undo", new List<string> { "Ctrl+Z" })); |
||||||
|
addins[0].Categories[0].Shortcuts.Add(new Shortcut("Redo", new List<string> { "Ctrl+Y" })); |
||||||
|
addins[0].Categories.Add(new ShortcutCategory("Building")); |
||||||
|
addins[0].Categories[1].Shortcuts.Add(new Shortcut("Build", new List<string> { "Ctrl+Shift+B" })); |
||||||
|
addins[0].Categories[1].Shortcuts.Add(new Shortcut("Run", new List<string> { "F5" })); |
||||||
|
addins[0].Categories[1].Shortcuts.Add(new Shortcut("Run without debuger", new List<string> { "Ctrl+F5" })); |
||||||
|
addins[0].Categories[1].Shortcuts.Add(new Shortcut("Attach debuger", new List<string> { "Ctrl+F8" })); |
||||||
|
addins[0].Categories.Add(new ShortcutCategory("Uncategorized")); |
||||||
|
addins[0].Categories[2].Shortcuts.Add(new Shortcut("Attach debuger", new List<string> { "Ctrl+F8" })); |
||||||
|
|
||||||
|
|
||||||
|
addins.Add(new AddIn("Search & replace")); |
||||||
|
addins[1].Categories.Add(new ShortcutCategory("Uncategorized")); |
||||||
|
addins[1].Categories[0].Shortcuts.Add(new Shortcut("Quick find", new List<string> { "Ctrl+F" })); |
||||||
|
addins[1].Categories[0].Shortcuts.Add(new Shortcut("Quick replace", new List<string> { "Ctrl+H" })); |
||||||
|
addins[1].Categories[0].Shortcuts.Add(new Shortcut("Find in files", new List<string> { "Ctrl+Shift+F" })); |
||||||
|
addins[1].Categories[0].Shortcuts.Add(new Shortcut("Replace in files", new List<string> { "Ctrl+Shift+H" })); |
||||||
|
addins[1].Categories[0].Shortcuts.Add(new Shortcut("Find symbol", null)); |
||||||
|
|
||||||
|
addins.Add(new AddIn("Unspecified")); |
||||||
|
addins[2].Categories.Add(new ShortcutCategory("Uncategorized")); |
||||||
|
addins[2].Categories[0].Shortcuts.Add(new Shortcut("Test regex expression", null)); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,171 @@ |
|||||||
|
<UserControl x:Class="ICSharpCode.ShortcutsManagement.ShortcutsManagementOptionsPanel" |
||||||
|
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" |
||||||
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" |
||||||
|
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" |
||||||
|
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" |
||||||
|
xmlns:ShortcutsManagement="clr-namespace:ICSharpCode.ShortcutsManagement" |
||||||
|
mc:Ignorable="d" |
||||||
|
d:DesignHeight="300" d:DesignWidth="300" > |
||||||
|
|
||||||
|
<UserControl.Resources> |
||||||
|
<ShortcutsManagement:ShortcutsProvider x:Key="ShortcutsReceiver" /> |
||||||
|
<ShortcutsManagement:GesturesListConverter x:Key="GesturesListConverter" /> |
||||||
|
<ShortcutsManagement:ShortcutsTreeConverter x:Key="ShortcutsTreeConverter" /> |
||||||
|
<ShortcutsManagement:TypeNameConverter x:Key="TypeNameConverter" /> |
||||||
|
|
||||||
|
<ImageSource x:Key="KeyImage">..\..\Resources\key_enter.png</ImageSource> |
||||||
|
<ImageSource x:Key="KeyImagePressed">..\..\Resources\key_enter_pressed.png</ImageSource> |
||||||
|
|
||||||
|
<ObjectDataProvider x:Key="AddIns" ObjectInstance="{StaticResource ShortcutsReceiver}" MethodName="GetAddIns" /> |
||||||
|
|
||||||
|
<SolidColorBrush x:Key="GlyphBrush" Color="#444" /> |
||||||
|
|
||||||
|
<Style x:Key="ShortcutsTreeSearchType" TargetType="ToggleButton"> |
||||||
|
<Setter Property="Focusable" Value="False"/> |
||||||
|
<Setter Property="Template"> |
||||||
|
<Setter.Value> |
||||||
|
<ControlTemplate TargetType="ToggleButton"> |
||||||
|
<Image x:Name="searchTypeImage" Source="{StaticResource KeyImage}" /> |
||||||
|
<ControlTemplate.Triggers> |
||||||
|
<Trigger Property="IsChecked" Value="True"> |
||||||
|
<Setter Property="Source" TargetName="searchTypeImage" Value="{StaticResource KeyImagePressed}"/> |
||||||
|
</Trigger> |
||||||
|
</ControlTemplate.Triggers> |
||||||
|
</ControlTemplate> |
||||||
|
</Setter.Value> |
||||||
|
</Setter> |
||||||
|
</Style> |
||||||
|
|
||||||
|
<Style x:Key="ExpandCollapseToggleStyle" TargetType="ToggleButton"> |
||||||
|
<Setter Property="Focusable" Value="False"/> |
||||||
|
<Setter Property="Template"> |
||||||
|
<Setter.Value> |
||||||
|
<ControlTemplate TargetType="ToggleButton"> |
||||||
|
<Grid Width="15" Height="13" Background="Transparent"> |
||||||
|
<Path x:Name="expandPath" HorizontalAlignment="Left" VerticalAlignment="Center" Margin="1,1,1,1" Fill="{StaticResource GlyphBrush}" Data="M 4 0 L 8 4 L 4 8 Z"/> |
||||||
|
</Grid> |
||||||
|
<ControlTemplate.Triggers> |
||||||
|
<Trigger Property="IsChecked" Value="True"> |
||||||
|
<Setter Property="Data" TargetName="expandPath" Value="M 0 4 L 8 4 L 4 8 Z"/> |
||||||
|
</Trigger> |
||||||
|
</ControlTemplate.Triggers> |
||||||
|
</ControlTemplate> |
||||||
|
</Setter.Value> |
||||||
|
</Setter> |
||||||
|
</Style> |
||||||
|
</UserControl.Resources> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<Grid> |
||||||
|
<Grid.RowDefinitions> |
||||||
|
<RowDefinition Height="30" /> |
||||||
|
<RowDefinition Height="*" /> |
||||||
|
<RowDefinition Height="30" /> |
||||||
|
<RowDefinition Height="30" /> |
||||||
|
</Grid.RowDefinitions> |
||||||
|
<Grid.ColumnDefinitions> |
||||||
|
<ColumnDefinition Width="30" /> |
||||||
|
<ColumnDefinition Width="*" MinWidth="370" /> |
||||||
|
<ColumnDefinition Width="30" /> |
||||||
|
<ColumnDefinition Width="30" /> |
||||||
|
</Grid.ColumnDefinitions> |
||||||
|
|
||||||
|
<TreeView x:Name="shortcutsTreeView" ItemsSource="{Binding Source={StaticResource AddIns}}" Grid.Column="1" Grid.Row="1" > |
||||||
|
<TreeView.Resources> |
||||||
|
|
||||||
|
<Style TargetType="{x:Type TreeViewItem}"> |
||||||
|
<Setter Property="Template"> |
||||||
|
<Setter.Value> |
||||||
|
<ControlTemplate TargetType="TreeViewItem"> |
||||||
|
<Border Name="OuterBorder" BorderThickness="2" CornerRadius="8" > |
||||||
|
<StackPanel> |
||||||
|
<Border Name="InnerBorder" BorderThickness="0.6" CornerRadius="8" Padding="6" > |
||||||
|
<Grid> |
||||||
|
<Grid.ColumnDefinitions> |
||||||
|
<ColumnDefinition Width="19" /> |
||||||
|
<ColumnDefinition /> |
||||||
|
</Grid.ColumnDefinitions> |
||||||
|
<ToggleButton Grid.Column="0" x:Name="treeViewItemToggleButton" Style="{StaticResource ExpandCollapseToggleStyle}" IsChecked="{Binding Path=IsExpanded, RelativeSource={RelativeSource TemplatedParent}}" ClickMode="Press" /> |
||||||
|
<ContentPresenter Name="PART_Header" ContentSource="Header" VerticalAlignment="Center" Grid.Column="1" /> |
||||||
|
</Grid> |
||||||
|
</Border> |
||||||
|
<ItemsPresenter x:Name="ItemsHost" /> |
||||||
|
</StackPanel> |
||||||
|
</Border> |
||||||
|
<ControlTemplate.Triggers> |
||||||
|
<Trigger Property="IsExpanded" Value="false"> |
||||||
|
<Setter TargetName="ItemsHost" Property="Visibility" Value="Collapsed"/> |
||||||
|
</Trigger> |
||||||
|
<Trigger Property="HasItems" Value="false"> |
||||||
|
<Setter TargetName="treeViewItemToggleButton" Property="Visibility" Value="Hidden"/> |
||||||
|
</Trigger> |
||||||
|
<DataTrigger Binding="{Binding Converter={StaticResource TypeNameConverter}}" Value="ShortcutCategory"> |
||||||
|
<Setter TargetName="InnerBorder" Property="Panel.Background" Value="#DEDE00" /> |
||||||
|
<Setter TargetName="InnerBorder" Property="TextElement.Foreground" Value="#FFFFFF" /> |
||||||
|
<Setter TargetName="OuterBorder" Property="Margin" Value="20,0,0,0" /> |
||||||
|
</DataTrigger> |
||||||
|
<DataTrigger Binding="{Binding Converter={StaticResource TypeNameConverter}}" Value="AddIn"> |
||||||
|
<Setter TargetName="InnerBorder" Property="Panel.Background" Value="#FFFFFF" /> |
||||||
|
<Setter TargetName="InnerBorder" Property="TextElement.Foreground" Value="#000000" /> |
||||||
|
</DataTrigger> |
||||||
|
<DataTrigger Binding="{Binding Path=IsVisible}" Value="false"> |
||||||
|
<Setter Property="Visibility" Value="Collapsed" /> |
||||||
|
</DataTrigger> |
||||||
|
<Trigger Property="IsSelected" Value="True"> |
||||||
|
<Setter TargetName="InnerBorder" Property="Panel.Background" Value="#0000DE" /> |
||||||
|
<Setter TargetName="InnerBorder" Property="TextElement.Foreground" Value="#FFFFFF" /> |
||||||
|
</Trigger> |
||||||
|
</ControlTemplate.Triggers> |
||||||
|
</ControlTemplate> |
||||||
|
</Setter.Value> |
||||||
|
</Setter> |
||||||
|
</Style> |
||||||
|
|
||||||
|
<HierarchicalDataTemplate DataType="{x:Type ShortcutsManagement:AddIn}" ItemsSource="{Binding Path=Categories}" > |
||||||
|
<TextBlock Text="{Binding Path=Name}" ShortcutsManagement:TextBlockBehavior.SearchedText="{Binding ElementName=searchField, Path=Text}" /> |
||||||
|
</HierarchicalDataTemplate> |
||||||
|
|
||||||
|
<HierarchicalDataTemplate DataType="{x:Type ShortcutsManagement:ShortcutCategory}" > |
||||||
|
<HierarchicalDataTemplate.ItemsSource> |
||||||
|
<MultiBinding Converter="{StaticResource ShortcutsTreeConverter}"> |
||||||
|
<Binding Path="SubCategories" /> |
||||||
|
<Binding Path="Shortcuts" /> |
||||||
|
</MultiBinding> |
||||||
|
</HierarchicalDataTemplate.ItemsSource> |
||||||
|
|
||||||
|
<TextBlock Text="{Binding Path=Name}" ShortcutsManagement:TextBlockBehavior.SearchedText="{Binding ElementName=searchField, Path=Text}" /> |
||||||
|
</HierarchicalDataTemplate> |
||||||
|
|
||||||
|
<HierarchicalDataTemplate DataType="{x:Type ShortcutsManagement:Shortcut}" > |
||||||
|
<Grid x:Name="shortcutEntry" MouseDown="shortcutEntry_MouseDown"> |
||||||
|
<Grid.ColumnDefinitions> |
||||||
|
<ColumnDefinition Width="*" /> |
||||||
|
<ColumnDefinition Width="*" /> |
||||||
|
</Grid.ColumnDefinitions> |
||||||
|
|
||||||
|
<TextBlock Text="{Binding Name}" ShortcutsManagement:TextBlockBehavior.SearchedText="{Binding ElementName=searchField, Path=Text}" Grid.Column="0" /> |
||||||
|
<TextBlock Text="{Binding Gestures, Converter={StaticResource GesturesListConverter}}" Grid.Column="1" TextAlignment="Right" /> |
||||||
|
</Grid> |
||||||
|
</HierarchicalDataTemplate> |
||||||
|
</TreeView.Resources> |
||||||
|
</TreeView> |
||||||
|
|
||||||
|
<TextBox x:Name="searchTextBox" KeyUp="searchTextBox_KeyUp" Grid.Column="1" Grid.Row="2"> |
||||||
|
<TextBox.Resources> |
||||||
|
<Style TargetType="{x:Type TextBox}"> |
||||||
|
<Setter Property="Template"> |
||||||
|
<Setter.Value> |
||||||
|
<ControlTemplate TargetType="{x:Type TextBoxBase}"> |
||||||
|
<Border Name="Border" CornerRadius="0,0,8,8" Padding="2" Background="#FFF" BorderBrush="#888" BorderThickness="1,0,1,1"> |
||||||
|
<ScrollViewer Margin="0" x:Name="PART_ContentHost"/> |
||||||
|
</Border> |
||||||
|
</ControlTemplate> |
||||||
|
</Setter.Value> |
||||||
|
</Setter> |
||||||
|
</Style> |
||||||
|
</TextBox.Resources> |
||||||
|
</TextBox> |
||||||
|
<ToggleButton x:Name="searchTypeToggleButton" Grid.Column="2" Grid.Row="2" Style="{StaticResource ShortcutsTreeSearchType}" IsChecked="{Binding Path=IsExpanded, RelativeSource={RelativeSource TemplatedParent}}" ClickMode="Press" /> |
||||||
|
</Grid> |
||||||
|
</UserControl> |
@ -0,0 +1,84 @@ |
|||||||
|
using System.Collections.Generic; |
||||||
|
using System.Linq; |
||||||
|
using System.Windows; |
||||||
|
using System.Windows.Controls; |
||||||
|
using System.Windows.Input; |
||||||
|
using ICSharpCode.SharpDevelop; |
||||||
|
|
||||||
|
namespace ICSharpCode.ShortcutsManagement |
||||||
|
{ |
||||||
|
/// <summary>
|
||||||
|
/// This panel is used in SharpDevelop options window to manage shortcuts
|
||||||
|
/// </summary>
|
||||||
|
public partial class ShortcutsManagementOptionsPanel : UserControl, IOptionPanel |
||||||
|
{ |
||||||
|
public ShortcutsManagementOptionsPanel() |
||||||
|
{ |
||||||
|
InitializeComponent(); |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
private void shortcutEntry_MouseDown(object sender, MouseButtonEventArgs e) |
||||||
|
{ |
||||||
|
if (e.ChangedButton == MouseButton.Left && e.ClickCount == 2) |
||||||
|
{ |
||||||
|
MessageBox.Show("Changing shortcut"); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Filter shortcuts tree view. Display only matching shortcuts
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="sender"></param>
|
||||||
|
/// <param name="e"></param>
|
||||||
|
private void searchTextBox_KeyUp(object sender, KeyEventArgs e) |
||||||
|
{ |
||||||
|
var receiver = ((ShortcutsProvider) Resources["ShortcutsReceiver"]); |
||||||
|
receiver.Filter(searchTextBox.Text); |
||||||
|
|
||||||
|
if (!string.IsNullOrEmpty(searchTextBox.Text)) |
||||||
|
{ |
||||||
|
// Select first visible shortcut
|
||||||
|
var selectedAddIn = receiver.GetAddIns().FirstOrDefault(a => a.IsVisible); |
||||||
|
if (selectedAddIn != null) |
||||||
|
{ |
||||||
|
var selectedCategory = selectedAddIn.Categories.FirstOrDefault(c => c.IsVisible); |
||||||
|
if (selectedCategory != null) |
||||||
|
{ |
||||||
|
var selectedShortcut = selectedCategory.Shortcuts.FirstOrDefault(s => s.IsVisible); |
||||||
|
if (selectedShortcut != null) |
||||||
|
{ |
||||||
|
shortcutsTreeView.SelectItem(new List<object> { selectedAddIn, selectedCategory, selectedShortcut }); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
else |
||||||
|
{ |
||||||
|
shortcutsTreeView.SetExpandAll(false); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
public void LoadOptions() |
||||||
|
{ |
||||||
|
} |
||||||
|
|
||||||
|
public bool SaveOptions() |
||||||
|
{ |
||||||
|
return true; |
||||||
|
} |
||||||
|
|
||||||
|
public object Owner |
||||||
|
{ |
||||||
|
get; set; |
||||||
|
} |
||||||
|
|
||||||
|
public object Control |
||||||
|
{ |
||||||
|
get |
||||||
|
{ |
||||||
|
return this; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,83 @@ |
|||||||
|
using System.Text.RegularExpressions; |
||||||
|
using System.Windows; |
||||||
|
using System.Windows.Controls; |
||||||
|
using System.Windows.Documents; |
||||||
|
|
||||||
|
namespace ICSharpCode.ShortcutsManagement |
||||||
|
{ |
||||||
|
/// <summary>
|
||||||
|
/// TextBlockBehavior.SearchedText attached property
|
||||||
|
/// </summary>
|
||||||
|
public static class TextBlockBehavior |
||||||
|
{ |
||||||
|
/// <summary>
|
||||||
|
/// Get attached property value
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="textBlock">Attached property host</param>
|
||||||
|
/// <returns>Attached property value</returns>
|
||||||
|
public static string GetSearchedText(TextBlock textBlock) |
||||||
|
{ |
||||||
|
return (string)textBlock.GetValue(SearchedTextProperty); |
||||||
|
} |
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Set attached property value
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="textBlock">Attached property host</param>
|
||||||
|
/// <param name="value">New attached property value</param>
|
||||||
|
public static void SetSearchedText(TextBlock textBlock, string value) |
||||||
|
{ |
||||||
|
textBlock.SetValue(SearchedTextProperty, value); |
||||||
|
} |
||||||
|
|
||||||
|
public static readonly DependencyProperty SearchedTextProperty = |
||||||
|
DependencyProperty.RegisterAttached( |
||||||
|
"SearchedText", |
||||||
|
typeof(string), |
||||||
|
typeof(TextBlockBehavior), |
||||||
|
new UIPropertyMetadata(null, OnSearchedTextChanged)); |
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// On SearchedText changed highlight text in TextBlock which matches
|
||||||
|
/// attached property value
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="depObj"></param>
|
||||||
|
/// <param name="e"></param>
|
||||||
|
private static void OnSearchedTextChanged(DependencyObject depObj, DependencyPropertyChangedEventArgs e) |
||||||
|
{ |
||||||
|
var textBlock = (TextBlock) depObj; |
||||||
|
|
||||||
|
var textBlockText = textBlock.Text; |
||||||
|
textBlock.Inlines.Clear(); |
||||||
|
|
||||||
|
var matches = Regex.Matches(textBlockText, @"(.*)(" + Regex.Escape((string)e.NewValue) + @")(.*)", RegexOptions.IgnoreCase); |
||||||
|
if (matches.Count > 0) |
||||||
|
{ |
||||||
|
foreach (Match match in matches) |
||||||
|
{ |
||||||
|
var matchedTextPrefix = match.Groups[1].Value; |
||||||
|
if (!string.IsNullOrEmpty(matchedTextPrefix)) |
||||||
|
{ |
||||||
|
textBlock.Inlines.Add(new Run(matchedTextPrefix)); |
||||||
|
} |
||||||
|
|
||||||
|
var matchedText = match.Groups[2].Value; |
||||||
|
if (!string.IsNullOrEmpty(matchedText)) |
||||||
|
{ |
||||||
|
textBlock.Inlines.Add(new Bold(new Run(matchedText))); |
||||||
|
} |
||||||
|
|
||||||
|
var matchedTextSuffix = match.Groups[3].Value; |
||||||
|
if (!string.IsNullOrEmpty(matchedTextSuffix)) |
||||||
|
{ |
||||||
|
textBlock.Inlines.Add(new Run(matchedTextSuffix)); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
else |
||||||
|
{ |
||||||
|
textBlock.Inlines.Add(new Run(textBlockText)); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,80 @@ |
|||||||
|
using System; |
||||||
|
using System.Collections.Generic; |
||||||
|
using System.Linq; |
||||||
|
using System.Reflection; |
||||||
|
using System.Windows.Controls; |
||||||
|
using System.Windows.Controls.Primitives; |
||||||
|
|
||||||
|
namespace ICSharpCode.ShortcutsManagement |
||||||
|
{ |
||||||
|
/// <summary>
|
||||||
|
/// TreeView extention methods
|
||||||
|
/// </summary>
|
||||||
|
public static class TreeViewExtensions |
||||||
|
{ |
||||||
|
/// <summary>
|
||||||
|
/// Expand TreeView items according to provided path and select element
|
||||||
|
/// on the lowest level
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="parentContainer">TreeView or TreeViewItem</param>
|
||||||
|
/// <param name="path">Path to the selected item</param>
|
||||||
|
public static void SelectItem(this ItemsControl parentContainer, List<object> path) |
||||||
|
{ |
||||||
|
var head = path.First(); |
||||||
|
var tail = path.GetRange(1, path.Count - 1); |
||||||
|
var itemContainer = parentContainer.ItemContainerGenerator.ContainerFromItem(head) as TreeViewItem; |
||||||
|
|
||||||
|
if (itemContainer != null && itemContainer.Items.Count == 0) |
||||||
|
{ |
||||||
|
itemContainer.IsSelected = true; |
||||||
|
|
||||||
|
var selectMethod = typeof(TreeViewItem).GetMethod("Select", BindingFlags.NonPublic | BindingFlags.Instance); |
||||||
|
selectMethod.Invoke(itemContainer, new object[] { true }); |
||||||
|
} |
||||||
|
else if (itemContainer != null) |
||||||
|
{ |
||||||
|
itemContainer.IsExpanded = true; |
||||||
|
|
||||||
|
if (itemContainer.ItemContainerGenerator.Status != GeneratorStatus.ContainersGenerated) |
||||||
|
{ |
||||||
|
itemContainer.ItemContainerGenerator.StatusChanged += delegate |
||||||
|
{ |
||||||
|
SelectItem(itemContainer, tail); |
||||||
|
}; |
||||||
|
} |
||||||
|
else |
||||||
|
{ |
||||||
|
SelectItem(itemContainer, tail); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Expand/Collapse all tree view items
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="parentContainer">TreeView or TreeViewItem</param>
|
||||||
|
/// <param name="value">True - expand, False - collapse</param>
|
||||||
|
public static void SetExpandAll(this ItemsControl parentContainer, bool value) |
||||||
|
{ |
||||||
|
foreach (Object item in parentContainer.Items) |
||||||
|
{ |
||||||
|
var currentContainer = parentContainer.ItemContainerGenerator.ContainerFromItem(item) as TreeViewItem; |
||||||
|
if (currentContainer != null && currentContainer.Items.Count > 0) |
||||||
|
{ |
||||||
|
currentContainer.IsExpanded = value; |
||||||
|
if (currentContainer.ItemContainerGenerator.Status != GeneratorStatus.ContainersGenerated) |
||||||
|
{ |
||||||
|
currentContainer.ItemContainerGenerator.StatusChanged += delegate |
||||||
|
{ |
||||||
|
SetExpandAll(currentContainer, value); |
||||||
|
}; |
||||||
|
} |
||||||
|
else |
||||||
|
{ |
||||||
|
SetExpandAll(currentContainer, value); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,5 @@ |
|||||||
|
<ResourceDictionary |
||||||
|
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" |
||||||
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> |
||||||
|
|
||||||
|
</ResourceDictionary> |
@ -0,0 +1,10 @@ |
|||||||
|
<Window x:Class="ICSharpCode.ShortcutsManagement.Window1" |
||||||
|
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" |
||||||
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" |
||||||
|
xmlns:local="clr-namespace:ICSharpCode.ShortcutsManagement" |
||||||
|
Title="Window1" Height="300" Width="460" MinWidth="460"> |
||||||
|
|
||||||
|
<Grid> |
||||||
|
<local:ShortcutsManagementOptionsPanel /> |
||||||
|
</Grid> |
||||||
|
</Window> |
@ -0,0 +1,15 @@ |
|||||||
|
using System.Windows; |
||||||
|
|
||||||
|
namespace ICSharpCode.ShortcutsManagement |
||||||
|
{ |
||||||
|
/// <summary>
|
||||||
|
/// Interaction logic for Window1.xaml
|
||||||
|
/// </summary>
|
||||||
|
public partial class Window1 : Window |
||||||
|
{ |
||||||
|
public Window1() |
||||||
|
{ |
||||||
|
InitializeComponent(); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
Binary file not shown.
Loading…
Reference in new issue