From d4e047bbf68ab8550f6baa9aa382bad1084f4c91 Mon Sep 17 00:00:00 2001 From: Ivan Shakhov Date: Wed, 29 Nov 2023 13:02:19 +0100 Subject: [PATCH] add start editor action to the toolbar (#119) --- resharper/debugger/debugger/debugger.csproj | 2 +- .../gradle-launcher/gradle-launcher.csproj | 2 +- resharper/src/rider-godot.csproj | 2 +- .../rider/plugins/godot/GodotIcons.kt | 6 +++ .../plugins/godot/ui/GodotConnectionAction.kt | 32 ------------ .../godot/ui/StartGodotEditorAction.kt | 49 +++++++++++++++++++ rider/src/main/resources/META-INF/plugin.xml | 7 ++- 7 files changed, 63 insertions(+), 37 deletions(-) delete mode 100644 rider/src/main/kotlin/com/jetbrains/rider/plugins/godot/ui/GodotConnectionAction.kt create mode 100644 rider/src/main/kotlin/com/jetbrains/rider/plugins/godot/ui/StartGodotEditorAction.kt diff --git a/resharper/debugger/debugger/debugger.csproj b/resharper/debugger/debugger/debugger.csproj index 6c7f5dd5..8cd41fdf 100644 --- a/resharper/debugger/debugger/debugger.csproj +++ b/resharper/debugger/debugger/debugger.csproj @@ -4,7 +4,7 @@ JetBrains.ReSharper.Plugins.Godot.Rider.Debugger JetBrains.ReSharper.Plugins.Godot.Rider.Debugger 7.3 - true + false true diff --git a/resharper/gradle-launcher/gradle-launcher.csproj b/resharper/gradle-launcher/gradle-launcher.csproj index cc5ed28b..cd7d6e5b 100644 --- a/resharper/gradle-launcher/gradle-launcher.csproj +++ b/resharper/gradle-launcher/gradle-launcher.csproj @@ -2,7 +2,7 @@ Exe net472 - true + false diff --git a/resharper/src/rider-godot.csproj b/resharper/src/rider-godot.csproj index 254cc681..8f359db8 100644 --- a/resharper/src/rider-godot.csproj +++ b/resharper/src/rider-godot.csproj @@ -4,7 +4,7 @@ JetBrains.ReSharper.Plugins.Godot JetBrains.ReSharper.Plugins.Godot 9 - true + false TRACE;JET_MODE_ASSERT;JET_MODE_REPORT_EXCEPTIONS;RIDER;$(CommandLineConstants) diff --git a/rider/src/main/kotlin/com/jetbrains/rider/plugins/godot/GodotIcons.kt b/rider/src/main/kotlin/com/jetbrains/rider/plugins/godot/GodotIcons.kt index 7da9ba44..5569cf69 100644 --- a/rider/src/main/kotlin/com/jetbrains/rider/plugins/godot/GodotIcons.kt +++ b/rider/src/main/kotlin/com/jetbrains/rider/plugins/godot/GodotIcons.kt @@ -10,6 +10,12 @@ class GodotIcons { } } + class Actions { + companion object { + @JvmField val StartGodotEditorActionIcon = Icons.GodotLogo + } + } + class RunConfigurations { companion object { val StartAndDebug = Icons.GodotLogo diff --git a/rider/src/main/kotlin/com/jetbrains/rider/plugins/godot/ui/GodotConnectionAction.kt b/rider/src/main/kotlin/com/jetbrains/rider/plugins/godot/ui/GodotConnectionAction.kt deleted file mode 100644 index b622628a..00000000 --- a/rider/src/main/kotlin/com/jetbrains/rider/plugins/godot/ui/GodotConnectionAction.kt +++ /dev/null @@ -1,32 +0,0 @@ -package com.jetbrains.rider.plugins.godot.ui - -import com.intellij.openapi.actionSystem.AnAction -import com.intellij.openapi.actionSystem.AnActionEvent -import com.jetbrains.rd.util.reactive.valueOrDefault -import com.jetbrains.rider.model.godot.frontendBackend.GodotEditorState -import com.jetbrains.rider.plugins.godot.FrontendBackendHost -import com.jetbrains.rider.plugins.godot.GodotIcons -import com.jetbrains.rider.plugins.godot.GodotProjectDiscoverer - -class GodotConnectionAction : AnAction() { - override fun actionPerformed(p0: AnActionEvent) { - - } - - override fun update(e: AnActionEvent) { - val project = e.project ?: return - e.presentation.isVisible = GodotProjectDiscoverer.getInstance(project).mainProjectBasePath.value != null - - if (e.presentation.isVisible) { - e.presentation.isEnabled = true - val host = FrontendBackendHost.getInstance(project) - e.presentation.icon = GodotIcons.Icons.GodotLogoDisconnected - e.presentation.text = "Not Connected to Godot Editor" - - if (host.model.editorState.valueOrDefault(GodotEditorState.Disconnected) == GodotEditorState.Connected) { - e.presentation.icon = GodotIcons.Icons.GodotLogo - e.presentation.text = "Connected to Godot Editor" - } - } - } -} \ No newline at end of file diff --git a/rider/src/main/kotlin/com/jetbrains/rider/plugins/godot/ui/StartGodotEditorAction.kt b/rider/src/main/kotlin/com/jetbrains/rider/plugins/godot/ui/StartGodotEditorAction.kt new file mode 100644 index 00000000..c003f738 --- /dev/null +++ b/rider/src/main/kotlin/com/jetbrains/rider/plugins/godot/ui/StartGodotEditorAction.kt @@ -0,0 +1,49 @@ +package com.jetbrains.rider.plugins.godot.ui + +import com.intellij.execution.RunManager +import com.intellij.execution.configurations.ConfigurationTypeUtil +import com.intellij.execution.configurations.GeneralCommandLine +import com.intellij.openapi.actionSystem.AnActionEvent +import com.intellij.openapi.diagnostic.Logger +import com.intellij.openapi.project.DumbAwareAction +import com.intellij.openapi.project.Project +import com.jetbrains.rider.plugins.godot.run.GodotRunConfigurationGenerator +import com.jetbrains.rider.run.configurations.dotNetExe.DotNetExeConfiguration +import com.jetbrains.rider.run.configurations.dotNetExe.DotNetExeConfigurationType +import com.jetbrains.rider.run.createEmptyConsoleCommandLine +import com.jetbrains.rider.run.withRawParameters + + +open class StartGodotEditorAction : DumbAwareAction() { + override fun actionPerformed(e: AnActionEvent) { + val project = e.project ?: return + + startEditor(project) + } + + companion object { + private val logger = Logger.getInstance(StartGodotEditorAction::class.java) + fun startEditor(project: Project) { + val runManager = RunManager.getInstance(project) + val configurationType = ConfigurationTypeUtil.findConfigurationType(DotNetExeConfigurationType::class.java) + val runConfiguration = + runManager.findConfigurationByTypeAndName(configurationType.id, GodotRunConfigurationGenerator.EDITOR_CONFIGURATION_NAME) + + val exeConfiguration = runConfiguration?.configuration as DotNetExeConfiguration + val runCommandLine = createEmptyConsoleCommandLine(exeConfiguration.parameters.useExternalConsole) + .withEnvironment(exeConfiguration.parameters.envs) + .withParentEnvironmentType(if (exeConfiguration.parameters.isPassParentEnvs) { + GeneralCommandLine.ParentEnvironmentType.CONSOLE + } else { + GeneralCommandLine.ParentEnvironmentType.NONE + }) + .withExePath(exeConfiguration.parameters.exePath) + .withWorkDirectory(exeConfiguration.parameters.workingDirectory) + .withRawParameters(exeConfiguration.parameters.programParameters) + + logger.info("Starting $runCommandLine") + + runCommandLine.createProcess() + } + } +} \ No newline at end of file diff --git a/rider/src/main/resources/META-INF/plugin.xml b/rider/src/main/resources/META-INF/plugin.xml index 2742ea2e..24cc42dd 100644 --- a/rider/src/main/resources/META-INF/plugin.xml +++ b/rider/src/main/resources/META-INF/plugin.xml @@ -39,12 +39,15 @@ - + - +