PY-9448 Add ability to directly create pdf's from sphinx documentation

implemented via rst2pdf package see http://www.sphinx-doc.org/en/stable/builders.html
This commit is contained in:
Ekaterina Tuzova
2016-05-26 15:54:04 +03:00
parent 4e66e64a90
commit 4757289946
2 changed files with 16 additions and 3 deletions

View File

@@ -23,6 +23,8 @@ import com.intellij.openapi.fileChooser.FileChooserDescriptorFactory;
import com.intellij.openapi.options.SettingsEditor;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.text.StringUtil;
import com.jetbrains.python.packaging.PyPackage;
import com.jetbrains.python.packaging.PyPackageManager;
import com.jetbrains.rest.run.RestConfigurationEditor;
import com.jetbrains.rest.run.RestRunConfiguration;
import org.jetbrains.annotations.NotNull;
@@ -38,7 +40,19 @@ public class SphinxRunConfiguration extends RestRunConfiguration {
@Override
protected SettingsEditor<? extends RunConfiguration> createConfigurationEditor() {
RestConfigurationEditor editor = new RestConfigurationEditor(getProject(), this, new SphinxTasksModel());
final SphinxTasksModel model = new SphinxTasksModel();
if (!model.contains("pdf")) {
try {
final PyPackage rst2pdf = PyPackageManager.getInstance(getSdk()).findPackage("rst2pdf");
if (rst2pdf != null) {
model.add(13, "pdf");
}
}
catch (ExecutionException ignored) {
}
}
RestConfigurationEditor editor = new RestConfigurationEditor(getProject(), this, model);
editor.setConfigurationName("Sphinx task");
editor.setOpenInBrowserVisible(false);
editor.setInputDescriptor(FileChooserDescriptorFactory.createSingleFolderDescriptor());

View File

@@ -23,7 +23,7 @@ import java.util.List;
/**
* User : catherine
*/
public class SphinxTasksModel extends CollectionComboBoxModel {
public class SphinxTasksModel extends CollectionComboBoxModel<String> {
private static List<String> targets = Lists.newArrayList();
static {
targets.add("changes");
@@ -37,7 +37,6 @@ public class SphinxTasksModel extends CollectionComboBoxModel {
targets.add("htmlhelp");
targets.add("json");
targets.add("latex");
targets.add("latexpdf");
targets.add("linkcheck");
targets.add("man");
targets.add("pickle");