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();
+ }
});
}