From 558ee2c63d3258b36fbd29eaa568fd074c9c0a6c Mon Sep 17 00:00:00 2001 From: Dmitry Jemerov Date: Thu, 23 Jun 2011 18:43:07 +0200 Subject: [PATCH] compile .qrc action actually works --- .../com/jetbrains/pyqt/CompileQrcAction.java | 36 +++++++++++++++---- .../com/jetbrains/pyqt/CompileQrcDialog.form | 4 ++- 2 files changed, 32 insertions(+), 8 deletions(-) diff --git a/python/src/com/jetbrains/pyqt/CompileQrcAction.java b/python/src/com/jetbrains/pyqt/CompileQrcAction.java index aaeedca50aa1..ed8125a25fc5 100644 --- a/python/src/com/jetbrains/pyqt/CompileQrcAction.java +++ b/python/src/com/jetbrains/pyqt/CompileQrcAction.java @@ -1,10 +1,16 @@ package com.jetbrains.pyqt; import com.intellij.execution.ExecutionException; +import com.intellij.execution.RunContentExecutor; +import com.intellij.execution.configurations.GeneralCommandLine; +import com.intellij.execution.process.OSProcessHandler; +import com.intellij.execution.process.ProcessHandler; +import com.intellij.execution.process.ProcessTerminatedListener; import com.intellij.openapi.actionSystem.AnAction; import com.intellij.openapi.actionSystem.AnActionEvent; import com.intellij.openapi.actionSystem.LangDataKeys; import com.intellij.openapi.actionSystem.PlatformDataKeys; +import com.intellij.openapi.fileChooser.FileChooserDescriptorFactory; import com.intellij.openapi.module.Module; import com.intellij.openapi.project.Project; import com.intellij.openapi.ui.DialogWrapper; @@ -12,12 +18,8 @@ import com.intellij.openapi.ui.Messages; import com.intellij.openapi.ui.TextFieldWithBrowseButton; import com.intellij.openapi.util.io.FileUtil; import com.intellij.openapi.vfs.VirtualFile; -import com.jetbrains.django.run.Runner; import javax.swing.*; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; /** * @author yole @@ -42,12 +44,20 @@ public class CompileQrcAction extends AnAction { if (dialog.getExitCode() != DialogWrapper.OK_EXIT_CODE) { return; } - List args = new ArrayList(Arrays.asList(path, "-o", dialog.getOutputPath())); + + GeneralCommandLine cmdLine = new GeneralCommandLine(); + cmdLine.setPassParentEnvs(true); + cmdLine.setExePath(path); + cmdLine.addParameters("-o", dialog.getOutputPath()); for (VirtualFile vFile : vFiles) { - args.add(vFile.getPath()); + cmdLine.addParameter(vFile.getPath()); } try { - Runner.runInPath(project, vFiles[0].getParent().getPath(), true, null, args.toArray(new String[args.size()])); + ProcessHandler process = new OSProcessHandler(cmdLine.createProcess(), cmdLine.getCommandLineString()); + ProcessTerminatedListener.attach(process); + new RunContentExecutor(project, process) + .withTitle("Compile .qrc") + .run(); } catch (ExecutionException ex) { Messages.showErrorDialog(project, "Error running " + path + ": " + ex.getMessage(), "Compile .qrc file"); @@ -79,6 +89,13 @@ public class CompileQrcAction extends AnAction { protected CompileQrcDialog(Project project, VirtualFile[] vFiles) { super(project); + if (vFiles.length == 1) { + setTitle("Compile " + vFiles [0].getName()); + } + else { + setTitle("Compile " + vFiles.length + " .qrc files"); + } + myOutputFileField.addBrowseFolderListener("Select output path:", null, project, FileChooserDescriptorFactory.createSingleLocalFileDescriptor()); init(); } @@ -90,5 +107,10 @@ public class CompileQrcAction extends AnAction { public String getOutputPath() { return myOutputFileField.getText(); } + + @Override + public JComponent getPreferredFocusedComponent() { + return myOutputFileField; + } } } diff --git a/python/src/com/jetbrains/pyqt/CompileQrcDialog.form b/python/src/com/jetbrains/pyqt/CompileQrcDialog.form index 4ce539fe4678..8ec98c828054 100644 --- a/python/src/com/jetbrains/pyqt/CompileQrcDialog.form +++ b/python/src/com/jetbrains/pyqt/CompileQrcDialog.form @@ -23,7 +23,9 @@ - + + +