Browse Source

add some more project browser commands

- open folder (missing on solution node)
- open command prompt here
- run project without debugger (http://community.sharpdevelop.net/forums/t/15640.aspx)
pull/6/merge
Siegfried Pammer 13 years ago
parent
commit
6789dd762e
  1. 21
      data/resources/StringResources.de.resx
  2. 42
      data/resources/StringResources.fr.resx
  3. 15
      data/resources/StringResources.nl.resx
  4. 15
      data/resources/StringResources.resx
  5. 29
      src/Main/Base/Project/ICSharpCode.SharpDevelop.addin
  6. 13
      src/Main/Base/Project/Src/Commands/FileTabStripCommands.cs
  7. 56
      src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/Commands/DefaultFileNodeCommands.cs
  8. 17
      src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/Commands/ProjectNodeCommands.cs

21
data/resources/StringResources.de.resx

@ -4033,6 +4033,12 @@ Grund: Der Wert zu dem zurückgesetzt werden soll ist ungültig weil sich eine a @@ -4033,6 +4033,12 @@ Grund: Der Wert zu dem zurückgesetzt werden soll ist ungültig weil sich eine a
<data name="ICSharpCode.SharpDevelop.Internal.Project.ProjectReference.PublicKeyToken.Description" xml:space="preserve">
<value>Das öffentliche Schlüsseltoken der Assembly</value>
</data>
<data name="ICSharpCode.SharpDevelop.Internal.Project.ProjectReference.ReferenceOutputAssembly" xml:space="preserve">
<value>Assembly referenzieren</value>
</data>
<data name="ICSharpCode.SharpDevelop.Internal.Project.ProjectReference.ReferenceOutputAssembly.Description" xml:space="preserve">
<value>Wenn auf false gesetzt, gibt diese Referenz nur eine Build-Reihenfolgenabhängigkeit an und fügt keine Assembly-Referenz zum Projekt hinzu.</value>
</data>
<data name="ICSharpCode.SharpDevelop.Internal.Project.ProjectReference.SpecificVersion" xml:space="preserve">
<value>Festgelegte Version</value>
</data>
@ -4979,6 +4985,9 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFxCompiler, WixNetFxExtension< @@ -4979,6 +4985,9 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFxCompiler, WixNetFxExtension<
<data name="MainWindow.Windows.Debug.LocalVariables.CopyToClipboard" xml:space="preserve">
<value>Kopiere Wert in Zwischenablage</value>
</data>
<data name="MainWindow.Windows.Debug.LocalVariables.NameColumn" xml:space="preserve">
<value>Name</value>
</data>
<data name="MainWindow.Windows.Debug.LocalVariables.NonPublicMembers" xml:space="preserve">
<value>Nicht-öffentliche Mitglieder</value>
</data>
@ -5000,6 +5009,12 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFxCompiler, WixNetFxExtension< @@ -5000,6 +5009,12 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFxCompiler, WixNetFxExtension<
<data name="MainWindow.Windows.Debug.LocalVariables.StaticMembers" xml:space="preserve">
<value>Statische Mitglieder</value>
</data>
<data name="MainWindow.Windows.Debug.LocalVariables.TypeColumn" xml:space="preserve">
<value>Typ</value>
</data>
<data name="MainWindow.Windows.Debug.LocalVariables.ValueColumn" xml:space="preserve">
<value>Wert</value>
</data>
<data name="MainWindow.Windows.Debug.MemoryPad" xml:space="preserve">
<value>Speicher</value>
</data>
@ -5375,6 +5390,9 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFxCompiler, WixNetFxExtension< @@ -5375,6 +5390,9 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFxCompiler, WixNetFxExtension<
<data name="OpenFileTabEventHandler.FileContainingFolderInExplorer" xml:space="preserve">
<value>Öffne beinhaltenden Ordner im Explorer</value>
</data>
<data name="OpenFileTabEventHandler.OpenCommandPromptHere" xml:space="preserve">
<value>Kommandozeile hier öffnen</value>
</data>
<data name="ProjectBrowser.Toolbar.CollapseAll" xml:space="preserve">
<value>Alle Knoten einklappen</value>
</data>
@ -5510,6 +5528,9 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFxCompiler, WixNetFxExtension< @@ -5510,6 +5528,9 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFxCompiler, WixNetFxExtension<
<data name="ProjectComponent.ContextMenu.RunProject" xml:space="preserve">
<value>Projekt sta&amp;rten</value>
</data>
<data name="ProjectComponent.ContextMenu.RunProjectWithoutDebugger" xml:space="preserve">
<value>Projekt ohne Debugger starten</value>
</data>
<data name="ProjectComponent.ContextMenu.SetAsStartupProject" xml:space="preserve">
<value>Als St&amp;artprojekt festlegen</value>
</data>

42
data/resources/StringResources.fr.resx

@ -1862,6 +1862,9 @@ Voulez-vous ajouter le nouveau fichier au projet ${CurrentProjectName}?</value> @@ -1862,6 +1862,9 @@ Voulez-vous ajouter le nouveau fichier au projet ${CurrentProjectName}?</value>
<data name="Dialog.Options.IDEOptions.Debugging.Stepping" xml:space="preserve">
<value>Pas-à-pas en cours</value>
</data>
<data name="Dialog.Options.IDEOptions.Debugging.Stepping.DecompileCodeWithoutSymbols" xml:space="preserve">
<value>Décompiler le code sans symboles</value>
</data>
<data name="Dialog.Options.IDEOptions.Debugging.Stepping.EnableJustMyCode" xml:space="preserve">
<value>Utiliser 'Seulement mon code' pour le pas-à-pas</value>
</data>
@ -3379,6 +3382,9 @@ Configurez le chemin vers NAnt dans les options de SharpDevelop.</value> @@ -3379,6 +3382,9 @@ Configurez le chemin vers NAnt dans les options de SharpDevelop.</value>
<data name="ICSharpCode.Refactoring.NoClassOrOverridableSymbolUnderCursorError" xml:space="preserve">
<value>L'élément sélectionné n'est ni une classe ni un membre surchargeable: aucun symbole dérivé n'est disponible.</value>
</data>
<data name="ICSharpCode.Refactoring.NoClassUnderCursorError" xml:space="preserve">
<value>Impossible de trouver la définition du type sous le curseur.</value>
</data>
<data name="ICSharpCode.RubyBinding.SendLineToRubyConsole" xml:space="preserve">
<value>Envoyer cette ligne vers la console Ruby</value>
</data>
@ -3774,6 +3780,9 @@ Toutes les modifications seront perdues.</value> @@ -3774,6 +3780,9 @@ Toutes les modifications seront perdues.</value>
<data name="ICSharpCode.SharpDevelop.FormDesigner.LoadErrorCheckSourceCodeForErrors" xml:space="preserve">
<value>Impossible de charger le concepteur. Vérifier les erreurs de syntaxe du code source et si toutes les références sont disponibles.</value>
</data>
<data name="ICSharpCode.SharpDevelop.FormDesigner.ReportFlushErrors" xml:space="preserve">
<value>Une ou plusieurs erreurs sont survenues en essayant de vider le contenu du concepteur. C'est peut-être une exception non gérée dans un composant tiers sur le formulaire ou le contrôle.</value>
</data>
<data name="ICSharpCode.SharpDevelop.FormDesigner.ToolboxProvider.CantLoadSidbarComponentLibraryWarning" xml:space="preserve">
<value>Ne peut charger la librairie contenant la barre de composants.
Les composants Windows Form ne seront pas accessibles, veuillez configurer manuellement la barre de composants (clic droit sur une catégorie de la barre de menu -&gt; Paramétrer la barre de menu).</value>
@ -3988,6 +3997,12 @@ Utilisez seulement des lettres, chiffres, espace, '.' ou '_'.</value> @@ -3988,6 +3997,12 @@ Utilisez seulement des lettres, chiffres, espace, '.' ou '_'.</value>
<data name="ICSharpCode.SharpDevelop.Internal.Project.ProjectReference.Culture.Description" xml:space="preserve">
<value>La culture supportée par la référence</value>
</data>
<data name="ICSharpCode.SharpDevelop.Internal.Project.ProjectReference.EmbedInteropTypes" xml:space="preserve">
<value>Embarquer les types interop</value>
</data>
<data name="ICSharpCode.SharpDevelop.Internal.Project.ProjectReference.EmbedInteropTypes.Description" xml:space="preserve">
<value>Précise si les type d'interop COM définis dans l'assembly référencé sont embarqués dans l'assembly cible.</value>
</data>
<data name="ICSharpCode.SharpDevelop.Internal.Project.ProjectReference.LocalCopy" xml:space="preserve">
<value>Copie locale</value>
</data>
@ -4006,6 +4021,12 @@ Utilisez seulement des lettres, chiffres, espace, '.' ou '_'.</value> @@ -4006,6 +4021,12 @@ Utilisez seulement des lettres, chiffres, espace, '.' ou '_'.</value>
<data name="ICSharpCode.SharpDevelop.Internal.Project.ProjectReference.PublicKeyToken.Description" xml:space="preserve">
<value>Le jeton de clé publique</value>
</data>
<data name="ICSharpCode.SharpDevelop.Internal.Project.ProjectReference.ReferenceOutputAssembly" xml:space="preserve">
<value>Référencer l'assembly</value>
</data>
<data name="ICSharpCode.SharpDevelop.Internal.Project.ProjectReference.ReferenceOutputAssembly.Description" xml:space="preserve">
<value>Si positionné à Faux, cette référence spécifie uniquement une dépendance dans l'ordre de la construction sans référencer l'assembly.</value>
</data>
<data name="ICSharpCode.SharpDevelop.Internal.Project.ProjectReference.SpecificVersion" xml:space="preserve">
<value>Version Spécifique</value>
</data>
@ -4051,6 +4072,9 @@ Utilisez seulement des lettres, chiffres, espace, '.' ou '_'.</value> @@ -4051,6 +4072,9 @@ Utilisez seulement des lettres, chiffres, espace, '.' ou '_'.</value>
<data name="ICSharpCode.SharpDevelop.LoadingFile" xml:space="preserve">
<value>Chargement de ${Filename}...</value>
</data>
<data name="ICSharpCode.SharpDevelop.Project.CloseSolution" xml:space="preserve">
<value>Fermer la solution</value>
</data>
<data name="ICSharpCode.SharpDevelop.Project.KeepOldSolution" xml:space="preserve">
<value>Laisser la solution précédente ouverte</value>
</data>
@ -4084,6 +4108,14 @@ Utilisez seulement des lettres, chiffres, espace, '.' ou '_'.</value> @@ -4084,6 +4108,14 @@ Utilisez seulement des lettres, chiffres, espace, '.' ou '_'.</value>
<data name="ICSharpCode.SharpDevelop.Project.UpgradeView.Title" xml:space="preserve">
<value>Mettre à jour le projet</value>
</data>
<data name="ICSharpCode.SharpDevelop.Project.UpgradeView.UpdateOnLoadDueToMissingMSBuild" xml:space="preserve">
<value>Le projet '${ProjectName}' cible MSBuild ${OldToolsVersion}, mais cette version n'est pas installée.
Voulez vous mettre à jour le projet vers MSBuild ${NewToolsVersion}?
Le projet ne sera pas ouvert sans cette mise à jour.</value>
</data>
<data name="ICSharpCode.SharpDevelop.Project.UpgradeView.UpdateToMSBuildButton" xml:space="preserve">
<value>Mettre à jour vers MSBuild ${NewToolsVersion}</value>
</data>
<data name="ICSharpCode.SharpDevelop.Project.UpgradeView.UpgradeFromPreviousVersionDescription" xml:space="preserve">
<value>Cette solution a été créée par une précédente version de SharpDevelop.
La mettre à jour vous permet d'utiliser de nouveaux languages, ou les évolutions du framework.</value>
@ -4165,7 +4197,7 @@ Allez dans 'Outils/Options-&gt;Style Visuel pour changer l'ambiance actuelle.</v @@ -4165,7 +4197,7 @@ Allez dans 'Outils/Options-&gt;Style Visuel pour changer l'ambiance actuelle.</v
<value>Processus de travail {0} ASP.NET/IIS(Express) introuvable.</value>
</data>
<data name="ICSharpCode.WebProjectOptionsPanel.NoProjectUrlOrProgramAction" xml:space="preserve">
<value>Pas d'URL du projet spécifiée ou de programme externe. Vérifier le serveur web dans Propriétés du projet - Onglet debug.</value>
<value>Aucun programme externe ni URL spécifié. Vérifier le serveur web dans Propriétés du projet - onglet Web.</value>
</data>
<data name="ICSharpCode.WebProjectOptionsPanel.Port" xml:space="preserve">
<value>Port:</value>
@ -4783,7 +4815,7 @@ Soit ils n'existent pas, soit le document Wix n'est pas pour WiX 3.0 et l'espace @@ -4783,7 +4815,7 @@ Soit ils n'existent pas, soit le document Wix n'est pas pour WiX 3.0 et l'espace
<value>Vous ne pouvez pas changer pour une fonction sans symboles.</value>
</data>
<data name="MainWindow.Windows.Debug.CallStack.CannotSwitchWithoutSymbolsOrDecompiledCodeOptions" xml:space="preserve">
<value>Les options de décompilation du code doivent être activés pour aller vers une fonction sans symboles.</value>
<value>Impossible de basculer vers une méthode sans symboles de déboguage.Recompilez avec les symboles ou activer l'option de décompilation du code sans symboles.</value>
</data>
<data name="MainWindow.Windows.Debug.CallStack.ExternalMethods" xml:space="preserve">
<value>[Méthodes externes]</value>
@ -5001,12 +5033,18 @@ Soit ils n'existent pas, soit le document Wix n'est pas pour WiX 3.0 et l'espace @@ -5001,12 +5033,18 @@ Soit ils n'existent pas, soit le document Wix n'est pas pour WiX 3.0 et l'espace
<data name="MainWindow.Windows.Debug.Modules.AddressColumn" xml:space="preserve">
<value>Adresse</value>
</data>
<data name="MainWindow.Windows.Debug.Modules.DynamicModule" xml:space="preserve">
<value>(dynamique)</value>
</data>
<data name="MainWindow.Windows.Debug.Modules.HasNoSymbols" xml:space="preserve">
<value>Aucun symbole n'est chargé.</value>
</data>
<data name="MainWindow.Windows.Debug.Modules.HasSymbols" xml:space="preserve">
<value>Symboles chargés.</value>
</data>
<data name="MainWindow.Windows.Debug.Modules.InMemoryModule" xml:space="preserve">
<value>(en mémoire)</value>
</data>
<data name="MainWindow.Windows.Debug.Modules.OrderColumn" xml:space="preserve">
<value>Ordre</value>
</data>

15
data/resources/StringResources.nl.resx

@ -4023,6 +4023,12 @@ Alleen letters, getallen, spatie, '.' of '_' zijn toegestaan.</value> @@ -4023,6 +4023,12 @@ Alleen letters, getallen, spatie, '.' of '_' zijn toegestaan.</value>
<data name="ICSharpCode.SharpDevelop.Internal.Project.ProjectReference.PublicKeyToken.Description" xml:space="preserve">
<value>De openbare sleutel token</value>
</data>
<data name="ICSharpCode.SharpDevelop.Internal.Project.ProjectReference.ReferenceOutputAssembly" xml:space="preserve">
<value>Referentie assembly</value>
</data>
<data name="ICSharpCode.SharpDevelop.Internal.Project.ProjectReference.ReferenceOutputAssembly.Description" xml:space="preserve">
<value>Indien false, specificeert deze referentie enkel een bouw-volgorde afhankelijkheid en heeft niet tot gevolg dat de assembly gerefereerd wordt.</value>
</data>
<data name="ICSharpCode.SharpDevelop.Internal.Project.ProjectReference.SpecificVersion" xml:space="preserve">
<value>Specifieke versie</value>
</data>
@ -4969,6 +4975,9 @@ Microsoft.Tools.WindowsInstallerXml.Extenties.NetFxCompiler, WixNetFxExtentie</v @@ -4969,6 +4975,9 @@ Microsoft.Tools.WindowsInstallerXml.Extenties.NetFxCompiler, WixNetFxExtentie</v
<data name="MainWindow.Windows.Debug.LocalVariables.CopyToClipboard" xml:space="preserve">
<value>Kopieer waarde naar klembord</value>
</data>
<data name="MainWindow.Windows.Debug.LocalVariables.NameColumn" xml:space="preserve">
<value>Naam</value>
</data>
<data name="MainWindow.Windows.Debug.LocalVariables.NonPublicMembers" xml:space="preserve">
<value>Niet openbare leden</value>
</data>
@ -4990,6 +4999,12 @@ Microsoft.Tools.WindowsInstallerXml.Extenties.NetFxCompiler, WixNetFxExtentie</v @@ -4990,6 +4999,12 @@ Microsoft.Tools.WindowsInstallerXml.Extenties.NetFxCompiler, WixNetFxExtentie</v
<data name="MainWindow.Windows.Debug.LocalVariables.StaticMembers" xml:space="preserve">
<value>Statische leden</value>
</data>
<data name="MainWindow.Windows.Debug.LocalVariables.TypeColumn" xml:space="preserve">
<value>Type</value>
</data>
<data name="MainWindow.Windows.Debug.LocalVariables.ValueColumn" xml:space="preserve">
<value>Waarde</value>
</data>
<data name="MainWindow.Windows.Debug.MemoryPad" xml:space="preserve">
<value>Geheugen</value>
</data>

15
data/resources/StringResources.resx

@ -5270,6 +5270,9 @@ Stop/terminate the debuggee.</comment> @@ -5270,6 +5270,9 @@ Stop/terminate the debuggee.</comment>
<value>Copy value to clipboard</value>
<comment>Item in variable's context menu</comment>
</data>
<data name="MainWindow.Windows.Debug.LocalVariables.NameColumn" xml:space="preserve">
<value>Name</value>
</data>
<data name="MainWindow.Windows.Debug.LocalVariables.NonPublicMembers" xml:space="preserve">
<value>Non-Public members</value>
</data>
@ -5297,6 +5300,12 @@ Shows the full callstack of the error.</comment> @@ -5297,6 +5300,12 @@ Shows the full callstack of the error.</comment>
<data name="MainWindow.Windows.Debug.LocalVariables.StaticMembers" xml:space="preserve">
<value>Static members</value>
</data>
<data name="MainWindow.Windows.Debug.LocalVariables.TypeColumn" xml:space="preserve">
<value>Type</value>
</data>
<data name="MainWindow.Windows.Debug.LocalVariables.ValueColumn" xml:space="preserve">
<value>Value</value>
</data>
<data name="MainWindow.Windows.Debug.MemoryPad" xml:space="preserve">
<value>Memory</value>
</data>
@ -5686,6 +5695,9 @@ Removed the end part of the original message ", reason '${Message}'" since this @@ -5686,6 +5695,9 @@ Removed the end part of the original message ", reason '${Message}'" since this
<value>Open containing folder in Explorer</value>
<comment>String for the editor tab context menu that will open the directory in which a documents file is contained in Windows Explorer.</comment>
</data>
<data name="OpenFileTabEventHandler.OpenCommandPromptHere" xml:space="preserve">
<value>Open command prompt here</value>
</data>
<data name="ProjectBrowser.Toolbar.CollapseAll" xml:space="preserve">
<value>Collapse all nodes</value>
</data>
@ -5830,6 +5842,9 @@ Removed the end part of the original message ", reason '${Message}'" since this @@ -5830,6 +5842,9 @@ Removed the end part of the original message ", reason '${Message}'" since this
<data name="ProjectComponent.ContextMenu.RunProject" xml:space="preserve">
<value>&amp;Run Project</value>
</data>
<data name="ProjectComponent.ContextMenu.RunProjectWithoutDebugger" xml:space="preserve">
<value>Run Project without Debugger</value>
</data>
<data name="ProjectComponent.ContextMenu.SetAsStartupProject" xml:space="preserve">
<value>Set as St&amp;artUp Project</value>
</data>

29
src/Main/Base/Project/ICSharpCode.SharpDevelop.addin

@ -238,6 +238,13 @@ @@ -238,6 +238,13 @@
</Condition>
<MenuItem id = "AddSeparator" type = "Separator"/>
<MenuItem id = "OpenFolderContainingFile"
label = "${res:Gui.ProjectBrowser.OpenFolderInExplorer}"
class = "ICSharpCode.SharpDevelop.Project.Commands.OpenFolderContainingFile"/>
<MenuItem id = "OpenCommandPromptHere"
label = "${res:OpenFileTabEventHandler.OpenCommandPromptHere}"
class = "ICSharpCode.SharpDevelop.Project.Commands.OpenCommandPromptHere"/>
<MenuItem id = "OpenSeparator" type = "Separator"/>
<MenuItem id = "CollapseAll"
label = "${res:ProjectComponent.ContextMenu.CollapseAll}"
class = "ICSharpCode.SharpDevelop.Project.Commands.CollapseAll"/>
@ -277,7 +284,9 @@ @@ -277,7 +284,9 @@
<MenuItem id = "OpenFolderContainingFile"
label = "${res:OpenFileTabEventHandler.FileContainingFolderInExplorer}"
class = "ICSharpCode.SharpDevelop.Project.Commands.OpenFolderContainingFile"/>
<MenuItem id = "OpenCommandPromptHere"
label = "${res:OpenFileTabEventHandler.OpenCommandPromptHere}"
class = "ICSharpCode.SharpDevelop.Project.Commands.OpenCommandPromptHere"/>
<MenuItem id = "OpenSeparator" type = "Separator" />
<Include id="CutCopyRemoveRename" path="/SharpDevelop/Pads/ProjectBrowser/ContextMenu/CutCopyRemoveRename"/>
</Path>
@ -354,13 +363,19 @@ @@ -354,13 +363,19 @@
<MenuItem id = "OpenProjectOutputFolder"
label = "${res:ProjectComponent.ContextMenu.OpenProjectOutputFolder}"
class = "ICSharpCode.SharpDevelop.Project.Commands.OpenProjectOutputFolder"/>
<MenuItem id = "OpenCommandPromptHere"
label = "${res:OpenFileTabEventHandler.OpenCommandPromptHere}"
class = "ICSharpCode.SharpDevelop.Project.Commands.OpenCommandPromptHere"/>
<Condition name="IsProcessRunning" isprocessrunning="False" isdebugging="False" action="Disable">
<MenuItem id = "Run"
label = "${res:ProjectComponent.ContextMenu.RunProject}"
icon = "Icons.16x16.RunProgramIcon"
class = "ICSharpCode.SharpDevelop.Project.Commands.RunProject"/>
</Condition>
<MenuItem id = "RunWithoutDebugger"
label = "${res:ProjectComponent.ContextMenu.RunProjectWithoutDebugger}"
icon = "Icons.16x16.Debug.StartWithoutDebugging"
class = "ICSharpCode.SharpDevelop.Project.Commands.RunProjectWithoutDebugger"/>
<MenuItem id = "SetAsStartupProject"
label = "${res:ProjectComponent.ContextMenu.SetAsStartupProject}"
class = "ICSharpCode.SharpDevelop.Project.Commands.SetAsStartupProject"/>
@ -403,6 +418,9 @@ @@ -403,6 +418,9 @@
<MenuItem id = "OpenFolderContainingFile"
label = "${res:OpenFileTabEventHandler.FileContainingFolderInExplorer}"
class = "ICSharpCode.SharpDevelop.Project.Commands.OpenFolderContainingFile"/>
<MenuItem id = "OpenCommandPromptHere"
label = "${res:OpenFileTabEventHandler.OpenCommandPromptHere}"
class = "ICSharpCode.SharpDevelop.Project.Commands.OpenCommandPromptHere"/>
</ComplexCondition>
<Condition name = "Ownerstate" ownerstate = "Missing">
<MenuItem id = "Remove"
@ -620,7 +638,9 @@ @@ -620,7 +638,9 @@
<MenuItem id = "OpenFolder"
label = "${res:Gui.ProjectBrowser.OpenFolderInExplorer}"
class = "ICSharpCode.SharpDevelop.Project.Commands.OpenFolder"/>
<MenuItem id = "OpenCommandPromptHere"
label = "${res:OpenFileTabEventHandler.OpenCommandPromptHere}"
class = "ICSharpCode.SharpDevelop.Project.Commands.OpenCommandPromptHere"/>
<ComplexCondition>
<Or>
<Condition name = "Ownerstate" ownerstate = "InProject"/>
@ -1161,6 +1181,9 @@ @@ -1161,6 +1181,9 @@
<MenuItem id = "OpenFolderContainingFileFromTab"
label = "${res:OpenFileTabEventHandler.FileContainingFolderInExplorer}"
class = "ICSharpCode.SharpDevelop.Commands.TabStrip.OpenFolderContainingFile"/>
<MenuItem id = "OpenCommandPromptHereFromTab"
label = "${res:OpenFileTabEventHandler.OpenCommandPromptHere}"
class = "ICSharpCode.SharpDevelop.Commands.TabStrip.OpenCommandPromptHere"/>
</ComplexCondition>
</Path>

13
src/Main/Base/Project/Src/Commands/FileTabStripCommands.cs

@ -117,4 +117,17 @@ namespace ICSharpCode.SharpDevelop.Commands.TabStrip @@ -117,4 +117,17 @@ namespace ICSharpCode.SharpDevelop.Commands.TabStrip
window.ActiveViewContent.PrimaryFileName);
}
}
/// <summary>
/// Opens a command prompt at the file's location.
/// </summary>
public class OpenCommandPromptHere : AbstractMenuCommand
{
public override void Run()
{
IWorkbenchWindow window = Owner as IWorkbenchWindow;
ICSharpCode.SharpDevelop.Project.Commands.OpenCommandPromptHere.OpenCommandPrompt(
window.ActiveViewContent.PrimaryFileName);
}
}
}

56
src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/Commands/DefaultFileNodeCommands.cs

@ -80,6 +80,12 @@ namespace ICSharpCode.SharpDevelop.Project.Commands @@ -80,6 +80,12 @@ namespace ICSharpCode.SharpDevelop.Project.Commands
{
public override void Run()
{
SolutionNode solutionNode = ProjectBrowserPad.Instance.SelectedNode as SolutionNode;
if (solutionNode != null) {
OpenContainingFolderInExplorer(solutionNode.Solution.FileName);
return;
}
SolutionItemNode solutionItemNode = ProjectBrowserPad.Instance.SelectedNode as SolutionItemNode;
if (solutionItemNode != null) {
OpenContainingFolderInExplorer(solutionItemNode.FileName);
@ -107,6 +113,56 @@ namespace ICSharpCode.SharpDevelop.Project.Commands @@ -107,6 +113,56 @@ namespace ICSharpCode.SharpDevelop.Project.Commands
}
}
/// <summary>
/// Opens a command prompt at the selected location.
/// </summary>
public class OpenCommandPromptHere : AbstractMenuCommand
{
public override void Run()
{
SolutionNode solutionNode = ProjectBrowserPad.Instance.SelectedNode as SolutionNode;
if (solutionNode != null) {
OpenCommandPrompt(solutionNode.Solution.FileName);
return;
}
SolutionItemNode solutionItemNode = ProjectBrowserPad.Instance.SelectedNode as SolutionItemNode;
if (solutionItemNode != null) {
OpenCommandPrompt(solutionItemNode.FileName);
return;
}
DirectoryNode directoryNode = ProjectBrowserPad.Instance.SelectedNode as DirectoryNode;
if (directoryNode != null) {
OpenCommandPrompt(directoryNode.Directory);
return;
}
FileNode fileNode = ProjectBrowserPad.Instance.SelectedNode as FileNode;
if (fileNode != null) {
OpenCommandPrompt(fileNode.FileName);
return;
}
ProjectNode projectNode = ProjectBrowserPad.Instance.SelectedNode as ProjectNode;
if (projectNode != null) {
OpenCommandPrompt(projectNode.Project.FileName);
return;
}
}
public static void OpenCommandPrompt(string fileName)
{
if (fileName == null)
return;
if (File.Exists(fileName))
fileName = Path.GetDirectoryName(fileName);
else if (!Directory.Exists(fileName))
return;
Process.Start("cmd.exe", "/k cd \"" + fileName + "\"");
}
}
/// <summary>
/// Opens the selected folder in Explorer.
/// </summary>

17
src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/Commands/ProjectNodeCommands.cs

@ -29,7 +29,12 @@ namespace ICSharpCode.SharpDevelop.Project.Commands @@ -29,7 +29,12 @@ namespace ICSharpCode.SharpDevelop.Project.Commands
{
public override void Run()
{
AbstractProjectBrowserTreeNode node = ProjectBrowserPad.Instance.SelectedNode;
DoRunProject();
}
internal static void DoRunProject(bool withDebugging = true)
{
AbstractProjectBrowserTreeNode node = ProjectBrowserPad.Instance.SelectedNode;
if (node == null) {
return;
}
@ -37,7 +42,7 @@ namespace ICSharpCode.SharpDevelop.Project.Commands @@ -37,7 +42,7 @@ namespace ICSharpCode.SharpDevelop.Project.Commands
BuildProjectBeforeExecute build = new BuildProjectBeforeExecute(node.Project);
build.BuildComplete += delegate {
if (build.LastBuildResults.ErrorCount == 0) {
node.Project.Start(true);
node.Project.Start(withDebugging);
}
};
build.Run();
@ -46,4 +51,12 @@ namespace ICSharpCode.SharpDevelop.Project.Commands @@ -46,4 +51,12 @@ namespace ICSharpCode.SharpDevelop.Project.Commands
}
}
}
public class RunProjectWithoutDebugger : AbstractMenuCommand
{
public override void Run()
{
RunProject.DoRunProject(false);
}
}
}

Loading…
Cancel
Save