From d1fd2832d4e1b5abd7eec3be7c323c711a366f8d Mon Sep 17 00:00:00 2001 From: Sergej Andrejev Date: Wed, 10 Jun 2009 16:16:07 +0000 Subject: [PATCH] Register bindings by providing binding info object instead bunch of arguments. Show bindings in options panel. Add categories and allow multiple gestures in InputBindingInfo instance git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/branches/shortcuts@4274 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61 --- AddIns/ICSharpCode.SharpDevelop.addin | 182 +++++++++--- .../AvalonEdit.AddIn/Src/CodeEditor.cs | 10 +- .../ShortcutsManagement.suo | Bin 95232 -> 93696 bytes .../Converters/GesturesCollectionConverter.cs | 2 +- .../ShortcutsManagementOptionsPanel.xaml.cs | 97 ++++-- .../Project/Src/Commands/MenuItemBuilders.cs | 26 +- .../Src/TextEditor/Codons/EditActionDoozer.cs | 14 +- .../Command/CommandBindingDescriptor.cs | 19 ++ .../Command/InputBindingDescriptor.cs | 30 +- .../CommandsService/CommandBindingInfo.cs | 89 +++--- .../CommandsService/CommandsRegistry.cs | 86 +++--- .../CommandsService/CommandsService.cs | 46 ++- .../CommandsService/InputBindingInfo.cs | 39 ++- .../InputGestureCollectionExtensions.cs | 33 +++ .../ICSharpCode.Core.Presentation.csproj | 1 + src/SharpDevelop.sln | 278 +++++++++--------- 16 files changed, 622 insertions(+), 330 deletions(-) create mode 100644 src/Main/ICSharpCode.Core.Presentation/CommandsService/InputGestureCollectionExtensions.cs diff --git a/AddIns/ICSharpCode.SharpDevelop.addin b/AddIns/ICSharpCode.SharpDevelop.addin index 33bdb4f80a..3281b40f19 100644 --- a/AddIns/ICSharpCode.SharpDevelop.addin +++ b/AddIns/ICSharpCode.SharpDevelop.addin @@ -99,42 +99,152 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/CodeEditor.cs b/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/CodeEditor.cs index 4a0760826f..267f4a8e4f 100644 --- a/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/CodeEditor.cs +++ b/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/CodeEditor.cs @@ -120,7 +120,15 @@ namespace ICSharpCode.AvalonEdit.AddIn var contextName = this.GetType().FullName; CommandsRegistry.RegisterCommandBindingsUpdateHandler(contextName, this, CommandsRegistry.CreateCommandBindingUpdateHandler(CommandBindings, contextName, this)); CommandsRegistry.RegisterInputBindingUpdateHandler(contextName, this, CommandsRegistry.CreateInputBindingUpdateHandler(InputBindings, contextName, this)); - CommandsRegistry.RegisterCommandBinding(contextName, this, "SDWindowCommands.SplitView", OnSplitView, OnCanSplitView); + + var commandBindingInfo = new CommandBindingInfo(); + commandBindingInfo.ContextName = contextName; + commandBindingInfo.Context = this; + commandBindingInfo.RoutedCommandName = "SDWindowCommands.SplitView"; + commandBindingInfo.ExecutedEventHandler = OnSplitView; + commandBindingInfo.CanExecutedEventHandler = OnCanSplitView; + + CommandsRegistry.RegisterCommandBinding(commandBindingInfo); CommandsRegistry.InvokeCommandBindingUpdateHandlers(contextName, this); CommandsRegistry.InvokeInputBindingUpdateHandlers(contextName, this); diff --git a/src/AddIns/Misc/ShortcutsManagement/ShortcutsManagement.suo b/src/AddIns/Misc/ShortcutsManagement/ShortcutsManagement.suo index 7237b6495f3c5cf5e739be9dc9ce25349441d1eb..8276d1e15a4b54acc8a6daa5d2fef0c606cc8e3f 100644 GIT binary patch delta 3004 zcmZ{m3s6+o8OQH;_wKqbEAJpd1bHYcEVu|hA+W$IpeTscSl<{mlp(?-YX-2o_&?hNZARa8t()Rd^xPOWX!(Y(fK)uA?FD)fIubWNwb^P6+dckVgo zJNNs}|6JF%de>Eb+X^{gvLs0s5DrFyw|I^GBKh*)7ES+ItAk9V4i%n2|A zdK-I8CB`6cgVU#wPwSJp$ESf5e$yNmv<%(F(n{=jrBp2?iMn>ee1xc%YkX&#Wpw*{ z&0rVzhAJ8iEcVuTFOQl^D%l2Cc`ho2C$k41?7VOavD`N)7yH-#_|=T|6BM zihg2WjP?qC5Rl7V1?lVxbeM<35&#~*v7W#pvzSuE^0CnwR76Ah#OZNbPf)1AC|+U+ zmf_$qhca4J7KPc?3u_)4qKrdn0b@ZtNB~xl2$H}!U<1iuJV*hlU;>y3CV|Od3YZGg zKstC1WPnUy2U#E+ArZBy7^Wxl^Lk2_tLweZNDGF{=Q$j?;Y z5c0?C9*Vt2Fzvg}uGnC1i%H@->tSwN9l=eDV<~_ioVm*fMwjri_;H>~X_TmNktM;C zFr8|s-Aam2rS!7olwOe5NKU>Mw@~$)MCp9&x#`-bF~fDOsd8(v%#@$zt}&@EWs*_5 zJJwHT*W>^WupQMFPPrm$l(ALeY1vVHG&^23&!z3^sbX5^b~yO>X&XBob@E{y_d1Xr zA@FsKS8VigXk6i%X*12(Zoi1SC`I;bJ=4lay;wovI-E+bd?t<3*pr*f<#{221=2Uc zqc0wciOKD_b^W!t~ct&%2@{g9x=D9#fV0aBV^UKynuhB)M~z%g2tco8q8I zlIlvKN?twtHs9PE&O7s3+%=(ENnr@FeNJa=Sl zv_S0(p%AUg*`Sj{$&;Ky@H@NuTX(I~;J~={Ra{&9xmk~@5RJ#aI@i|oh6m%>T5r>K zZC*rbgNe3cHzqz&cG|tr&WkqfYIVu2FU#&a2Y2ahYTHsMLv`Iu&Z&b=)cui9E6Ij> z%o#>n?^=WG-n@X9pFO~acY56o!9$x?A%(N&=Df-Qdya8cY%C`x_-dv`Gl?yWQ1Ynz z^_0OU-Opf`(cE=^x}Ok^ENL}_GY2RCXB@>}vF+#G+})(8Rv$XWom;c1l~4X~?$MA8 zzNSWKz1s|=S`8Ga8T)I=y(O3ZQtqnV6R43JCr{$L@#$O@Q>NJtEYfrFo(+8G&!O73 zmV;y*|I{nle%UzsDZ>uri;}GM>@XWV8%%VN`0M`^b9~L8+Qv^g4HX-VnaC^KjuXiovd8y?53ltRff0(R-2;M;`6>NCD+4=ou8`K~Y`^TRE8P z)hEPSJo_vVSJL1ZVaKh?na7T(r70B5{xci+i@o9Pzt0cHFfpk!z-Ci9QUUng!)*<2EcXvC? z;!2t1wGcbIyUlP(O7}8q&M&W#@?px>Z+QMCOV+?!jg^w|CdFyw>WU{+CT?AR5B~?jPp2SeP@D6wvya$9r zYyz9X`#@Z20ypYgfC@eUO<*e!ea$FM;8&mpd8Cc7x*pM4fcS& zU?12IJ^}~8@4!KD2(*E|#?m0F{&-FTbtvQ@^ElX20oHza@2E~a)pJz-2+xTWx;2Ea zH%6-CQs^*W{UnsTUp1(+Qpx@3evBYbWIo+6^3pWZ!+X;cw1OTO_}-ONcTcFgD2jHe z$>sF!P|QE@ba%SYN B#`pjL delta 3205 zcma)83s98T6~5=+f0qT8hpzgno$x57e3SHX#`F1yVva}!7vOTgwF_r zAkhyPL?xmUKhS1!Z-fVuzIxQ#2ekGlXhtd_k?`T0g#iFQCFzIQH%d!u7?dYQuc@@9;+$v$@rVlCQaq2;-8A4%KS z9KhbDbc|n{fZfhdczogk2^%v{sGdonM`v;&Bp@9592ch;aq+k5T0zV;HFqZbh1d$l zhwtCTw^Az6nr?T$90ApU2WIMd#Mrxl?HOgfEI&f($OIXmnRt=o1Dk~Q9d}#CNosRG zB;%f%NbEThf|jMReEzy{fF4Xr+=XjTuNPjh@4Ml6;k7($o;VNR%`f0-ldehFelJS> zTOwRX&qkfPKMX2yq`6R~(9<~-zAj6D3c(~f0lSJa+&3~H9$YpX(Mst+#nvc=%d`lh zX*lgd5a7?RHjRV^teZB|prc+)z!3LNtAR3+=I5DZ$Y0i={NH;+>~OPj1a{jCF}>I- zlVgTg?S}Casv2LJ@I6)4vg-qx%a#8oQpefUSL0z6u5mlC=cJCGUS6Q>cv=E26%xzD+%*@} z_6d+VP$sb$zbc$tp7lUWgVdtP_;s;KeR~Ai$JE_a$A>~J#Ic=`4 ziIlP6elP}fl535Hsu>o3ijfKVSoq7cs#F42bZjy3C7X-@_wfw>BR;o05{ovO@a*z# z*UzoEVCx|?EvVFrYlGq1V{u{vFWR&TT(1~|k3Gqly=czVjhOW6DRiVHQx{_-#oSxE`da_@eF?(i4+RNPnF(($X*Luz6)M2h=|J`X0f#o?&D6Y3osvEOsV zBynYDlh#$E;JBm$UeM7fqw^0|?Cwm&GkHns3-Mqfa<7Cz2AOLK-_vkn;DQ`zm9BD$ z4zKTq=_&=>cIpJ0Psa@6K=B^+&*2cGzA_3zU;*ztJtIgj9s|EeuAHv~{n$W__x&aa z661Y+3=d}h6wcxq=VY$5P6T&+5&T}~^4JXH$)X^@3KfsXkVlG10ZOiX+ynCQj$5zc z{3~X(UNQCyhC^m5&odR1)#`k3@Y0KyHEy{KJ{zWX*rACxeOV9gn+xHhMl~&>RGiJS za_gOLK*tTEyL%ygso~z6257l050a=7iM`N3^mk#xCL{LdMPWjBDmqbiU(bU`S^JQ- zGi7^)eXB|f6qm676a8JJ+fDc_VGm(1VIQG|aDZ@-@Fqc2-yy>92(5&}gmywF!SC-a z>c35Rhwv_82jM88gTNUZ&W=$>1Ql>o{{$iAXhkA)%3uRLFI!YaOKI4mHptk%xs|uJ z>V28_#O*YL%`lPX7ZOB3@g%zyGc*C@;!$t3>$V>6+|r{(mSGKk{#gn(xDzt6nVl_T z3Y$Y%$5ygu>34ydtq+h)q^n}9*fPxUZotxe-ov+_0ePo|!iifh;s@a@KqVtyX8#Hd z-;f|4H}R=GBVg+B{ZK`GrIle%oe7&ujQuyxzMcK=g!`cmG(oB*26A{#YL=`zSAmo6 ztKoDb2JyY#Ea21cjgmE&>8zh|K7kf<27fud4zMjPj4lctelwgwc ztEN4RheNcB2)`K0!#Y0?S=nqh@vxq)W*dlyrPQB7(t2uFu_dgQ)v;_=N~2Ze%uGz| z9Z0~heSt)gi5Ek(q7WYo)a(!RlkeS>k~2Z~25MIjy%kx}i9@Nc9WrNV;B5neMLYAy z0-y8;-rB#z6;xxQx|Y!{18Z*mV^z0=LW}(m&C4v(Q#G9o;2 zp<7B`R#UHzNPMw;;9xNEyJg^*5z!(sRWwH-5A(=QVKwA`6dl!CvK5J`B}r^e*b9g% z>pu~`f*5_DWU)EXih^Ky6k;>AxnmiNX7@BD;GR4Z%s}O1b8lS=yY#B17OcTx;mPR+n1mJj9C3f(*XnQZ(uA>{*$@kmuEyoS-&@Cm{2!pRFzEmQ diff --git a/src/AddIns/Misc/ShortcutsManagement/ShortcutsManagement/Src/Converters/GesturesCollectionConverter.cs b/src/AddIns/Misc/ShortcutsManagement/ShortcutsManagement/Src/Converters/GesturesCollectionConverter.cs index a9439c878f..fbe70f13d1 100644 --- a/src/AddIns/Misc/ShortcutsManagement/ShortcutsManagement/Src/Converters/GesturesCollectionConverter.cs +++ b/src/AddIns/Misc/ShortcutsManagement/ShortcutsManagement/Src/Converters/GesturesCollectionConverter.cs @@ -31,7 +31,7 @@ namespace ICSharpCode.ShortcutsManagement.Converters foreach (var gesture in (ObservableCollection)value) { inputGestureCollection.Add(gesture); } - return new InputGestureCollectionConverter().ConvertToInvariantString(inputGestureCollection); + return new InputGestureCollectionConverter().ConvertToInvariantString(inputGestureCollection).Replace("+", " + ").Replace("|", " | "); } return value.ToString(); diff --git a/src/AddIns/Misc/ShortcutsManagement/ShortcutsManagement/Src/Dialogs/ShortcutsManagementOptionsPanel.xaml.cs b/src/AddIns/Misc/ShortcutsManagement/ShortcutsManagement/Src/Dialogs/ShortcutsManagementOptionsPanel.xaml.cs index 0e38d672dc..6055f38b8f 100644 --- a/src/AddIns/Misc/ShortcutsManagement/ShortcutsManagement/Src/Dialogs/ShortcutsManagementOptionsPanel.xaml.cs +++ b/src/AddIns/Misc/ShortcutsManagement/ShortcutsManagement/Src/Dialogs/ShortcutsManagementOptionsPanel.xaml.cs @@ -1,9 +1,13 @@ -using System.Collections.ObjectModel; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Text.RegularExpressions; using System.Windows.Controls; using System.Windows.Input; using ICSharpCode.Core; using ICSharpCode.Core.Presentation; using ICSharpCode.SharpDevelop; +using ICSharpCode.ShortcutsManagement.Data; +using AddIn=ICSharpCode.Core.AddIn; using ShortcutManagement=ICSharpCode.ShortcutsManagement.Data; namespace ICSharpCode.ShortcutsManagement @@ -29,37 +33,82 @@ namespace ICSharpCode.ShortcutsManagement // Test data var addins = new ObservableCollection(); addins.Add(new ShortcutManagement.AddIn("SharpDevelop")); - addins[0].Categories.Add(new ShortcutManagement.ShortcutCategory("Editing")); - addins[0].Categories[0].Shortcuts.Add(new ShortcutManagement.Shortcut("Copy", GetGestures("Ctrl + C"))); - addins[0].Categories[0].Shortcuts.Add(new ShortcutManagement.Shortcut("Paste", GetGestures("Ctrl + V | Ctrl+Insert"))); - addins[0].Categories[0].Shortcuts.Add(new ShortcutManagement.Shortcut("Cut", GetGestures("Ctrl + X"))); - addins[0].Categories[0].Shortcuts.Add(new ShortcutManagement.Shortcut("Undo", GetGestures("Ctrl + Z"))); - addins[0].Categories[0].Shortcuts.Add(new ShortcutManagement.Shortcut("Redo", GetGestures("Ctrl + Y"))); - addins[0].Categories.Add(new ShortcutManagement.ShortcutCategory("Building")); - addins[0].Categories[1].Shortcuts.Add(new ShortcutManagement.Shortcut("Build", GetGestures("Ctrl + Shift+B"))); - addins[0].Categories[1].Shortcuts.Add(new ShortcutManagement.Shortcut("Run", GetGestures("F5"))); - addins[0].Categories[1].Shortcuts.Add(new ShortcutManagement.Shortcut("Run without debuger", GetGestures("Ctrl + F5"))); - addins[0].Categories[1].Shortcuts.Add(new ShortcutManagement.Shortcut("Attach debuger", GetGestures("Ctrl + F8"))); - addins[0].Categories.Add(new ShortcutManagement.ShortcutCategory("Uncategorized")); - addins[0].Categories[2].Shortcuts.Add(new ShortcutManagement.Shortcut("Attach debuger", GetGestures("Ctrl + F8"))); + addins[0].Categories.Add(new ShortcutCategory("Editing")); + addins[0].Categories[0].Shortcuts.Add(new Shortcut("Copy", GetGestures("Ctrl + C"))); + addins[0].Categories[0].Shortcuts.Add(new Shortcut("Paste", GetGestures("Ctrl + V | Ctrl+Insert"))); + addins[0].Categories[0].Shortcuts.Add(new Shortcut("Cut", GetGestures("Ctrl + X"))); + addins[0].Categories[0].Shortcuts.Add(new Shortcut("Undo", GetGestures("Ctrl + Z"))); + addins[0].Categories[0].Shortcuts.Add(new Shortcut("Redo", GetGestures("Ctrl + Y"))); + addins[0].Categories.Add(new ShortcutCategory("Building")); + addins[0].Categories[1].Shortcuts.Add(new Shortcut("Build", GetGestures("Ctrl + Shift+B"))); + addins[0].Categories[1].Shortcuts.Add(new Shortcut("Run", GetGestures("F5"))); + addins[0].Categories[1].Shortcuts.Add(new Shortcut("Run without debuger", GetGestures("Ctrl + F5"))); + addins[0].Categories[1].Shortcuts.Add(new Shortcut("Attach debuger", GetGestures("Ctrl + F8"))); + addins[0].Categories.Add(new ShortcutCategory("Uncategorized")); + addins[0].Categories[2].Shortcuts.Add(new Shortcut("Attach debuger", GetGestures("Ctrl + F8"))); addins.Add(new ShortcutManagement.AddIn("Search & replace")); - addins[1].Categories.Add(new ShortcutManagement.ShortcutCategory("Uncategorized")); - addins[1].Categories[0].Shortcuts.Add(new ShortcutManagement.Shortcut("Quick find", GetGestures("Ctrl + F"))); - addins[1].Categories[0].Shortcuts.Add(new ShortcutManagement.Shortcut("Quick replace", GetGestures("Ctrl + H"))); - addins[1].Categories[0].Shortcuts.Add(new ShortcutManagement.Shortcut("Find in files", GetGestures("Ctrl + Shift + F | Ctrl + Shift + H | Ctrl + I"))); - addins[1].Categories[0].Shortcuts.Add(new ShortcutManagement.Shortcut("Replace in files", GetGestures("Ctrl + Shift + H"))); - addins[1].Categories[0].Shortcuts.Add(new ShortcutManagement.Shortcut("Find symbol", null)); + addins[1].Categories.Add(new ShortcutCategory("Uncategorized")); + addins[1].Categories[0].Shortcuts.Add(new Shortcut("Quick find", GetGestures("Ctrl + F"))); + addins[1].Categories[0].Shortcuts.Add(new Shortcut("Quick replace", GetGestures("Ctrl + H"))); + addins[1].Categories[0].Shortcuts.Add(new Shortcut("Find in files", GetGestures("Ctrl + Shift + F | Ctrl + Shift + H | Ctrl + I"))); + addins[1].Categories[0].Shortcuts.Add(new Shortcut("Replace in files", GetGestures("Ctrl + Shift + H"))); + addins[1].Categories[0].Shortcuts.Add(new Shortcut("Find symbol", null)); addins.Add(new ShortcutManagement.AddIn("Unspecified")); - addins[2].Categories.Add(new ShortcutManagement.ShortcutCategory("Uncategorized")); - addins[2].Categories[0].Shortcuts.Add(new ShortcutManagement.Shortcut("Test regex expression", null)); + addins[2].Categories.Add(new ShortcutCategory("Uncategorized")); + addins[2].Categories[0].Shortcuts.Add(new Shortcut("Test regex expression", null)); shortcutsManagementOptionsPanel.DataContext = addins; } - public void LoadOptions() { - + public void LoadOptions() + { + // Load shortcuts for real + var unspecifiedAddInSection = new ShortcutManagement.AddIn("Unspecified"); + unspecifiedAddInSection.Categories.Add(new ShortcutCategory("Uncategorized")); + + var addIns = new ObservableCollection(); + addIns.Add(unspecifiedAddInSection); + + var addInsMap = new Dictionary(); + var categoriesMap = new Dictionary>(); + + foreach(var inputBindingInfo in CommandsRegistry.InputBidnings) { + ShortcutManagement.AddIn addinSection; + if(inputBindingInfo.AddIn == null) { + addinSection = unspecifiedAddInSection; + } else if (addInsMap.ContainsKey(inputBindingInfo.AddIn)) { + addinSection = addInsMap[inputBindingInfo.AddIn]; + } else { + addinSection = new ShortcutManagement.AddIn(inputBindingInfo.AddIn.Name); + addinSection.Categories.Add(new ShortcutCategory("Uncategorized")); + addInsMap.Add(inputBindingInfo.AddIn, addinSection); + categoriesMap.Add(addinSection, new Dictionary()); + addIns.Add(addinSection); + } + + ShortcutCategory categorySection; + if(string.IsNullOrEmpty(inputBindingInfo.CategoryName) || !categoriesMap[addinSection].ContainsKey(inputBindingInfo.CategoryName)) { + categorySection = addinSection.Categories[0]; + } else { + categorySection = categoriesMap[addinSection][inputBindingInfo.CategoryName]; + } + + var shortcutText = !string.IsNullOrEmpty(inputBindingInfo.RoutedCommandText) + ? inputBindingInfo.RoutedCommandText + : inputBindingInfo.RoutedCommand.Text; + shortcutText = StringParser.Parse(shortcutText); + + // Some commands have "&" sign to mark alternative key used to call this command from menu + // Strip this sign + shortcutText = Regex.Replace(shortcutText, @"&([^\s])", @"$1"); + + var shortcut = new Shortcut(shortcutText, inputBindingInfo.Gestures); + categorySection.Shortcuts.Add(shortcut); + } + + shortcutsManagementOptionsPanel.DataContext = addIns; } public bool SaveOptions() { diff --git a/src/Main/Base/Project/Src/Commands/MenuItemBuilders.cs b/src/Main/Base/Project/Src/Commands/MenuItemBuilders.cs index 251b151887..2408e56438 100644 --- a/src/Main/Base/Project/Src/Commands/MenuItemBuilders.cs +++ b/src/Main/Base/Project/Src/Commands/MenuItemBuilders.cs @@ -6,6 +6,7 @@ // using System; +using System.Linq; using System.Collections; using System.Collections.Generic; using System.Diagnostics; @@ -474,17 +475,32 @@ namespace ICSharpCode.SharpDevelop.Commands // TODO: fix this hack if(!bindingsAssigned.Contains(routedCommandName)) { + var addIn = AddInTree.AddIns.FirstOrDefault(a => a.Name == "SharpDevelop"); + // Dynamicaly create routed UI command to loaded pad and bindings for it CommandsRegistry.RegisterRoutedUICommand(routedCommandName, routedCommandText); CommandsRegistry.LoadCommand(routedCommandName, new BringPadToFrontCommand(padContent)); - CommandsRegistry.RegisterCommandBinding(CommandsRegistry.DefaultContext, null, routedCommandName, routedCommandName, null, false); + + var commandBindingInfo = new CommandBindingInfo(); + commandBindingInfo.ClassName = routedCommandName; + commandBindingInfo.ContextName = CommandsRegistry.DefaultContext; + commandBindingInfo.RoutedCommandName = routedCommandName; + commandBindingInfo.AddIn = addIn; + + CommandsRegistry.RegisterCommandBinding(commandBindingInfo); // If pad have shortcut specified add input binding if (!string.IsNullOrEmpty(padContent.Shortcut)) { - var gestures = (InputGestureCollection)new InputGestureCollectionConverter().ConvertFromString(padContent.Shortcut); - foreach(InputGesture gesture in gestures) { - CommandsRegistry.RegisterInputBinding(CommandsRegistry.DefaultContext, null, routedCommandName, gesture); - } + var gestures = (InputGestureCollection)new InputGestureCollectionConverter().ConvertFromString(padContent.Shortcut); + + var inputBindingInfo = new InputBindingInfo(); + inputBindingInfo.ContextName = CommandsRegistry.DefaultContext; + inputBindingInfo.RoutedCommandName = routedCommandName; + inputBindingInfo.Gestures = gestures; + inputBindingInfo.CategoryName = "Views"; + inputBindingInfo.AddIn = addIn; + + CommandsRegistry.RegisterInputBinding(inputBindingInfo); } bindingsAssigned.Add(routedCommandName); diff --git a/src/Main/Base/Project/Src/TextEditor/Codons/EditActionDoozer.cs b/src/Main/Base/Project/Src/TextEditor/Codons/EditActionDoozer.cs index 380c2c271b..3578936863 100644 --- a/src/Main/Base/Project/Src/TextEditor/Codons/EditActionDoozer.cs +++ b/src/Main/Base/Project/Src/TextEditor/Codons/EditActionDoozer.cs @@ -9,6 +9,7 @@ using System; using System.Collections; using System.Reflection; using System.Windows.Forms; +using ICSharpCode.Core.WinForms; using ICSharpCode.Core; using ICSharpCode.TextEditor.Actions; @@ -44,17 +45,8 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Codons public object BuildItem(object caller, Codon codon, ArrayList subItems) { IEditAction editAction = (IEditAction)codon.AddIn.CreateObject(codon.Properties["class"]); - string[] keys = codon.Properties["keys"].Split(','); - - Keys[] actionKeys = new Keys[keys.Length]; - for (int j = 0; j < keys.Length; ++j) { - string[] keydescr = keys[j].Split('|'); - Keys key = (Keys)((System.Windows.Forms.Keys.Space.GetType()).InvokeMember(keydescr[0], BindingFlags.GetField, null, System.Windows.Forms.Keys.Space, new object[0])); - for (int k = 1; k < keydescr.Length; ++k) { - key |= (Keys)((System.Windows.Forms.Keys.Space.GetType()).InvokeMember(keydescr[k], BindingFlags.GetField, null, System.Windows.Forms.Keys.Space, new object[0])); - } - actionKeys[j] = key; - } + + var actionKeys = (Keys[])new KeysCollectionConverter().ConvertFrom(codon.Properties["keys"]); editAction.Keys = actionKeys; return editAction; diff --git a/src/Main/Core/Project/Src/AddInTree/AddIn/DefaultDoozers/Command/CommandBindingDescriptor.cs b/src/Main/Core/Project/Src/AddInTree/AddIn/DefaultDoozers/Command/CommandBindingDescriptor.cs index 6f0043d1f4..856f33d900 100644 --- a/src/Main/Core/Project/Src/AddInTree/AddIn/DefaultDoozers/Command/CommandBindingDescriptor.cs +++ b/src/Main/Core/Project/Src/AddInTree/AddIn/DefaultDoozers/Command/CommandBindingDescriptor.cs @@ -24,11 +24,20 @@ namespace ICSharpCode.Core /// /// Full name of routed UI command which will trigger this binding + /// + /// If command with provided name is not yet registered it's created automatically /// public string Command { get; private set; } + /// + /// Override routed command text (string visible to user) if specified + /// + public string CommandText { + get; private set; + } + /// /// Full name of context class. /// @@ -47,6 +56,14 @@ namespace ICSharpCode.Core get; private set; } + /// + /// If input binding is created in the same context (this is done by setting property) + /// assign this input binding to provided category + /// + public string Category { + get; private set; + } + /// /// Lazy loading /// @@ -68,8 +85,10 @@ namespace ICSharpCode.Core Codon = codon; Class = Codon.Properties["class"]; Command = Codon.Properties["command"]; + CommandText = Codon.Properties["commandtext"]; Context = Codon.Properties["context"]; Gestures = Codon.Properties["gestures"]; + Category = Codon.Properties["category"]; } } } diff --git a/src/Main/Core/Project/Src/AddInTree/AddIn/DefaultDoozers/Command/InputBindingDescriptor.cs b/src/Main/Core/Project/Src/AddInTree/AddIn/DefaultDoozers/Command/InputBindingDescriptor.cs index e71a3e00e9..f3534ab70a 100644 --- a/src/Main/Core/Project/Src/AddInTree/AddIn/DefaultDoozers/Command/InputBindingDescriptor.cs +++ b/src/Main/Core/Project/Src/AddInTree/AddIn/DefaultDoozers/Command/InputBindingDescriptor.cs @@ -7,6 +7,13 @@ namespace ICSharpCode.Core /// public class InputBindingDescriptor { + /// + /// Codon used to create this descriptor + /// + public Codon Codon { + get; private set; + } + /// /// Full name of routed UI command which will be invoked when this binding is triggered /// @@ -14,6 +21,13 @@ namespace ICSharpCode.Core get; private set; } + /// + /// Override routed command text (string visible to user) if specified + /// + public string CommandText { + get; private set; + } + /// /// Full name of context class. /// @@ -24,9 +38,16 @@ namespace ICSharpCode.Core } /// - /// Description of gesture which will trigger this bindin + /// Description of gesture which will trigger this binding + /// + public string Gestures { + get; private set; + } + + /// + /// Category to which this binding belongs /// - public string Gesture { + public string Category { get; private set; } @@ -36,9 +57,12 @@ namespace ICSharpCode.Core /// Reference to codon used to create this descriptor public InputBindingDescriptor(Codon codon) { + Codon = codon; Command = codon.Properties["command"]; + CommandText = codon.Properties["commandtext"]; Context = codon.Properties["context"]; - Gesture = codon.Properties["gesture"]; + Gestures = codon.Properties["gestures"]; + Category = codon.Properties["category"]; } } } diff --git a/src/Main/ICSharpCode.Core.Presentation/CommandsService/CommandBindingInfo.cs b/src/Main/ICSharpCode.Core.Presentation/CommandsService/CommandBindingInfo.cs index bfca7ba074..dbeca30884 100644 --- a/src/Main/ICSharpCode.Core.Presentation/CommandsService/CommandBindingInfo.cs +++ b/src/Main/ICSharpCode.Core.Presentation/CommandsService/CommandBindingInfo.cs @@ -11,44 +11,8 @@ namespace ICSharpCode.Core.Presentation { private UIElement contextInstance; - /// - /// Constructor - /// - /// Context full name - /// Name of routed UI command which triggers this binding - /// Command full name - /// Add-in where command is registered - /// Lazy load command - public CommandBindingInfo(string contextName, string routedCommandName, string className, AddIn addIn, bool isLazy) { - RoutedCommandName = routedCommandName; - ContextName = contextName; - ClassName = className; - IsLazy = isLazy; - AddIn = addIn; - } - - public CommandBindingInfo(string contextName, UIElement contextInstance, string routedCommandName, string className, AddIn addIn, bool isLazy) { - RoutedCommandName = routedCommandName; - ContextName = contextName; - ClassName = className; - IsLazy = isLazy; - AddIn = addIn; - this.contextInstance = contextInstance; - } - - public CommandBindingInfo(string contextName, string routedCommandName, ExecutedRoutedEventHandler executedHandler, CanExecuteRoutedEventHandler canExecuteHandler) { - RoutedCommandName = routedCommandName; - ContextName = contextName; - this.executedEventHandler = executedHandler; - this.canExecutedEventHandler = canExecuteHandler; - } - - public CommandBindingInfo(string contextName, UIElement contextInstance, string routedCommandName, ExecutedRoutedEventHandler executedHandler, CanExecuteRoutedEventHandler canExecuteHandler) { - RoutedCommandName = routedCommandName; - ContextName = contextName; - this.executedEventHandler = executedHandler; - this.canExecutedEventHandler = canExecuteHandler; - this.contextInstance = contextInstance; + public CommandBindingInfo() + { } /// @@ -58,7 +22,7 @@ namespace ICSharpCode.Core.Presentation /// /// public string RoutedCommandName { - get; private set; + get; set; } /// @@ -77,7 +41,7 @@ namespace ICSharpCode.Core.Presentation /// Add-in to which binded command belongs /// public AddIn AddIn { - get; private set; + get; set; } /// @@ -87,9 +51,11 @@ namespace ICSharpCode.Core.Presentation /// /// public string ClassName { - get; private set; + get; set; } + private System.Windows.Input.ICommand classInstance; + /// /// Binded command instance /// @@ -99,14 +65,22 @@ namespace ICSharpCode.Core.Presentation /// /// public System.Windows.Input.ICommand Class { + set { + classInstance = value; + } get { + if(classInstance != null) { + return classInstance; + } + if(AddIn != null && (AddIn.DependenciesLoaded || IsLazy)) { CommandsRegistry.LoadAddinCommands(AddIn); } System.Windows.Input.ICommand command; CommandsRegistry.commands.TryGetValue(ClassName, out command); - + classInstance = command; + return command; } } @@ -117,7 +91,7 @@ namespace ICSharpCode.Core.Presentation /// Described binding will be valid in this context /// public string ContextName{ - get; private set; + get; set; } /// @@ -126,6 +100,9 @@ namespace ICSharpCode.Core.Presentation /// Described binding will be valid in this context /// public UIElement Context { + set { + contextInstance = value; + } get { if(contextInstance != null) { return contextInstance; @@ -146,13 +123,22 @@ namespace ICSharpCode.Core.Presentation /// to false then this binding can't be triggered until add-in is loaded. /// public bool IsLazy{ - get; private set; + get; set; } - private ExecutedRoutedEventHandler executedEventHandler; - public void ExecutedEventHandler(object sender, ExecutedRoutedEventArgs e) { - if(executedEventHandler != null) { - executedEventHandler.Invoke(sender, e); + public ExecutedRoutedEventHandler ExecutedEventHandler + { + get; set; + } + + public CanExecuteRoutedEventHandler CanExecutedEventHandler + { + get; set; + } + + internal void GeneratedExecutedEventHandler(object sender, ExecutedRoutedEventArgs e) { + if(ExecutedEventHandler != null) { + ExecutedEventHandler.Invoke(sender, e); } else { if(IsLazy && Class == null) { AddIn.LoadRuntimeAssemblies(); @@ -167,10 +153,9 @@ namespace ICSharpCode.Core.Presentation } } - private CanExecuteRoutedEventHandler canExecutedEventHandler; - public void CanExecuteEventHandler(object sender, CanExecuteRoutedEventArgs e) { - if(canExecutedEventHandler != null) { - canExecutedEventHandler.Invoke(sender, e); + internal void GeneratedCanExecuteEventHandler(object sender, CanExecuteRoutedEventArgs e) { + if(CanExecutedEventHandler != null) { + CanExecutedEventHandler.Invoke(sender, e); } else { if(IsLazy && Class == null) { e.CanExecute = true; diff --git a/src/Main/ICSharpCode.Core.Presentation/CommandsService/CommandsRegistry.cs b/src/Main/ICSharpCode.Core.Presentation/CommandsService/CommandsRegistry.cs index cefd146e7e..81eb931c03 100644 --- a/src/Main/ICSharpCode.Core.Presentation/CommandsService/CommandsRegistry.cs +++ b/src/Main/ICSharpCode.Core.Presentation/CommandsService/CommandsRegistry.cs @@ -27,6 +27,20 @@ namespace ICSharpCode.Core.Presentation public static string DefaultContext { get; set; } + + public static ICollection CommandBindings + { + get { + return commandBindings; + } + } + public static List InputBidnings + { + get { + return inputBidnings; + } + } + private static List commandBindings = new List(); private static List inputBidnings = new List(); @@ -107,23 +121,18 @@ namespace ICSharpCode.Core.Presentation } } - /// - /// Register input binding in context - /// - /// Registering input binding means that when specified gesture is met in specified - /// context routed command is invoked - /// - /// Context class full name - /// Context class instance. If instance is provided this input binding only applies to provided UI element - /// Routed UI command invoked on gesture run - /// Gesture - public static void RegisterInputBinding(string contextName, UIElement contextInstance, string routedCommandName, InputGesture gesture) { - var inputBindingInfo = new InputBindingInfo(contextName, contextInstance, routedCommandName, gesture); + public static void RegisterInputBinding(InputBindingInfo inputBindingInfo) + { inputBidnings.Add(inputBindingInfo); } + public static void UnregisterInputBinding(InputBindingInfo inputBindingInfo) + { + inputBidnings.Remove(inputBindingInfo); + } + /// - /// Remove input bindings which satisfy provided arguments + /// Find input input bindings which satisfy provided arguments /// /// Null arguments are ignored /// @@ -131,15 +140,18 @@ namespace ICSharpCode.Core.Presentation /// Unregister binding assigned to specific context instance /// Routed UI command name /// Gesture - public static void UnregisterInputBindings(string contextName, UIElement contextInstance, string routedCommandName, InputGesture gesture) { + public static ICollection FindInputBindingInfos(string contextName, UIElement contextInstance, string routedCommandName, InputGesture gesture) { + var foundBindings = new List(); for(int i = inputBidnings.Count - 1; i >= 0; i--) { if((contextName == null || inputBidnings[i].ContextName == contextName) && (contextInstance == null || inputBidnings[i].Context == null || inputBidnings[i].Context == contextInstance) && (routedCommandName == null || inputBidnings[i].RoutedCommandName == routedCommandName) - && (gesture == null || inputBidnings[i].Gesture == gesture)) { - inputBidnings.RemoveAt(i); + && (gesture == null || inputBidnings[i].Gestures.ContainsCopy(gesture))) { + foundBindings.Add(inputBidnings[i]); } } + + return foundBindings; } /// @@ -238,35 +250,10 @@ namespace ICSharpCode.Core.Presentation } } - /// - /// Register command binding - /// - /// Registering command binding means that when provided routed command is invoked - /// in specified context event is routed to specified command (implementing ICommand class) - /// - /// Context class full name - /// Register update handler which is triggered only if input bindings registered for specific instance are updated - /// Routed UI command name - /// Command full name to which invokation event is routed - /// Add-in in which hosts the command - /// Load add-in referenced assemblies on command invocation - public static void RegisterCommandBinding(string contextName, UIElement contextInstance, string routedCommandName, string className, AddIn addIn, bool isLazy) { - var commandBindingInfo = new CommandBindingInfo(contextName, contextInstance, routedCommandName, className, addIn, isLazy); + public static void RegisterCommandBinding(CommandBindingInfo commandBindingInfo) { commandBindings.Add(commandBindingInfo); } - /// - /// Register command binding which when triggered provided delegates are invoked - /// - /// Context class full name - /// Register update handler which is triggered only if input bindings registered for specific instance are updated - /// Routed UI command name - /// Delegate which is called when binding is triggered - /// Delegate which is called to check whether executedEventHandler can be invoked - public static void RegisterCommandBinding(string contextName, UIElement contextInstance, string routedCommandName, ExecutedRoutedEventHandler executedEventHandler, CanExecuteRoutedEventHandler canExecuteEventHandler) { - var commandBindingInfo = new CommandBindingInfo(contextName, contextInstance, routedCommandName, executedEventHandler, canExecuteEventHandler); - commandBindings.Add(commandBindingInfo); - } /// /// Remove all command bindings which satisfy provided parameters @@ -390,6 +377,11 @@ namespace ICSharpCode.Core.Presentation public static void LoadAddinCommands(AddIn addIn) { foreach(var binding in commandBindings) { if(binding.AddIn != addIn) continue; + + if(binding.ClassName == null) + { + + } if(!commands.ContainsKey(binding.ClassName)){ var command = addIn.CreateObject(binding.ClassName); @@ -449,8 +441,8 @@ namespace ICSharpCode.Core.Presentation && (className == null || binding.ClassName == className)) { var managedCommandBinding = new ManagedCommandBinding(binding.RoutedCommand); - managedCommandBinding.CanExecute += binding.CanExecuteEventHandler; - managedCommandBinding.Executed += binding.ExecutedEventHandler; + managedCommandBinding.CanExecute += binding.GeneratedCanExecuteEventHandler; + managedCommandBinding.Executed += binding.GeneratedExecutedEventHandler; bindings.Add(managedCommandBinding); } @@ -475,9 +467,11 @@ namespace ICSharpCode.Core.Presentation if((contextName == null || binding.ContextName == contextName) && (contextInstance == null || binding.Context == null || binding.Context == contextInstance) && (routedCommandName == null || binding.RoutedCommandName == routedCommandName) - && (gesture == null || binding.Gesture == gesture)) { + && (gesture == null || binding.Gestures.ContainsCopy(gesture))) { - bindings.Add(new ManagedInputBinding(binding.RoutedCommand, binding.Gesture)); + foreach(InputGesture bindingGesture in binding.Gestures) { + bindings.Add(new ManagedInputBinding(binding.RoutedCommand, bindingGesture)); + } } } diff --git a/src/Main/ICSharpCode.Core.Presentation/CommandsService/CommandsService.cs b/src/Main/ICSharpCode.Core.Presentation/CommandsService/CommandsService.cs index 26821428a7..22f53451d9 100644 --- a/src/Main/ICSharpCode.Core.Presentation/CommandsService/CommandsService.cs +++ b/src/Main/ICSharpCode.Core.Presentation/CommandsService/CommandsService.cs @@ -43,17 +43,37 @@ namespace ICSharpCode.Core.Presentation // If routed with such name is not registered register routed command with text same as name if(CommandsRegistry.GetRoutedUICommand(desc.Command) == null) { - CommandsRegistry.RegisterRoutedUICommand(desc.Command, desc.Command); + var commandText = string.IsNullOrEmpty(desc.CommandText) ? desc.Command : desc.CommandText; + CommandsRegistry.RegisterRoutedUICommand(desc.Command, commandText); } - CommandsRegistry.RegisterCommandBinding(contextName, null, desc.Command, desc.Class, desc.Codon.AddIn, desc.Lazy); + var commandBindingInfo = new CommandBindingInfo(); + commandBindingInfo.ContextName = contextName; + commandBindingInfo.RoutedCommandName = desc.Command; + commandBindingInfo.ClassName = desc.Class; + commandBindingInfo.AddIn = desc.Codon.AddIn; + commandBindingInfo.IsLazy = desc.Lazy; + CommandsRegistry.RegisterCommandBinding(commandBindingInfo); // If gestures are provided register input binding in the same context if(!string.IsNullOrEmpty(desc.Gestures)) { var gestures = (InputGestureCollection)new InputGestureCollectionConverter().ConvertFromString(desc.Gestures); - foreach(InputGesture gesture in gestures) { - CommandsRegistry.RegisterInputBinding(contextName, null, desc.Command, gesture); + + var inputBindingInfo = new InputBindingInfo(); + inputBindingInfo.ContextName = contextName; + inputBindingInfo.AddIn = desc.Codon.AddIn; + inputBindingInfo.RoutedCommandName = desc.Command; + inputBindingInfo.Gestures = gestures; + + if(!string.IsNullOrEmpty(desc.CommandText)) { + inputBindingInfo.RoutedCommandText = desc.CommandText; } + + if(!string.IsNullOrEmpty(desc.Category)) { + inputBindingInfo.CategoryName = desc.Category; + } + + CommandsRegistry.RegisterInputBinding(inputBindingInfo); } } } @@ -62,10 +82,24 @@ namespace ICSharpCode.Core.Presentation { var descriptors = AddInTree.BuildItems(path, caller, false); foreach(var desc in descriptors) { + var gestures = (InputGestureCollection)new InputGestureCollectionConverter().ConvertFromString(desc.Gestures); var contextName = !string.IsNullOrEmpty(desc.Context) ? desc.Context : CommandsRegistry.DefaultContext; - var gesture = (KeyGesture)new KeyGestureConverter().ConvertFromInvariantString(desc.Gesture); - CommandsRegistry.RegisterInputBinding(contextName, null, desc.Command, gesture); + var inputBindingInfo = new InputBindingInfo(); + inputBindingInfo.ContextName = contextName; + inputBindingInfo.AddIn = desc.Codon.AddIn; + inputBindingInfo.RoutedCommandName = desc.Command; + inputBindingInfo.Gestures = gestures; + + if(!string.IsNullOrEmpty(desc.CommandText)) { + inputBindingInfo.RoutedCommandText = desc.CommandText; + } + + if(!string.IsNullOrEmpty(desc.Category)) { + inputBindingInfo.CategoryName = desc.Category; + } + + CommandsRegistry.RegisterInputBinding(inputBindingInfo); } } } diff --git a/src/Main/ICSharpCode.Core.Presentation/CommandsService/InputBindingInfo.cs b/src/Main/ICSharpCode.Core.Presentation/CommandsService/InputBindingInfo.cs index 229aaaaf1d..1f4efe3e11 100644 --- a/src/Main/ICSharpCode.Core.Presentation/CommandsService/InputBindingInfo.cs +++ b/src/Main/ICSharpCode.Core.Presentation/CommandsService/InputBindingInfo.cs @@ -11,22 +11,26 @@ namespace ICSharpCode.Core.Presentation { private UIElement contextInstance; + public InputBindingInfo() { + + } + /// /// Constructor /// /// Context full name /// Name of routed UI command which is triggered by this binding /// Gesture which triggers this binding - public InputBindingInfo(string contextName, string routedCommandName, InputGesture gesture) { + public InputBindingInfo(string contextName, string routedCommandName, InputGestureCollection gestures) { ContextName = contextName; RoutedCommandName = routedCommandName; - Gesture = gesture; + Gestures = gestures; } - public InputBindingInfo(string contextName, UIElement contextInstance, string routedCommandName, InputGesture gesture) { + public InputBindingInfo(string contextName, UIElement contextInstance, string routedCommandName, InputGestureCollection gestures) { ContextName = contextName; RoutedCommandName = routedCommandName; - Gesture = gesture; + Gestures = gestures; this.contextInstance = contextInstance; } @@ -58,6 +62,25 @@ namespace ICSharpCode.Core.Presentation } } + + /// + /// Routed command text + /// + /// Override routed command text when displaying to user + /// + /// + public string RoutedCommandText { + get; set; + } + + + /// + /// Add-in to which registered this input binding + /// + public AddIn AddIn { + get; set; + } + /// /// Routed command name /// @@ -81,10 +104,14 @@ namespace ICSharpCode.Core.Presentation } /// - /// Gesture which triggers this binding + /// Gestures which triggers this binding /// - public InputGesture Gesture { + public InputGestureCollection Gestures { get; set; } + + public string CategoryName { + get; set; + } } } diff --git a/src/Main/ICSharpCode.Core.Presentation/CommandsService/InputGestureCollectionExtensions.cs b/src/Main/ICSharpCode.Core.Presentation/CommandsService/InputGestureCollectionExtensions.cs new file mode 100644 index 0000000000..b458fc35f8 --- /dev/null +++ b/src/Main/ICSharpCode.Core.Presentation/CommandsService/InputGestureCollectionExtensions.cs @@ -0,0 +1,33 @@ +using System; +using System.Windows.Input; + +namespace ICSharpCode.Core.Presentation +{ + /// + /// Description of InputGestureCollectionExtensions. + /// + public static class InputGestureCollectionExtensions + { + public static bool ContainsCopy(this InputGestureCollection gestures, InputGesture searchedGesture) { + var searchedKeyGesture = searchedGesture as KeyGesture; + var searchedMouseGesture = searchedGesture as MouseGesture; + + foreach(var gesture in gestures) { + if(searchedKeyGesture != null) { + var keyGesture = gesture as KeyGesture; + if(keyGesture != null && keyGesture.Key == searchedKeyGesture.Key && keyGesture.Modifiers == searchedKeyGesture.Modifiers) { + return true; + } + } else if(searchedMouseGesture != null) { + var mouseGesture = gesture as MouseGesture; + + if(mouseGesture != null && mouseGesture.MouseAction == searchedMouseGesture.MouseAction && mouseGesture.Modifiers == searchedMouseGesture.Modifiers) { + return true; + } + } + } + + return false; + } + } +} diff --git a/src/Main/ICSharpCode.Core.Presentation/ICSharpCode.Core.Presentation.csproj b/src/Main/ICSharpCode.Core.Presentation/ICSharpCode.Core.Presentation.csproj index 594e5eca3d..4cc38cb758 100644 --- a/src/Main/ICSharpCode.Core.Presentation/ICSharpCode.Core.Presentation.csproj +++ b/src/Main/ICSharpCode.Core.Presentation/ICSharpCode.Core.Presentation.csproj @@ -73,6 +73,7 @@ + diff --git a/src/SharpDevelop.sln b/src/SharpDevelop.sln index 093c97bb42..b9f8f87ccf 100644 --- a/src/SharpDevelop.sln +++ b/src/SharpDevelop.sln @@ -6,167 +6,167 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "AddIns", "AddIns", "{14A277 ProjectSection(SolutionItems) = postProject EndProjectSection EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Misc", "Misc", "{CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}" +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Display Bindings", "Display Bindings", "{4EA396ED-64AD-4AD0-A67A-AB363F3E0C79}" ProjectSection(SolutionItems) = postProject EndProjectSection EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SharpRefactoring", "AddIns\Misc\SharpRefactoring\SharpRefactoring.csproj", "{3CA90546-3B4C-4663-9445-C4E9371750A7}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SourceAnalysis", "AddIns\Misc\SourceAnalysis\SourceAnalysis.csproj", "86CE7B3F-6273-4215-9E36-6184D98F854E" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WorkflowDesigner", "AddIns\DisplayBindings\WorkflowDesigner\Project\WorkflowDesigner.csproj", "{533F4684-DBA6-4518-B005-C84F22A2DD57}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SearchAndReplace", "AddIns\Misc\SearchAndReplace\Project\SearchAndReplace.csproj", "{9196DD8A-B4D4-4780-8742-C5762E547FC2}" +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "ClassDiagram", "ClassDiagram", "{DB137F0B-9B62-4232-AE92-F7BE0280B8D3}" + ProjectSection(SolutionItems) = postProject + EndProjectSection EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AddinScout", "AddIns\Misc\AddinScout\Project\AddinScout.csproj", "{4B8F0F98-8BE1-402B-AA8B-C8D548577B38}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Diagrams", "AddIns\DisplayBindings\ClassDiagram\DiagramRouter\Diagrams.csproj", "{0991423A-DBF6-4C89-B365-A1DF1EB32E42}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StartPage", "AddIns\Misc\StartPage\Project\StartPage.csproj", "{7D5C266F-D6FF-4D14-B315-0C0FC6C4EF51}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ClassDiagramAddin", "AddIns\DisplayBindings\ClassDiagram\ClassDiagramAddin\ClassDiagramAddin.csproj", "{5A1354DF-4989-4BB4-BC6B-D627C2E9FA13}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RegExpTk", "AddIns\Misc\RegExpTk\Project\RegExpTk.csproj", "{64A3E5E6-90BF-47F6-94DF-68C94B62C817}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ClassCanvas", "AddIns\DisplayBindings\ClassDiagram\ClassCanvas\ClassCanvas.csproj", "{08F772A1-F0BE-433E-8B37-F6522953DB05}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FiletypeRegisterer", "AddIns\Misc\FiletypeRegisterer\Project\FiletypeRegisterer.csproj", "{D022A6CE-7438-41E8-AC64-F2DE18EC54C6}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SettingsEditor", "AddIns\DisplayBindings\SettingsEditor\Project\SettingsEditor.csproj", "{85226AFB-CE71-4851-9A75-7EEC663A8E8A}" EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Debugger", "Debugger", "{6604365C-C702-4C10-9BA8-637F1E3D4D0D}" +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "IconEditor", "IconEditor", "{0D37CE59-B0EF-4F3C-B9EB-8557E53A448B}" ProjectSection(SolutionItems) = postProject EndProjectSection EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Debugger.Core", "AddIns\Misc\Debugger\Debugger.Core\Project\Debugger.Core.csproj", "{1D18D788-F7EE-4585-A23B-34DC8EC63CB8}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Debugger.AddIn", "AddIns\Misc\Debugger\Debugger.AddIn\Project\Debugger.AddIn.csproj", "{EC06F96A-AEEC-49D6-B03D-AB87C6EB674C}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HtmlHelp2", "AddIns\Misc\HtmlHelp2\Project\HtmlHelp2.csproj", "{918487B7-2153-4618-BBB3-344DBDDF2A2A}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AddInManager", "AddIns\Misc\AddInManager\Project\AddInManager.csproj", "{F93E52FD-DA66-4CE5-A0CB-BCD902811122}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "IconEditorAddIn", "AddIns\DisplayBindings\IconEditor\IconEditorAddIn\IconEditorAddIn.csproj", "{DFB936AD-90EE-4B4F-941E-4F4A636F0D92}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PInvokeAddIn", "AddIns\Misc\PInvokeAddIn\Project\PInvokeAddIn.csproj", "{5EEB99CF-EA2B-4733-80A6-CE9192D68170}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "IconEditor", "AddIns\DisplayBindings\IconEditor\IconEditor\IconEditor.csproj", "{DC1CCE11-CB91-40FA-9C47-4D9EB5D67BFD}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CodeCoverage", "AddIns\Misc\CodeCoverage\Project\CodeCoverage.csproj", "{08ce9972-283b-44f4-82fa-966f7dfa6b7a}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "XmlEditor", "AddIns\DisplayBindings\XmlEditor\Project\XmlEditor.csproj", "{6B717BD1-CD5E-498C-A42E-9E6A4584DC48}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UnitTesting", "AddIns\Misc\UnitTesting\UnitTesting.csproj", "{1F261725-6318-4434-A1B1-6C70CE4CD324}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FormsDesigner", "AddIns\DisplayBindings\FormsDesigner\Project\FormsDesigner.csproj", "{7D7E92DF-ACEB-4B69-92C8-8AC7A703CD57}" EndProject -Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "HtmlHelp2JScriptGlobals", "AddIns\Misc\HtmlHelp2\JScriptGlobals\HtmlHelp2JScriptGlobals.vbproj", "{E54A5AD2-418D-4A85-BA5E-CD803DE38715}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ResourceEditor", "AddIns\DisplayBindings\ResourceEditor\Project\ResourceEditor.csproj", "{CBC6C247-747B-4908-B09A-4D2E0F640B6B}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SubversionAddIn", "AddIns\Misc\SubversionAddIn\Project\SubversionAddIn.csproj", "{17F4D7E0-6933-4C2E-8714-FD7E98D625D5}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HexEditor", "AddIns\DisplayBindings\HexEditor\Project\HexEditor.csproj", "{E618A9CD-A39F-4925-A538-E8A3FEF24E54}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CodeAnalysis", "AddIns\Misc\CodeAnalysis\CodeAnalysis.csproj", "{3EAA45A9-735C-4AC7-A799-947B93EA449D}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AvalonEdit.AddIn", "AddIns\DisplayBindings\AvalonEdit.AddIn\AvalonEdit.AddIn.csproj", "{0162E499-42D0-409B-AA25-EED21F75336B}" EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "ComponentInspector", "ComponentInspector", "{BDDDCD01-D2FE-4EAD-9425-4B6B91922C7C}" +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Backends", "Backends", "{FEB825FA-4AD8-425D-8E4A-B5A18EE1B81C}" ProjectSection(SolutionItems) = postProject EndProjectSection EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ComponentInspector", "AddIns\Misc\ComponentInspector\ComponentInspector\ComponentInspector.csproj", "{000E4F64-5D0D-4EB1-B0BF-1A62ADBC6EAD}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WixBinding", "AddIns\BackendBindings\WixBinding\Project\WixBinding.csproj", "{e1b288a2-08ee-4318-8bbb-8ab72c69e33e}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ComponentInspector.AddIn", "AddIns\Misc\ComponentInspector\ComponentInspector.AddIn\ComponentInspector.AddIn.csproj", "{869951D5-A0D6-4DC6-9F1D-E6B9A12AC446}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NRefactoryToBooConverter", "AddIns\BackendBindings\Boo\NRefactoryToBooConverter\Project\NRefactoryToBooConverter.csproj", "{DBCF20A1-BA13-4582-BFA9-74DE4D987B73}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ComponentInspector.Core", "AddIns\Misc\ComponentInspector\ComponentInspector.Core\ComponentInspector.Core.csproj", "{E6F4983F-DE41-4AEC-88E7-1FA9AFB4E6FF}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BooBinding", "AddIns\BackendBindings\Boo\BooBinding\Project\BooBinding.csproj", "{4AC2D5F1-F671-480C-A075-6BF62B3721B2}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ResourceToolkit", "AddIns\Misc\ResourceToolkit\Project\ResourceToolkit.csproj", "{461606BD-E824-4D0A-8CBA-01810B1F5E02}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ILAsmBinding", "AddIns\BackendBindings\ILAsmBinding\Project\ILAsmBinding.csproj", "{6e59af58-f635-459a-9a35-c9ac41c00339}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ReflectorAddIn", "AddIns\Misc\ReflectorAddIn\ReflectorAddIn\Project\ReflectorAddIn.csproj", "{8AA421C8-D7AF-4957-9F43-5135328ACB24}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "VBNetBinding", "AddIns\BackendBindings\VBNetBinding\Project\VBNetBinding.csproj", "{BF38FB72-B380-4196-AF8C-95749D726C61}" EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Backends", "Backends", "{FEB825FA-4AD8-425D-8E4A-B5A18EE1B81C}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CSharpBinding", "AddIns\BackendBindings\CSharpBinding\Project\CSharpBinding.csproj", "{1F1AC7CD-D154-45BB-8EAF-804CA8055F5A}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Python", "Python", "{8CF9DB5A-A2F6-4A88-BABA-100912EAF6E8}" ProjectSection(SolutionItems) = postProject EndProjectSection EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "XamlBinding", "AddIns\BackendBindings\XamlBinding\XamlBinding\XamlBinding.csproj", "{7C96B65D-28A5-4F28-A35B-8D83CE831EE8}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Python.Build.Tasks", "AddIns\BackendBindings\Python\Python.Build.Tasks\Project\Python.Build.Tasks.csproj", "{D332F2D1-2CF1-43B7-903C-844BD5211A7E}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PythonBinding", "AddIns\BackendBindings\Python\PythonBinding\Project\PythonBinding.csproj", "{8D732610-8FC6-43BA-94C9-7126FD7FE361}" EndProject Project("{982E8BC1-ACD7-4dbf-96AB-B2CE67D6A008}") = "FSharpBinding", "AddIns\BackendBindings\FSharp\FSharpBinding\Project\FSharpBinding.fsproj", "{99BAE3A2-C40D-40D2-A7B4-EBB4798F36E4}" EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Python", "Python", "{8CF9DB5A-A2F6-4A88-BABA-100912EAF6E8}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "XamlBinding", "AddIns\BackendBindings\XamlBinding\XamlBinding\XamlBinding.csproj", "{7C96B65D-28A5-4F28-A35B-8D83CE831EE8}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Misc", "Misc", "{CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}" ProjectSection(SolutionItems) = postProject EndProjectSection EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PythonBinding", "AddIns\BackendBindings\Python\PythonBinding\Project\PythonBinding.csproj", "{8D732610-8FC6-43BA-94C9-7126FD7FE361}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ReflectorAddIn", "AddIns\Misc\ReflectorAddIn\ReflectorAddIn\Project\ReflectorAddIn.csproj", "{8AA421C8-D7AF-4957-9F43-5135328ACB24}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Python.Build.Tasks", "AddIns\BackendBindings\Python\Python.Build.Tasks\Project\Python.Build.Tasks.csproj", "{D332F2D1-2CF1-43B7-903C-844BD5211A7E}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ResourceToolkit", "AddIns\Misc\ResourceToolkit\Project\ResourceToolkit.csproj", "{461606BD-E824-4D0A-8CBA-01810B1F5E02}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CSharpBinding", "AddIns\BackendBindings\CSharpBinding\Project\CSharpBinding.csproj", "{1F1AC7CD-D154-45BB-8EAF-804CA8055F5A}" +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "ComponentInspector", "ComponentInspector", "{BDDDCD01-D2FE-4EAD-9425-4B6B91922C7C}" + ProjectSection(SolutionItems) = postProject + EndProjectSection EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "VBNetBinding", "AddIns\BackendBindings\VBNetBinding\Project\VBNetBinding.csproj", "{BF38FB72-B380-4196-AF8C-95749D726C61}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ComponentInspector.Core", "AddIns\Misc\ComponentInspector\ComponentInspector.Core\ComponentInspector.Core.csproj", "{E6F4983F-DE41-4AEC-88E7-1FA9AFB4E6FF}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ILAsmBinding", "AddIns\BackendBindings\ILAsmBinding\Project\ILAsmBinding.csproj", "{6e59af58-f635-459a-9a35-c9ac41c00339}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ComponentInspector.AddIn", "AddIns\Misc\ComponentInspector\ComponentInspector.AddIn\ComponentInspector.AddIn.csproj", "{869951D5-A0D6-4DC6-9F1D-E6B9A12AC446}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BooBinding", "AddIns\BackendBindings\Boo\BooBinding\Project\BooBinding.csproj", "{4AC2D5F1-F671-480C-A075-6BF62B3721B2}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ComponentInspector", "AddIns\Misc\ComponentInspector\ComponentInspector\ComponentInspector.csproj", "{000E4F64-5D0D-4EB1-B0BF-1A62ADBC6EAD}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NRefactoryToBooConverter", "AddIns\BackendBindings\Boo\NRefactoryToBooConverter\Project\NRefactoryToBooConverter.csproj", "{DBCF20A1-BA13-4582-BFA9-74DE4D987B73}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CodeAnalysis", "AddIns\Misc\CodeAnalysis\CodeAnalysis.csproj", "{3EAA45A9-735C-4AC7-A799-947B93EA449D}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WixBinding", "AddIns\BackendBindings\WixBinding\Project\WixBinding.csproj", "{e1b288a2-08ee-4318-8bbb-8ab72c69e33e}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SubversionAddIn", "AddIns\Misc\SubversionAddIn\Project\SubversionAddIn.csproj", "{17F4D7E0-6933-4C2E-8714-FD7E98D625D5}" EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Display Bindings", "Display Bindings", "{4EA396ED-64AD-4AD0-A67A-AB363F3E0C79}" - ProjectSection(SolutionItems) = postProject - EndProjectSection +Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "HtmlHelp2JScriptGlobals", "AddIns\Misc\HtmlHelp2\JScriptGlobals\HtmlHelp2JScriptGlobals.vbproj", "{E54A5AD2-418D-4A85-BA5E-CD803DE38715}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AvalonEdit.AddIn", "AddIns\DisplayBindings\AvalonEdit.AddIn\AvalonEdit.AddIn.csproj", "{0162E499-42D0-409B-AA25-EED21F75336B}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UnitTesting", "AddIns\Misc\UnitTesting\UnitTesting.csproj", "{1F261725-6318-4434-A1B1-6C70CE4CD324}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HexEditor", "AddIns\DisplayBindings\HexEditor\Project\HexEditor.csproj", "{E618A9CD-A39F-4925-A538-E8A3FEF24E54}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CodeCoverage", "AddIns\Misc\CodeCoverage\Project\CodeCoverage.csproj", "{08ce9972-283b-44f4-82fa-966f7dfa6b7a}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ResourceEditor", "AddIns\DisplayBindings\ResourceEditor\Project\ResourceEditor.csproj", "{CBC6C247-747B-4908-B09A-4D2E0F640B6B}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PInvokeAddIn", "AddIns\Misc\PInvokeAddIn\Project\PInvokeAddIn.csproj", "{5EEB99CF-EA2B-4733-80A6-CE9192D68170}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FormsDesigner", "AddIns\DisplayBindings\FormsDesigner\Project\FormsDesigner.csproj", "{7D7E92DF-ACEB-4B69-92C8-8AC7A703CD57}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AddInManager", "AddIns\Misc\AddInManager\Project\AddInManager.csproj", "{F93E52FD-DA66-4CE5-A0CB-BCD902811122}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "XmlEditor", "AddIns\DisplayBindings\XmlEditor\Project\XmlEditor.csproj", "{6B717BD1-CD5E-498C-A42E-9E6A4584DC48}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HtmlHelp2", "AddIns\Misc\HtmlHelp2\Project\HtmlHelp2.csproj", "{918487B7-2153-4618-BBB3-344DBDDF2A2A}" EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "IconEditor", "IconEditor", "{0D37CE59-B0EF-4F3C-B9EB-8557E53A448B}" +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Debugger", "Debugger", "{6604365C-C702-4C10-9BA8-637F1E3D4D0D}" ProjectSection(SolutionItems) = postProject EndProjectSection EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "IconEditor", "AddIns\DisplayBindings\IconEditor\IconEditor\IconEditor.csproj", "{DC1CCE11-CB91-40FA-9C47-4D9EB5D67BFD}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Debugger.AddIn", "AddIns\Misc\Debugger\Debugger.AddIn\Project\Debugger.AddIn.csproj", "{EC06F96A-AEEC-49D6-B03D-AB87C6EB674C}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "IconEditorAddIn", "AddIns\DisplayBindings\IconEditor\IconEditorAddIn\IconEditorAddIn.csproj", "{DFB936AD-90EE-4B4F-941E-4F4A636F0D92}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Debugger.Core", "AddIns\Misc\Debugger\Debugger.Core\Project\Debugger.Core.csproj", "{1D18D788-F7EE-4585-A23B-34DC8EC63CB8}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SettingsEditor", "AddIns\DisplayBindings\SettingsEditor\Project\SettingsEditor.csproj", "{85226AFB-CE71-4851-9A75-7EEC663A8E8A}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FiletypeRegisterer", "AddIns\Misc\FiletypeRegisterer\Project\FiletypeRegisterer.csproj", "{D022A6CE-7438-41E8-AC64-F2DE18EC54C6}" EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "ClassDiagram", "ClassDiagram", "{DB137F0B-9B62-4232-AE92-F7BE0280B8D3}" - ProjectSection(SolutionItems) = postProject - EndProjectSection +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RegExpTk", "AddIns\Misc\RegExpTk\Project\RegExpTk.csproj", "{64A3E5E6-90BF-47F6-94DF-68C94B62C817}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ClassCanvas", "AddIns\DisplayBindings\ClassDiagram\ClassCanvas\ClassCanvas.csproj", "{08F772A1-F0BE-433E-8B37-F6522953DB05}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StartPage", "AddIns\Misc\StartPage\Project\StartPage.csproj", "{7D5C266F-D6FF-4D14-B315-0C0FC6C4EF51}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ClassDiagramAddin", "AddIns\DisplayBindings\ClassDiagram\ClassDiagramAddin\ClassDiagramAddin.csproj", "{5A1354DF-4989-4BB4-BC6B-D627C2E9FA13}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AddinScout", "AddIns\Misc\AddinScout\Project\AddinScout.csproj", "{4B8F0F98-8BE1-402B-AA8B-C8D548577B38}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Diagrams", "AddIns\DisplayBindings\ClassDiagram\DiagramRouter\Diagrams.csproj", "{0991423A-DBF6-4C89-B365-A1DF1EB32E42}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SearchAndReplace", "AddIns\Misc\SearchAndReplace\Project\SearchAndReplace.csproj", "{9196DD8A-B4D4-4780-8742-C5762E547FC2}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WorkflowDesigner", "AddIns\DisplayBindings\WorkflowDesigner\Project\WorkflowDesigner.csproj", "{533F4684-DBA6-4518-B005-C84F22A2DD57}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SourceAnalysis", "AddIns\Misc\SourceAnalysis\SourceAnalysis.csproj", "86CE7B3F-6273-4215-9E36-6184D98F854E" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SharpRefactoring", "AddIns\Misc\SharpRefactoring\SharpRefactoring.csproj", "{3CA90546-3B4C-4663-9445-C4E9371750A7}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Libraries", "Libraries", "{9421EDF4-9769-4BE9-B5A6-C87DE221D73C}" ProjectSection(SolutionItems) = postProject EndProjectSection EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AvalonDock", "Libraries\AvalonDock\AvalonDock.csproj", "{2FF700C2-A38A-48BD-A637-8CAFD4FE6237}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.TreeView", "Libraries\SharpTreeView\ICSharpCode.TreeView\ICSharpCode.TreeView.csproj", "{DDE2A481-8271-4EAC-A330-8FA6A38D13D1}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.AvalonEdit", "Libraries\AvalonEdit\ICSharpCode.AvalonEdit\ICSharpCode.AvalonEdit.csproj", "{6C55B776-26D4-4DB3-A6AB-87E783B2F3D1}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Aga.Controls", "Libraries\TreeViewAdv\Aga.Controls\Aga.Controls.csproj", "{E73BB233-D88B-44A7-A98F-D71EE158381D}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NRefactory", "Libraries\NRefactory\Project\NRefactory.csproj", "{3A9AE6AA-BC07-4A2F-972C-581E3AE2F195}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.Build.Tasks", "Libraries\ICSharpCode.Build.Tasks\Project\ICSharpCode.Build.Tasks.csproj", "{4139CCF6-FB49-4A9D-B2CF-331E9EA3198D}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.TextEditor", "Libraries\ICSharpCode.TextEditor\Project\ICSharpCode.TextEditor.csproj", "{2D18BE89-D210-49EB-A9DD-2246FBB3DF6D}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.Build.Tasks", "Libraries\ICSharpCode.Build.Tasks\Project\ICSharpCode.Build.Tasks.csproj", "{4139CCF6-FB49-4A9D-B2CF-331E9EA3198D}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NRefactory", "Libraries\NRefactory\Project\NRefactory.csproj", "{3A9AE6AA-BC07-4A2F-972C-581E3AE2F195}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Aga.Controls", "Libraries\TreeViewAdv\Aga.Controls\Aga.Controls.csproj", "{E73BB233-D88B-44A7-A98F-D71EE158381D}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.AvalonEdit", "Libraries\AvalonEdit\ICSharpCode.AvalonEdit\ICSharpCode.AvalonEdit.csproj", "{6C55B776-26D4-4DB3-A6AB-87E783B2F3D1}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.TreeView", "Libraries\SharpTreeView\ICSharpCode.TreeView\ICSharpCode.TreeView.csproj", "{DDE2A481-8271-4EAC-A330-8FA6A38D13D1}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AvalonDock", "Libraries\AvalonDock\AvalonDock.csproj", "{2FF700C2-A38A-48BD-A637-8CAFD4FE6237}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Main", "Main", "{5A3EBEBA-0560-41C1-966B-23F7D03A5486}" ProjectSection(SolutionItems) = postProject EndProjectSection EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.Core.Presentation", "Main\ICSharpCode.Core.Presentation\ICSharpCode.Core.Presentation.csproj", "{7E4A7172-7FF5-48D0-B719-7CD959DD1AC9}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.SharpDevelop.BuildWorker", "Main\ICSharpCode.SharpDevelop.BuildWorker\ICSharpCode.SharpDevelop.BuildWorker.csproj", "{C3CBC8E3-81D8-4C5B-9941-DCCD12D50B1F}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.Core.WinForms", "Main\ICSharpCode.Core.WinForms\ICSharpCode.Core.WinForms.csproj", "{857CA1A3-FC88-4BE0-AB6A-D1EE772AB288}" EndProject -Project("{00000000-0000-0000-0000-000000000000}") = "Tools", "Tools\Tools.build", "B13EFF7F-7EA4-4B68-A375-D112105E9182" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.SharpDevelop.Dom", "Main\ICSharpCode.SharpDevelop.Dom\Project\ICSharpCode.SharpDevelop.Dom.csproj", "{924EE450-603D-49C1-A8E5-4AFAA31CE6F3}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StartUp", "Main\StartUp\Project\StartUp.csproj", "{1152B71B-3C05-4598-B20D-823B5D40559E}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.SharpDevelop.Widgets", "Main\ICSharpCode.SharpDevelop.Widgets\Project\ICSharpCode.SharpDevelop.Widgets.csproj", "{8035765F-D51F-4A0C-A746-2FD100E19419}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.Core", "Main\Core\Project\ICSharpCode.Core.csproj", "{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.SharpDevelop.Sda", "Main\ICSharpCode.SharpDevelop.Sda\ICSharpCode.SharpDevelop.Sda.csproj", "{80318B5F-A25D-45AB-8A95-EF31D2370A4C}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.SharpDevelop", "Main\Base\Project\ICSharpCode.SharpDevelop.csproj", "{2748AD25-9C63-4E12-877B-4DCE96FBED54}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.SharpDevelop.Sda", "Main\ICSharpCode.SharpDevelop.Sda\ICSharpCode.SharpDevelop.Sda.csproj", "{80318B5F-A25D-45AB-8A95-EF31D2370A4C}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.Core", "Main\Core\Project\ICSharpCode.Core.csproj", "{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.SharpDevelop.Widgets", "Main\ICSharpCode.SharpDevelop.Widgets\Project\ICSharpCode.SharpDevelop.Widgets.csproj", "{8035765F-D51F-4A0C-A746-2FD100E19419}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StartUp", "Main\StartUp\Project\StartUp.csproj", "{1152B71B-3C05-4598-B20D-823B5D40559E}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.SharpDevelop.Dom", "Main\ICSharpCode.SharpDevelop.Dom\Project\ICSharpCode.SharpDevelop.Dom.csproj", "{924EE450-603D-49C1-A8E5-4AFAA31CE6F3}" +Project("{00000000-0000-0000-0000-000000000000}") = "Tools", "Tools\Tools.build", "B13EFF7F-7EA4-4B68-A375-D112105E9182" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.Core.WinForms", "Main\ICSharpCode.Core.WinForms\ICSharpCode.Core.WinForms.csproj", "{857CA1A3-FC88-4BE0-AB6A-D1EE772AB288}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.SharpDevelop.BuildWorker", "Main\ICSharpCode.SharpDevelop.BuildWorker\ICSharpCode.SharpDevelop.BuildWorker.csproj", "{C3CBC8E3-81D8-4C5B-9941-DCCD12D50B1F}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.Core.Presentation", "Main\ICSharpCode.Core.Presentation\ICSharpCode.Core.Presentation.csproj", "{7E4A7172-7FF5-48D0-B719-7CD959DD1AC9}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -420,74 +420,74 @@ Global {2FF700C2-A38A-48BD-A637-8CAFD4FE6237}.Release|Any CPU.ActiveCfg = Release|Any CPU EndGlobalSection GlobalSection(NestedProjects) = preSolution - {4EA396ED-64AD-4AD0-A67A-AB363F3E0C79} = {14A277EE-7DF1-4529-B639-7D1EF334C1C5} - {FEB825FA-4AD8-425D-8E4A-B5A18EE1B81C} = {14A277EE-7DF1-4529-B639-7D1EF334C1C5} {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2} = {14A277EE-7DF1-4529-B639-7D1EF334C1C5} - {8AA421C8-D7AF-4957-9F43-5135328ACB24} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2} - {461606BD-E824-4D0A-8CBA-01810B1F5E02} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2} - {BDDDCD01-D2FE-4EAD-9425-4B6B91922C7C} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2} - {3EAA45A9-735C-4AC7-A799-947B93EA449D} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2} - {17F4D7E0-6933-4C2E-8714-FD7E98D625D5} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2} - {E54A5AD2-418D-4A85-BA5E-CD803DE38715} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2} - {1F261725-6318-4434-A1B1-6C70CE4CD324} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2} - {08ce9972-283b-44f4-82fa-966f7dfa6b7a} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2} - {5EEB99CF-EA2B-4733-80A6-CE9192D68170} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2} - {F93E52FD-DA66-4CE5-A0CB-BCD902811122} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2} - {918487B7-2153-4618-BBB3-344DBDDF2A2A} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2} - {6604365C-C702-4C10-9BA8-637F1E3D4D0D} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2} - {D022A6CE-7438-41E8-AC64-F2DE18EC54C6} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2} - {64A3E5E6-90BF-47F6-94DF-68C94B62C817} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2} - {7D5C266F-D6FF-4D14-B315-0C0FC6C4EF51} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2} - {4B8F0F98-8BE1-402B-AA8B-C8D548577B38} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2} - {9196DD8A-B4D4-4780-8742-C5762E547FC2} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2} - 86CE7B3F-6273-4215-9E36-6184D98F854E = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2} - {3CA90546-3B4C-4663-9445-C4E9371750A7} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2} - {EC06F96A-AEEC-49D6-B03D-AB87C6EB674C} = {6604365C-C702-4C10-9BA8-637F1E3D4D0D} - {1D18D788-F7EE-4585-A23B-34DC8EC63CB8} = {6604365C-C702-4C10-9BA8-637F1E3D4D0D} - {E6F4983F-DE41-4AEC-88E7-1FA9AFB4E6FF} = {BDDDCD01-D2FE-4EAD-9425-4B6B91922C7C} - {869951D5-A0D6-4DC6-9F1D-E6B9A12AC446} = {BDDDCD01-D2FE-4EAD-9425-4B6B91922C7C} - {000E4F64-5D0D-4EB1-B0BF-1A62ADBC6EAD} = {BDDDCD01-D2FE-4EAD-9425-4B6B91922C7C} - {e1b288a2-08ee-4318-8bbb-8ab72c69e33e} = {FEB825FA-4AD8-425D-8E4A-B5A18EE1B81C} - {DBCF20A1-BA13-4582-BFA9-74DE4D987B73} = {FEB825FA-4AD8-425D-8E4A-B5A18EE1B81C} - {4AC2D5F1-F671-480C-A075-6BF62B3721B2} = {FEB825FA-4AD8-425D-8E4A-B5A18EE1B81C} - {6e59af58-f635-459a-9a35-c9ac41c00339} = {FEB825FA-4AD8-425D-8E4A-B5A18EE1B81C} - {BF38FB72-B380-4196-AF8C-95749D726C61} = {FEB825FA-4AD8-425D-8E4A-B5A18EE1B81C} - {1F1AC7CD-D154-45BB-8EAF-804CA8055F5A} = {FEB825FA-4AD8-425D-8E4A-B5A18EE1B81C} - {8CF9DB5A-A2F6-4A88-BABA-100912EAF6E8} = {FEB825FA-4AD8-425D-8E4A-B5A18EE1B81C} - {99BAE3A2-C40D-40D2-A7B4-EBB4798F36E4} = {FEB825FA-4AD8-425D-8E4A-B5A18EE1B81C} - {7C96B65D-28A5-4F28-A35B-8D83CE831EE8} = {FEB825FA-4AD8-425D-8E4A-B5A18EE1B81C} - {D332F2D1-2CF1-43B7-903C-844BD5211A7E} = {8CF9DB5A-A2F6-4A88-BABA-100912EAF6E8} - {8D732610-8FC6-43BA-94C9-7126FD7FE361} = {8CF9DB5A-A2F6-4A88-BABA-100912EAF6E8} - {533F4684-DBA6-4518-B005-C84F22A2DD57} = {4EA396ED-64AD-4AD0-A67A-AB363F3E0C79} - {DB137F0B-9B62-4232-AE92-F7BE0280B8D3} = {4EA396ED-64AD-4AD0-A67A-AB363F3E0C79} - {85226AFB-CE71-4851-9A75-7EEC663A8E8A} = {4EA396ED-64AD-4AD0-A67A-AB363F3E0C79} - {0D37CE59-B0EF-4F3C-B9EB-8557E53A448B} = {4EA396ED-64AD-4AD0-A67A-AB363F3E0C79} - {6B717BD1-CD5E-498C-A42E-9E6A4584DC48} = {4EA396ED-64AD-4AD0-A67A-AB363F3E0C79} - {7D7E92DF-ACEB-4B69-92C8-8AC7A703CD57} = {4EA396ED-64AD-4AD0-A67A-AB363F3E0C79} - {CBC6C247-747B-4908-B09A-4D2E0F640B6B} = {4EA396ED-64AD-4AD0-A67A-AB363F3E0C79} - {E618A9CD-A39F-4925-A538-E8A3FEF24E54} = {4EA396ED-64AD-4AD0-A67A-AB363F3E0C79} + {FEB825FA-4AD8-425D-8E4A-B5A18EE1B81C} = {14A277EE-7DF1-4529-B639-7D1EF334C1C5} + {4EA396ED-64AD-4AD0-A67A-AB363F3E0C79} = {14A277EE-7DF1-4529-B639-7D1EF334C1C5} {0162E499-42D0-409B-AA25-EED21F75336B} = {4EA396ED-64AD-4AD0-A67A-AB363F3E0C79} - {DFB936AD-90EE-4B4F-941E-4F4A636F0D92} = {0D37CE59-B0EF-4F3C-B9EB-8557E53A448B} - {DC1CCE11-CB91-40FA-9C47-4D9EB5D67BFD} = {0D37CE59-B0EF-4F3C-B9EB-8557E53A448B} - {0991423A-DBF6-4C89-B365-A1DF1EB32E42} = {DB137F0B-9B62-4232-AE92-F7BE0280B8D3} - {5A1354DF-4989-4BB4-BC6B-D627C2E9FA13} = {DB137F0B-9B62-4232-AE92-F7BE0280B8D3} + {E618A9CD-A39F-4925-A538-E8A3FEF24E54} = {4EA396ED-64AD-4AD0-A67A-AB363F3E0C79} + {CBC6C247-747B-4908-B09A-4D2E0F640B6B} = {4EA396ED-64AD-4AD0-A67A-AB363F3E0C79} + {7D7E92DF-ACEB-4B69-92C8-8AC7A703CD57} = {4EA396ED-64AD-4AD0-A67A-AB363F3E0C79} + {6B717BD1-CD5E-498C-A42E-9E6A4584DC48} = {4EA396ED-64AD-4AD0-A67A-AB363F3E0C79} + {0D37CE59-B0EF-4F3C-B9EB-8557E53A448B} = {4EA396ED-64AD-4AD0-A67A-AB363F3E0C79} + {85226AFB-CE71-4851-9A75-7EEC663A8E8A} = {4EA396ED-64AD-4AD0-A67A-AB363F3E0C79} + {DB137F0B-9B62-4232-AE92-F7BE0280B8D3} = {4EA396ED-64AD-4AD0-A67A-AB363F3E0C79} + {533F4684-DBA6-4518-B005-C84F22A2DD57} = {4EA396ED-64AD-4AD0-A67A-AB363F3E0C79} {08F772A1-F0BE-433E-8B37-F6522953DB05} = {DB137F0B-9B62-4232-AE92-F7BE0280B8D3} - {DDE2A481-8271-4EAC-A330-8FA6A38D13D1} = {9421EDF4-9769-4BE9-B5A6-C87DE221D73C} - {E73BB233-D88B-44A7-A98F-D71EE158381D} = {9421EDF4-9769-4BE9-B5A6-C87DE221D73C} - {4139CCF6-FB49-4A9D-B2CF-331E9EA3198D} = {9421EDF4-9769-4BE9-B5A6-C87DE221D73C} - {2D18BE89-D210-49EB-A9DD-2246FBB3DF6D} = {9421EDF4-9769-4BE9-B5A6-C87DE221D73C} - {3A9AE6AA-BC07-4A2F-972C-581E3AE2F195} = {9421EDF4-9769-4BE9-B5A6-C87DE221D73C} - {6C55B776-26D4-4DB3-A6AB-87E783B2F3D1} = {9421EDF4-9769-4BE9-B5A6-C87DE221D73C} + {5A1354DF-4989-4BB4-BC6B-D627C2E9FA13} = {DB137F0B-9B62-4232-AE92-F7BE0280B8D3} + {0991423A-DBF6-4C89-B365-A1DF1EB32E42} = {DB137F0B-9B62-4232-AE92-F7BE0280B8D3} + {DC1CCE11-CB91-40FA-9C47-4D9EB5D67BFD} = {0D37CE59-B0EF-4F3C-B9EB-8557E53A448B} + {DFB936AD-90EE-4B4F-941E-4F4A636F0D92} = {0D37CE59-B0EF-4F3C-B9EB-8557E53A448B} + {7C96B65D-28A5-4F28-A35B-8D83CE831EE8} = {FEB825FA-4AD8-425D-8E4A-B5A18EE1B81C} + {99BAE3A2-C40D-40D2-A7B4-EBB4798F36E4} = {FEB825FA-4AD8-425D-8E4A-B5A18EE1B81C} + {8CF9DB5A-A2F6-4A88-BABA-100912EAF6E8} = {FEB825FA-4AD8-425D-8E4A-B5A18EE1B81C} + {1F1AC7CD-D154-45BB-8EAF-804CA8055F5A} = {FEB825FA-4AD8-425D-8E4A-B5A18EE1B81C} + {BF38FB72-B380-4196-AF8C-95749D726C61} = {FEB825FA-4AD8-425D-8E4A-B5A18EE1B81C} + {6e59af58-f635-459a-9a35-c9ac41c00339} = {FEB825FA-4AD8-425D-8E4A-B5A18EE1B81C} + {4AC2D5F1-F671-480C-A075-6BF62B3721B2} = {FEB825FA-4AD8-425D-8E4A-B5A18EE1B81C} + {DBCF20A1-BA13-4582-BFA9-74DE4D987B73} = {FEB825FA-4AD8-425D-8E4A-B5A18EE1B81C} + {e1b288a2-08ee-4318-8bbb-8ab72c69e33e} = {FEB825FA-4AD8-425D-8E4A-B5A18EE1B81C} + {8D732610-8FC6-43BA-94C9-7126FD7FE361} = {8CF9DB5A-A2F6-4A88-BABA-100912EAF6E8} + {D332F2D1-2CF1-43B7-903C-844BD5211A7E} = {8CF9DB5A-A2F6-4A88-BABA-100912EAF6E8} + {3CA90546-3B4C-4663-9445-C4E9371750A7} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2} + 86CE7B3F-6273-4215-9E36-6184D98F854E = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2} + {9196DD8A-B4D4-4780-8742-C5762E547FC2} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2} + {4B8F0F98-8BE1-402B-AA8B-C8D548577B38} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2} + {7D5C266F-D6FF-4D14-B315-0C0FC6C4EF51} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2} + {64A3E5E6-90BF-47F6-94DF-68C94B62C817} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2} + {D022A6CE-7438-41E8-AC64-F2DE18EC54C6} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2} + {6604365C-C702-4C10-9BA8-637F1E3D4D0D} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2} + {918487B7-2153-4618-BBB3-344DBDDF2A2A} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2} + {F93E52FD-DA66-4CE5-A0CB-BCD902811122} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2} + {5EEB99CF-EA2B-4733-80A6-CE9192D68170} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2} + {08ce9972-283b-44f4-82fa-966f7dfa6b7a} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2} + {1F261725-6318-4434-A1B1-6C70CE4CD324} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2} + {E54A5AD2-418D-4A85-BA5E-CD803DE38715} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2} + {17F4D7E0-6933-4C2E-8714-FD7E98D625D5} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2} + {3EAA45A9-735C-4AC7-A799-947B93EA449D} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2} + {BDDDCD01-D2FE-4EAD-9425-4B6B91922C7C} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2} + {461606BD-E824-4D0A-8CBA-01810B1F5E02} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2} + {8AA421C8-D7AF-4957-9F43-5135328ACB24} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2} + {000E4F64-5D0D-4EB1-B0BF-1A62ADBC6EAD} = {BDDDCD01-D2FE-4EAD-9425-4B6B91922C7C} + {869951D5-A0D6-4DC6-9F1D-E6B9A12AC446} = {BDDDCD01-D2FE-4EAD-9425-4B6B91922C7C} + {E6F4983F-DE41-4AEC-88E7-1FA9AFB4E6FF} = {BDDDCD01-D2FE-4EAD-9425-4B6B91922C7C} + {1D18D788-F7EE-4585-A23B-34DC8EC63CB8} = {6604365C-C702-4C10-9BA8-637F1E3D4D0D} + {EC06F96A-AEEC-49D6-B03D-AB87C6EB674C} = {6604365C-C702-4C10-9BA8-637F1E3D4D0D} {2FF700C2-A38A-48BD-A637-8CAFD4FE6237} = {9421EDF4-9769-4BE9-B5A6-C87DE221D73C} - {857CA1A3-FC88-4BE0-AB6A-D1EE772AB288} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486} - {924EE450-603D-49C1-A8E5-4AFAA31CE6F3} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486} - {8035765F-D51F-4A0C-A746-2FD100E19419} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486} - {80318B5F-A25D-45AB-8A95-EF31D2370A4C} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486} - {2748AD25-9C63-4E12-877B-4DCE96FBED54} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486} - {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486} - {1152B71B-3C05-4598-B20D-823B5D40559E} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486} - B13EFF7F-7EA4-4B68-A375-D112105E9182 = {5A3EBEBA-0560-41C1-966B-23F7D03A5486} - {C3CBC8E3-81D8-4C5B-9941-DCCD12D50B1F} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486} + {6C55B776-26D4-4DB3-A6AB-87E783B2F3D1} = {9421EDF4-9769-4BE9-B5A6-C87DE221D73C} + {3A9AE6AA-BC07-4A2F-972C-581E3AE2F195} = {9421EDF4-9769-4BE9-B5A6-C87DE221D73C} + {2D18BE89-D210-49EB-A9DD-2246FBB3DF6D} = {9421EDF4-9769-4BE9-B5A6-C87DE221D73C} + {4139CCF6-FB49-4A9D-B2CF-331E9EA3198D} = {9421EDF4-9769-4BE9-B5A6-C87DE221D73C} + {E73BB233-D88B-44A7-A98F-D71EE158381D} = {9421EDF4-9769-4BE9-B5A6-C87DE221D73C} + {DDE2A481-8271-4EAC-A330-8FA6A38D13D1} = {9421EDF4-9769-4BE9-B5A6-C87DE221D73C} {7E4A7172-7FF5-48D0-B719-7CD959DD1AC9} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486} + {C3CBC8E3-81D8-4C5B-9941-DCCD12D50B1F} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486} + B13EFF7F-7EA4-4B68-A375-D112105E9182 = {5A3EBEBA-0560-41C1-966B-23F7D03A5486} + {1152B71B-3C05-4598-B20D-823B5D40559E} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486} + {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486} + {2748AD25-9C63-4E12-877B-4DCE96FBED54} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486} + {80318B5F-A25D-45AB-8A95-EF31D2370A4C} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486} + {8035765F-D51F-4A0C-A746-2FD100E19419} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486} + {924EE450-603D-49C1-A8E5-4AFAA31CE6F3} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486} + {857CA1A3-FC88-4BE0-AB6A-D1EE772AB288} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486} EndGlobalSection EndGlobal