diff --git a/python/educational-python/Edu-Python/resources/icons/com/jetbrains/edu/learning/CourseCreationProjectType.png b/python/educational-core/resources/icons/com/jetbrains/edu/learning/CourseCreationProjectType.png similarity index 100% rename from python/educational-python/Edu-Python/resources/icons/com/jetbrains/edu/learning/CourseCreationProjectType.png rename to python/educational-core/resources/icons/com/jetbrains/edu/learning/CourseCreationProjectType.png diff --git a/python/educational-python/Edu-Python/resources/icons/com/jetbrains/edu/learning/CourseCreationProjectType@2x.png b/python/educational-core/resources/icons/com/jetbrains/edu/learning/CourseCreationProjectType@2x.png similarity index 100% rename from python/educational-python/Edu-Python/resources/icons/com/jetbrains/edu/learning/CourseCreationProjectType@2x.png rename to python/educational-core/resources/icons/com/jetbrains/edu/learning/CourseCreationProjectType@2x.png diff --git a/python/educational-python/Edu-Python/resources/icons/com/jetbrains/edu/learning/CourseCreationProjectType@2x_dark.png b/python/educational-core/resources/icons/com/jetbrains/edu/learning/CourseCreationProjectType@2x_dark.png similarity index 100% rename from python/educational-python/Edu-Python/resources/icons/com/jetbrains/edu/learning/CourseCreationProjectType@2x_dark.png rename to python/educational-core/resources/icons/com/jetbrains/edu/learning/CourseCreationProjectType@2x_dark.png diff --git a/python/educational-python/Edu-Python/resources/icons/com/jetbrains/edu/learning/CourseCreationProjectType_dark.png b/python/educational-core/resources/icons/com/jetbrains/edu/learning/CourseCreationProjectType_dark.png similarity index 100% rename from python/educational-python/Edu-Python/resources/icons/com/jetbrains/edu/learning/CourseCreationProjectType_dark.png rename to python/educational-core/resources/icons/com/jetbrains/edu/learning/CourseCreationProjectType_dark.png diff --git a/python/educational-python/Edu-Python/resources/icons/com/jetbrains/edu/learning/EducationalProjectType.png b/python/educational-core/resources/icons/com/jetbrains/edu/learning/EducationalProjectType.png similarity index 100% rename from python/educational-python/Edu-Python/resources/icons/com/jetbrains/edu/learning/EducationalProjectType.png rename to python/educational-core/resources/icons/com/jetbrains/edu/learning/EducationalProjectType.png diff --git a/python/educational-python/Edu-Python/resources/icons/com/jetbrains/edu/learning/EducationalProjectType@2x.png b/python/educational-core/resources/icons/com/jetbrains/edu/learning/EducationalProjectType@2x.png similarity index 100% rename from python/educational-python/Edu-Python/resources/icons/com/jetbrains/edu/learning/EducationalProjectType@2x.png rename to python/educational-core/resources/icons/com/jetbrains/edu/learning/EducationalProjectType@2x.png diff --git a/python/educational-python/Edu-Python/resources/icons/com/jetbrains/edu/learning/EducationalProjectType@2x_dark.png b/python/educational-core/resources/icons/com/jetbrains/edu/learning/EducationalProjectType@2x_dark.png similarity index 100% rename from python/educational-python/Edu-Python/resources/icons/com/jetbrains/edu/learning/EducationalProjectType@2x_dark.png rename to python/educational-core/resources/icons/com/jetbrains/edu/learning/EducationalProjectType@2x_dark.png diff --git a/python/educational-python/Edu-Python/resources/icons/com/jetbrains/edu/learning/EducationalProjectType_dark.png b/python/educational-core/resources/icons/com/jetbrains/edu/learning/EducationalProjectType_dark.png similarity index 100% rename from python/educational-python/Edu-Python/resources/icons/com/jetbrains/edu/learning/EducationalProjectType_dark.png rename to python/educational-core/resources/icons/com/jetbrains/edu/learning/EducationalProjectType_dark.png diff --git a/python/educational-core/src/icons/EducationalCoreIcons.java b/python/educational-core/src/icons/EducationalCoreIcons.java index 2bb06a4af580..7e107fd16b46 100644 --- a/python/educational-core/src/icons/EducationalCoreIcons.java +++ b/python/educational-core/src/icons/EducationalCoreIcons.java @@ -15,7 +15,9 @@ public class EducationalCoreIcons { public static final Icon CheckTask = load("/icons/com/jetbrains/edu/learning/CheckTask.png"); // 16x16 public static final Icon Course = load("/icons/com/jetbrains/edu/learning/Course.png"); // 16x16 + public static final Icon CourseCreationProjectType = load("/icons/com/jetbrains/edu/learning/CourseCreationProjectType.png"); // 16x16 public static final Icon CourseProgress = load("/icons/com/jetbrains/edu/learning/CourseProgress.png"); // 13x13 + public static final Icon EducationalProjectType = load("/icons/com/jetbrains/edu/learning/EducationalProjectType.png"); // 16x16 public static final Icon InterpreterGear = load("/icons/com/jetbrains/edu/learning/interpreterGear.png"); // 16x16 public static final Icon Lesson = load("/icons/com/jetbrains/edu/learning/Lesson.png"); // 16x16 public static final Icon LessonCompl = load("/icons/com/jetbrains/edu/learning/LessonCompl.png"); // 16x16 diff --git a/python/educational-python/Edu-Python/resources/META-INF/plugin.xml b/python/educational-python/Edu-Python/resources/META-INF/plugin.xml index 11426e39b9e9..21115f2e83b2 100644 --- a/python/educational-python/Edu-Python/resources/META-INF/plugin.xml +++ b/python/educational-python/Edu-Python/resources/META-INF/plugin.xml @@ -45,6 +45,11 @@ + + + + + diff --git a/python/educational-python/Edu-Python/src/com/jetbrains/edu/coursecreator/PyCCCreateCourseAction.java b/python/educational-python/Edu-Python/src/com/jetbrains/edu/coursecreator/PyCCCreateCourseAction.java new file mode 100644 index 000000000000..f38973c6e44c --- /dev/null +++ b/python/educational-python/Edu-Python/src/com/jetbrains/edu/coursecreator/PyCCCreateCourseAction.java @@ -0,0 +1,32 @@ +package com.jetbrains.edu.coursecreator; + +import com.intellij.ide.util.projectWizard.AbstractNewProjectDialog; +import com.intellij.openapi.actionSystem.AnAction; +import com.intellij.openapi.actionSystem.AnActionEvent; +import com.intellij.openapi.actionSystem.DefaultActionGroup; +import com.intellij.openapi.actionSystem.Presentation; +import com.jetbrains.edu.learning.StudySettings; +import icons.EducationalCoreIcons; + +public class PyCCCreateCourseAction extends AnAction { + public PyCCCreateCourseAction() { + super("Create New Course", "Create New Course", EducationalCoreIcons.EducationalProjectType); + } + + @Override + public void actionPerformed(AnActionEvent e) { + AbstractNewProjectDialog dialog = new AbstractNewProjectDialog() { + @Override + protected DefaultActionGroup createRootStep() { + return new PyCCCreateCourseProjectStep(); + } + }; + dialog.show(); + } + + @Override + public void update(AnActionEvent e) { + Presentation presentation = e.getPresentation(); + presentation.setEnabledAndVisible(StudySettings.getInstance().isCourseCreatorEnabled()); + } +} diff --git a/python/educational-python/Edu-Python/src/com/jetbrains/edu/coursecreator/PyCCCreateCourseProjectStep.java b/python/educational-python/Edu-Python/src/com/jetbrains/edu/coursecreator/PyCCCreateCourseProjectStep.java new file mode 100644 index 000000000000..4badb799a604 --- /dev/null +++ b/python/educational-python/Edu-Python/src/com/jetbrains/edu/coursecreator/PyCCCreateCourseProjectStep.java @@ -0,0 +1,30 @@ +package com.jetbrains.edu.coursecreator; + +import com.intellij.platform.DirectoryProjectGenerator; +import com.jetbrains.python.newProject.steps.PyCharmNewProjectStep; +import org.jetbrains.annotations.NotNull; + +class PyCCCreateCourseProjectStep extends PyCharmNewProjectStep { + + public PyCCCreateCourseProjectStep() { + super(new MyCustomization()); + } + + protected static class MyCustomization extends Customization { + private final PyCCProjectGenerator myGenerator = new PyCCProjectGenerator(); + public MyCustomization() { + } + + @NotNull + @Override + protected DirectoryProjectGenerator[] getProjectGenerators() { + return new DirectoryProjectGenerator[] {}; + } + + @NotNull + @Override + protected DirectoryProjectGenerator createEmptyProjectGenerator() { + return myGenerator; + } + } +} diff --git a/python/educational-python/Edu-Python/src/com/jetbrains/edu/coursecreator/PyCCProjectGenerator.java b/python/educational-python/Edu-Python/src/com/jetbrains/edu/coursecreator/PyCCProjectGenerator.java index 6d8c60deb37b..51e07a04b9fe 100644 --- a/python/educational-python/Edu-Python/src/com/jetbrains/edu/coursecreator/PyCCProjectGenerator.java +++ b/python/educational-python/Edu-Python/src/com/jetbrains/edu/coursecreator/PyCCProjectGenerator.java @@ -27,7 +27,7 @@ import com.jetbrains.python.PythonLanguage; import com.jetbrains.python.newProject.PyNewProjectSettings; import com.jetbrains.python.newProject.PythonProjectGenerator; import com.jetbrains.python.remote.PyProjectSynchronizer; -import icons.InteractiveLearningPythonIcons; +import icons.EducationalCoreIcons; import org.jetbrains.annotations.Nls; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -48,7 +48,7 @@ public class PyCCProjectGenerator extends PythonProjectGenerator { - ExtensionsArea rootArea = Extensions.getArea(null); - final boolean creatorEnabled = StudySettings.getInstance().isCourseCreatorEnabled(); - final ExtensionPoint extensionPoint = rootArea.getExtensionPoint(DirectoryProjectGenerator.EP_NAME); - if (creatorEnabled) { - if (!extensionPoint.hasExtension(myGenerator)) { - extensionPoint.registerExtension(myGenerator); - } - } - else { - if (extensionPoint.hasExtension(myGenerator)) { - extensionPoint.unregisterExtension(myGenerator); - } - } - }); } } diff --git a/python/educational-python/Edu-Python/src/icons/InteractiveLearningPythonIcons.java b/python/educational-python/Edu-Python/src/icons/InteractiveLearningPythonIcons.java deleted file mode 100644 index 62511bd72896..000000000000 --- a/python/educational-python/Edu-Python/src/icons/InteractiveLearningPythonIcons.java +++ /dev/null @@ -1,18 +0,0 @@ -package icons; - -import com.intellij.openapi.util.IconLoader; - -import javax.swing.*; - -/** - * NOTE THIS FILE IS AUTO-GENERATED - * DO NOT EDIT IT BY HAND, run build/scripts/icons.gant instead - */ -public class InteractiveLearningPythonIcons { - private static Icon load(String path) { - return IconLoader.getIcon(path, InteractiveLearningPythonIcons.class); - } - - public static final Icon CourseCreationProjectType = load("/icons/com/jetbrains/edu/learning/CourseCreationProjectType.png"); // 16x16 - public static final Icon EducationalProjectType = load("/icons/com/jetbrains/edu/learning/EducationalProjectType.png"); // 16x16 -} diff --git a/python/educational-python/src/com/jetbrains/python/edu/PyCharmEduInitialConfigurator.java b/python/educational-python/src/com/jetbrains/python/edu/PyCharmEduInitialConfigurator.java index 0876735b17b3..d46c145e5fd7 100644 --- a/python/educational-python/src/com/jetbrains/python/edu/PyCharmEduInitialConfigurator.java +++ b/python/educational-python/src/com/jetbrains/python/edu/PyCharmEduInitialConfigurator.java @@ -61,6 +61,7 @@ import com.intellij.openapi.project.ex.ProjectManagerEx; import com.intellij.openapi.startup.StartupManager; import com.intellij.openapi.util.Disposer; import com.intellij.openapi.util.Key; +import com.intellij.openapi.util.Ref; import com.intellij.openapi.vfs.VfsUtil; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.openapi.wm.*; @@ -201,11 +202,15 @@ public class PyCharmEduInitialConfigurator { if (!propertiesComponent.isValueSet(DISPLAYED_PROPERTY)) { GeneralSettings.getInstance().setShowTipsOnStartup(false); patchKeymap(); - showInitialConfigurationDialog(); propertiesComponent.setValue(DISPLAYED_PROPERTY, "true"); } }); } + + @Override + public void appFrameCreated(String[] commandLineArgs, @NotNull Ref willOpenProject) { + showInitialConfigurationDialog(); + } }); }