diff --git a/.idea/modules.xml b/.idea/modules.xml index 2805b881df85..101efac37338 100644 --- a/.idea/modules.xml +++ b/.idea/modules.xml @@ -119,6 +119,7 @@ + @@ -145,6 +146,8 @@ + + diff --git a/java/compiler/impl/src/com/intellij/packaging/impl/artifacts/ArtifactUtil.java b/java/compiler/impl/src/com/intellij/packaging/impl/artifacts/ArtifactUtil.java index 5752c3f5f77b..3fcfc8df5529 100644 --- a/java/compiler/impl/src/com/intellij/packaging/impl/artifacts/ArtifactUtil.java +++ b/java/compiler/impl/src/com/intellij/packaging/impl/artifacts/ArtifactUtil.java @@ -26,10 +26,7 @@ import com.intellij.openapi.util.io.FileUtil; import com.intellij.openapi.util.text.StringUtil; import com.intellij.openapi.vfs.VfsUtilCore; import com.intellij.openapi.vfs.VirtualFile; -import com.intellij.packaging.artifacts.Artifact; -import com.intellij.packaging.artifacts.ArtifactManager; -import com.intellij.packaging.artifacts.ArtifactProperties; -import com.intellij.packaging.artifacts.ArtifactType; +import com.intellij.packaging.artifacts.*; import com.intellij.packaging.elements.*; import com.intellij.packaging.impl.elements.*; import com.intellij.util.PathUtil; @@ -599,5 +596,31 @@ public class ArtifactUtil { public static String suggestArtifactFileName(String artifactName) { return PathUtil.suggestFileName(artifactName, true, true); } + + @Nullable + public static Artifact addArtifact(@NotNull ModifiableArtifactModel artifactModel, + @NotNull ArtifactType type, + @NotNull ArtifactTemplate artifactTemplate) { + final ArtifactTemplate.NewArtifactConfiguration configuration = artifactTemplate.createArtifact(); + if (configuration == null) { + return null; + } + + final String baseName = configuration.getArtifactName(); + String name = baseName; + int i = 2; + while (artifactModel.findArtifact(name) != null) { + name = baseName + i; + i++; + } + + ArtifactType actualType = configuration.getArtifactType(); + if (actualType == null) { + actualType = type; + } + final ModifiableArtifact artifact = artifactModel.addArtifact(name, actualType, configuration.getRootElement()); + artifactTemplate.setUpArtifact(artifact, configuration); + return artifact; + } } diff --git a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/artifacts/ArtifactsStructureConfigurable.java b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/artifacts/ArtifactsStructureConfigurable.java index 52b601e4d9fe..5deea9c75f74 100644 --- a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/artifacts/ArtifactsStructureConfigurable.java +++ b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/artifacts/ArtifactsStructureConfigurable.java @@ -286,25 +286,7 @@ public class ArtifactsStructureConfigurable extends BaseStructureConfigurable { } private void addArtifact(@NotNull ArtifactType type, @NotNull ArtifactTemplate artifactTemplate) { - final ArtifactTemplate.NewArtifactConfiguration configuration = artifactTemplate.createArtifact(); - if (configuration == null) { - return; - } - - final String baseName = configuration.getArtifactName(); - String name = baseName; - int i = 2; - while (myPackagingEditorContext.getArtifactModel().findArtifact(name) != null) { - name = baseName + i; - i++; - } - - ArtifactType actualType = configuration.getArtifactType(); - if (actualType == null) { - actualType = type; - } - final ModifiableArtifact artifact = myPackagingEditorContext.getOrCreateModifiableArtifactModel().addArtifact(name, actualType, configuration.getRootElement()); - artifactTemplate.setUpArtifact(artifact, configuration); + Artifact artifact = ArtifactUtil.addArtifact(myPackagingEditorContext.getOrCreateModifiableArtifactModel(), type, artifactTemplate); selectNodeInTree(findNodeByObject(myRoot, artifact)); } diff --git a/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightControlFlowUtil.java b/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightControlFlowUtil.java index 602e3fea2cc2..a4ea7087af5a 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightControlFlowUtil.java +++ b/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightControlFlowUtil.java @@ -696,14 +696,17 @@ public class HighlightControlFlowUtil { return true; } - if (ControlFlowUtil.isVariableDefinitelyAssigned(variable, controlFlow)) { - final Collection initializedTwice = ControlFlowUtil.getInitializedTwice(controlFlow); - effectivelyFinal = !initializedTwice.contains(new ControlFlowUtil.VariableInfo(variable, null)); - if (effectivelyFinal) { - effectivelyFinal = notAccessedForWriting(variable, new LocalSearchScope(scope)); + final List readBeforeWriteLocals = ControlFlowUtil.getReadBeforeWriteLocals(controlFlow); + for (PsiReferenceExpression expression : readBeforeWriteLocals) { + if (expression.resolve() == variable) { + return PsiUtil.isAccessedForReading(expression); } - } else { - effectivelyFinal = false; + } + + final Collection initializedTwice = ControlFlowUtil.getInitializedTwice(controlFlow); + effectivelyFinal = !initializedTwice.contains(new ControlFlowUtil.VariableInfo(variable, null)); + if (effectivelyFinal) { + effectivelyFinal = notAccessedForWriting(variable, new LocalSearchScope(scope)); } } return effectivelyFinal; diff --git a/java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/ContractInference.java b/java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/ContractInference.java index 17f9426efed9..bd207e58a0fe 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/ContractInference.java +++ b/java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/ContractInference.java @@ -148,6 +148,9 @@ class ContractInferenceInterpreter { } else { answer = withConstraint(answer, paramIndex, argConstraint); + if (answer == null) { + return null; + } } } } diff --git a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/AnonymousTargetClassPreselectionUtil.java b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/AnonymousTargetClassPreselectionUtil.java new file mode 100644 index 000000000000..421c43cabe88 --- /dev/null +++ b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/AnonymousTargetClassPreselectionUtil.java @@ -0,0 +1,45 @@ +/* + * Copyright 2000-2014 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.intellij.codeInsight.daemon.impl.quickfix; + +import com.intellij.ide.util.PropertiesComponent; +import com.intellij.psi.PsiAnonymousClass; +import com.intellij.psi.PsiClass; +import org.jetbrains.annotations.Nullable; + +import java.util.Collection; + +public class AnonymousTargetClassPreselectionUtil { + private static final String PRESELECT_ANONYMOUS = "create.member.preselect.anonymous"; + + public static void rememberSelection(PsiClass aClass, PsiClass firstClass) { + if (firstClass instanceof PsiAnonymousClass) { + PropertiesComponent.getInstance().setValue(PRESELECT_ANONYMOUS, String.valueOf(aClass == firstClass)); + } + } + + @Nullable + public static PsiClass getPreselection(Collection classes, PsiClass firstClass) { + if (firstClass instanceof PsiAnonymousClass && !PropertiesComponent.getInstance().getBoolean(PRESELECT_ANONYMOUS, true)) { + for (PsiClass aClass : classes) { + if (!(aClass instanceof PsiAnonymousClass)) { + return aClass; + } + } + } + return null; + } +} diff --git a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/CreateFromUsageBaseFix.java b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/CreateFromUsageBaseFix.java index 09b83e2a489f..abe9368374e8 100644 --- a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/CreateFromUsageBaseFix.java +++ b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/CreateFromUsageBaseFix.java @@ -119,7 +119,8 @@ public abstract class CreateFromUsageBaseFix extends BaseIntentionAction { protected abstract PsiElement getElement(); private void chooseTargetClass(List classes, final Editor editor) { - final Project project = classes.get(0).getProject(); + final PsiClass firstClass = classes.get(0); + final Project project = firstClass.getProject(); final JList list = new JBList(classes); PsiElementListCellRenderer renderer = new PsiClassListCellRenderer(); @@ -128,12 +129,18 @@ public abstract class CreateFromUsageBaseFix extends BaseIntentionAction { final PopupChooserBuilder builder = new PopupChooserBuilder(list); renderer.installSpeedSearch(builder); + final PsiClass preselection = AnonymousTargetClassPreselectionUtil.getPreselection(classes, firstClass); + if (preselection != null) { + list.setSelectedValue(preselection, true); + } + Runnable runnable = new Runnable() { @Override public void run() { int index = list.getSelectedIndex(); if (index < 0) return; final PsiClass aClass = (PsiClass) list.getSelectedValue(); + AnonymousTargetClassPreselectionUtil.rememberSelection(aClass, firstClass); CommandProcessor.getInstance().executeCommand(project, new Runnable() { @Override public void run() { diff --git a/java/java-impl/src/com/intellij/refactoring/extractMethod/ExtractMethodProcessor.java b/java/java-impl/src/com/intellij/refactoring/extractMethod/ExtractMethodProcessor.java index 75544f9d8ab9..ce52274140bb 100644 --- a/java/java-impl/src/com/intellij/refactoring/extractMethod/ExtractMethodProcessor.java +++ b/java/java-impl/src/com/intellij/refactoring/extractMethod/ExtractMethodProcessor.java @@ -19,6 +19,7 @@ import com.intellij.codeInsight.ChangeContextUtil; import com.intellij.codeInsight.ExceptionUtil; import com.intellij.codeInsight.NullableNotNullManager; import com.intellij.codeInsight.daemon.impl.analysis.JavaHighlightUtil; +import com.intellij.codeInsight.daemon.impl.quickfix.AnonymousTargetClassPreselectionUtil; import com.intellij.codeInsight.highlighting.HighlightManager; import com.intellij.codeInsight.intention.impl.AddNullableAnnotationFix; import com.intellij.codeInsight.navigation.NavigationUtil; @@ -1133,6 +1134,7 @@ public class ExtractMethodProcessor implements MatchProvider { final PsiElementProcessor processor = new PsiElementProcessor() { @Override public boolean execute(@NotNull PsiClass selectedClass) { + AnonymousTargetClassPreselectionUtil.rememberSelection(selectedClass, myTargetClass); final List array = classes.get(selectedClass); myNeedChangeContext = myTargetClass != selectedClass; myTargetClass = selectedClass; @@ -1184,7 +1186,9 @@ public class ExtractMethodProcessor implements MatchProvider { if (classes.size() > 1) { final PsiClass[] psiClasses = classes.keySet().toArray(new PsiClass[classes.size()]); - NavigationUtil.getPsiElementPopup(psiClasses, new PsiClassListCellRenderer(), "Choose Destination Class", processor).showInBestPositionFor(myEditor); + final PsiClass preselection = AnonymousTargetClassPreselectionUtil.getPreselection(classes.keySet(), psiClasses[0]); + NavigationUtil.getPsiElementPopup(psiClasses, new PsiClassListCellRenderer(), "Choose Destination Class", processor, preselection) + .showInBestPositionFor(myEditor); return true; } } diff --git a/java/java-impl/src/com/intellij/refactoring/introduceField/BaseExpressionToFieldHandler.java b/java/java-impl/src/com/intellij/refactoring/introduceField/BaseExpressionToFieldHandler.java index a751acea42df..75473959ddcc 100644 --- a/java/java-impl/src/com/intellij/refactoring/introduceField/BaseExpressionToFieldHandler.java +++ b/java/java-impl/src/com/intellij/refactoring/introduceField/BaseExpressionToFieldHandler.java @@ -27,6 +27,7 @@ package com.intellij.refactoring.introduceField; import com.intellij.codeInsight.AnnotationUtil; import com.intellij.codeInsight.ChangeContextUtil; import com.intellij.codeInsight.TestFrameworks; +import com.intellij.codeInsight.daemon.impl.quickfix.AnonymousTargetClassPreselectionUtil; import com.intellij.codeInsight.highlighting.HighlightManager; import com.intellij.codeInsight.lookup.LookupManager; import com.intellij.codeInsight.navigation.NavigationUtil; @@ -129,18 +130,13 @@ public abstract class BaseExpressionToFieldHandler extends IntroduceHandlerBase return !convertExpressionToField(selectedExpr, editor, file, project, tempType); } else { - PsiClass selection = null; - for (PsiClass psiClass : classes) { - if (!(psiClass instanceof PsiAnonymousClass)) { - selection = psiClass; - break; - } - } + PsiClass selection = AnonymousTargetClassPreselectionUtil.getPreselection(classes, myParentClass); NavigationUtil.getPsiElementPopup(classes.toArray(new PsiClass[classes.size()]), new PsiClassListCellRenderer(), "Choose class to introduce " + (myIsConstant ? "constant" : "field"), new PsiElementProcessor() { @Override public boolean execute(@NotNull PsiClass aClass) { + AnonymousTargetClassPreselectionUtil.rememberSelection(aClass, myParentClass); myParentClass = aClass; convertExpressionToField(selectedExpr, editor, file, project, tempType); return false; diff --git a/java/java-impl/src/com/intellij/refactoring/introduceField/LocalToFieldHandler.java b/java/java-impl/src/com/intellij/refactoring/introduceField/LocalToFieldHandler.java index 5b5c39fb10a8..0b31eedf8be0 100644 --- a/java/java-impl/src/com/intellij/refactoring/introduceField/LocalToFieldHandler.java +++ b/java/java-impl/src/com/intellij/refactoring/introduceField/LocalToFieldHandler.java @@ -18,6 +18,7 @@ package com.intellij.refactoring.introduceField; import com.intellij.codeInsight.ChangeContextUtil; import com.intellij.codeInsight.CodeInsightUtil; import com.intellij.codeInsight.TestFrameworks; +import com.intellij.codeInsight.daemon.impl.quickfix.AnonymousTargetClassPreselectionUtil; import com.intellij.codeInsight.navigation.NavigationUtil; import com.intellij.ide.util.PsiClassListCellRenderer; import com.intellij.openapi.application.ApplicationManager; @@ -66,7 +67,7 @@ public abstract class LocalToFieldHandler { public boolean convertLocalToField(final PsiLocalVariable local, final Editor editor) { boolean tempIsStatic = myIsConstant; PsiElement parent = local.getParent(); - List classes = new ArrayList(); + final List classes = new ArrayList(); while (parent != null && parent.getContainingFile() != null) { if (parent instanceof PsiClass && !(myIsConstant && parent instanceof PsiAnonymousClass)) { classes.add((PsiClass)parent); @@ -90,13 +91,16 @@ public abstract class LocalToFieldHandler { if (convertLocalToField(local, classes.get(getChosenClassIndex(classes)), editor, tempIsStatic)) return false; } else { final boolean isStatic = tempIsStatic; + final PsiClass firstClass = classes.get(0); + final PsiClass preselection = AnonymousTargetClassPreselectionUtil.getPreselection(classes, firstClass); NavigationUtil.getPsiElementPopup(classes.toArray(new PsiClass[classes.size()]), new PsiClassListCellRenderer(), "Choose class to introduce " + (myIsConstant ? "constant" : "field"), new PsiElementProcessor() { @Override public boolean execute(@NotNull PsiClass aClass) { + AnonymousTargetClassPreselectionUtil.rememberSelection(aClass, aClass); convertLocalToField(local, aClass, editor, isStatic); return false; } - }).showInBestPositionFor(editor); + }, preselection).showInBestPositionFor(editor); } return true; diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/lambda/highlighting/EffectiveFinal.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/lambda/highlighting/EffectiveFinal.java index 254ec7191a47..92b268394994 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/lambda/highlighting/EffectiveFinal.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/lambda/highlighting/EffectiveFinal.java @@ -39,7 +39,7 @@ public class XXX { void m3(int x, boolean cond) { int y; if (cond) y = 1; - foo(() -> x+y); + foo(() -> x+y); } void m4(int x, boolean cond) { @@ -128,3 +128,17 @@ class IDEA114737 { }; } } + +class IDEA128196 { + void a() { + int value; + + try { + value = 1; + } catch (Exception e) { + return; + } + + new Thread(() -> System.out.println(value)); + } +} diff --git a/java/remote-servers/impl/remote-servers-java-impl.iml b/java/remote-servers/impl/remote-servers-java-impl.iml index 6999e2deac71..15781473aa45 100644 --- a/java/remote-servers/impl/remote-servers-java-impl.iml +++ b/java/remote-servers/impl/remote-servers-java-impl.iml @@ -15,6 +15,7 @@ + diff --git a/java/remote-servers/impl/src/META-INF/RemoteServersJava.xml b/java/remote-servers/impl/src/META-INF/RemoteServersJava.xml index 24a0776ccd29..692199e3bb2c 100644 --- a/java/remote-servers/impl/src/META-INF/RemoteServersJava.xml +++ b/java/remote-servers/impl/src/META-INF/RemoteServersJava.xml @@ -2,7 +2,7 @@ + interface="com.intellij.remoteServer.impl.module.CloudModuleBuilderContributionFactory"/> diff --git a/java/remote-servers/impl/src/com/intellij/remoteServer/impl/module/CloudApplicationConfigurable.java b/java/remote-servers/impl/src/com/intellij/remoteServer/impl/module/CloudApplicationConfigurable.java index 14bd043a7f23..e235eeeb55aa 100644 --- a/java/remote-servers/impl/src/com/intellij/remoteServer/impl/module/CloudApplicationConfigurable.java +++ b/java/remote-servers/impl/src/com/intellij/remoteServer/impl/module/CloudApplicationConfigurable.java @@ -15,152 +15,20 @@ */ package com.intellij.remoteServer.impl.module; -import com.intellij.openapi.Disposable; import com.intellij.openapi.options.ConfigurationException; -import com.intellij.openapi.project.Project; -import com.intellij.openapi.util.Disposer; import com.intellij.remoteServer.configuration.RemoteServer; -import com.intellij.remoteServer.runtime.Deployment; -import com.intellij.remoteServer.runtime.ServerConnection; -import com.intellij.remoteServer.runtime.ServerConnector; -import com.intellij.remoteServer.runtime.deployment.ServerRuntimeInstance; -import com.intellij.remoteServer.util.*; -import com.intellij.util.concurrency.Semaphore; -import com.intellij.util.ui.UIUtil; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; -import javax.swing.*; -import java.util.Collection; -import java.util.concurrent.atomic.AtomicReference; +import java.awt.*; -public abstract class CloudApplicationConfigurable< - SC extends CloudConfigurationBase, - DC extends CloudDeploymentNameConfiguration, - SR extends CloudMultiSourceServerRuntimeInstance, - AC extends CloudApplicationConfiguration> { +public abstract class CloudApplicationConfigurable { - private final Project myProject; - private final Disposable myParentDisposable; + public abstract Component getComponent(); - private DelayedRunner myRunner; + public abstract void setAccount(RemoteServer account); - private RemoteServer myAccount; - - public CloudApplicationConfigurable(@Nullable Project project, Disposable parentDisposable) { - myProject = project; - myParentDisposable = parentDisposable; - } - - public void setAccount(RemoteServer account) { - myAccount = account; - clearCloudData(); - } - - protected RemoteServer getAccount() { - return (RemoteServer)myAccount; - } - - public JComponent getComponent() { - JComponent result = getMainPanel(); - if (myRunner == null) { - myRunner = new DelayedRunner(result) { - - private RemoteServer myPreviousAccount; - - @Override - protected boolean wasChanged() { - boolean result = myPreviousAccount != myAccount; - if (result) { - myPreviousAccount = myAccount; - } - return result; - } - - @Override - protected void run() { - loadCloudData(); - } - }; - Disposer.register(myParentDisposable, myRunner); - } - return result; - } - - protected void clearCloudData() { - getExistingComboBox().removeAllItems(); - } - - protected void loadCloudData() { - new ConnectionTask>("Loading existing applications list") { - - @Override - protected void run(final ServerConnection connection, - final Semaphore semaphore, - final AtomicReference> result) { - connection.connectIfNeeded(new ServerConnector.ConnectionCallback() { - - @Override - public void connected(@NotNull ServerRuntimeInstance serverRuntimeInstance) { - connection.computeDeployments(new Runnable() { - - @Override - public void run() { - result.set(connection.getDeployments()); - semaphore.up(); - UIUtil.invokeLaterIfNeeded(new Runnable() { - @Override - public void run() { - if (!Disposer.isDisposed(myParentDisposable)) { - setupExistingApplications(result.get()); - } - } - }); - } - }); - } - - @Override - public void errorOccurred(@NotNull String errorMessage) { - runtimeErrorOccurred(errorMessage); - semaphore.up(); - } - }); - } - - @Override - protected Collection run(SR serverRuntimeInstance) throws ServerRuntimeException { - return null; - } - }.performAsync(); - } - - private void setupExistingApplications(Collection deployments) { - JComboBox existingComboBox = getExistingComboBox(); - existingComboBox.removeAllItems(); - for (Deployment deployment : deployments) { - existingComboBox.addItem(deployment.getName()); - } - } - - protected Project getProject() { - return myProject; - } - - protected abstract JComboBox getExistingComboBox(); - - protected abstract JComponent getMainPanel(); - - public abstract AC createConfiguration(); + public abstract CloudApplicationConfiguration createConfiguration(); public abstract void validate() throws ConfigurationException; - - protected abstract class ConnectionTask extends CloudConnectionTask { - - public ConnectionTask(String title) { - super(myProject, title, CloudApplicationConfigurable.this.getAccount()); - } - } } diff --git a/java/remote-servers/impl/src/com/intellij/remoteServer/impl/module/CloudApplicationConfiguration.java b/java/remote-servers/impl/src/com/intellij/remoteServer/impl/module/CloudApplicationConfiguration.java index 9af0f1ad472b..af9fa723e82a 100644 --- a/java/remote-servers/impl/src/com/intellij/remoteServer/impl/module/CloudApplicationConfiguration.java +++ b/java/remote-servers/impl/src/com/intellij/remoteServer/impl/module/CloudApplicationConfiguration.java @@ -18,19 +18,4 @@ package com.intellij.remoteServer.impl.module; public abstract class CloudApplicationConfiguration { - private boolean myExisting; - private final String myExistingAppName; - - protected CloudApplicationConfiguration(boolean existing, String existingAppName) { - myExisting = existing; - myExistingAppName = existingAppName; - } - - public boolean isExisting() { - return myExisting; - } - - public String getExistingAppName() { - return myExistingAppName; - } } diff --git a/java/remote-servers/impl/src/com/intellij/remoteServer/impl/module/CloudModuleBuilder.java b/java/remote-servers/impl/src/com/intellij/remoteServer/impl/module/CloudModuleBuilder.java index 4aa8d60bcea4..62e256c14c8e 100644 --- a/java/remote-servers/impl/src/com/intellij/remoteServer/impl/module/CloudModuleBuilder.java +++ b/java/remote-servers/impl/src/com/intellij/remoteServer/impl/module/CloudModuleBuilder.java @@ -16,6 +16,7 @@ package com.intellij.remoteServer.impl.module; import com.intellij.icons.AllIcons; +import com.intellij.ide.util.newProjectWizard.impl.FrameworkSupportModelBase; import com.intellij.ide.util.projectWizard.JavaModuleBuilder; import com.intellij.ide.util.projectWizard.ModuleBuilderListener; import com.intellij.ide.util.projectWizard.ModuleWizardStep; @@ -23,20 +24,42 @@ import com.intellij.ide.util.projectWizard.WizardContext; import com.intellij.openapi.Disposable; import com.intellij.openapi.module.JavaModuleType; import com.intellij.openapi.module.Module; +import com.intellij.openapi.project.Project; +import com.intellij.openapi.roots.ModifiableRootModel; import com.intellij.openapi.roots.ui.configuration.ModulesProvider; +import com.intellij.openapi.roots.ui.configuration.projectRoot.LibrariesContainer; +import com.intellij.openapi.roots.ui.configuration.projectRoot.LibrariesContainerFactory; +import com.intellij.openapi.util.text.StringUtil; +import com.intellij.remoteServer.ServerType; import com.intellij.remoteServer.configuration.RemoteServer; +import com.intellij.util.containers.hash.HashMap; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import javax.swing.*; +import java.util.Map; public class CloudModuleBuilder extends JavaModuleBuilder { private RemoteServer myAccount; private CloudApplicationConfiguration myApplicationConfiguration; + private FrameworkSupportModelBase myFrameworkSupportModel; + + private Map, CloudModuleBuilderContribution> myCloudType2Contribution; + private Project myProject; public CloudModuleBuilder() { + myCloudType2Contribution = new HashMap, CloudModuleBuilderContribution>(); + + ModuleConfigurationUpdater configurationUpdater = new ModuleConfigurationUpdater() { + + public void update(@NotNull final Module module, @NotNull final ModifiableRootModel rootModel) { + preConfigureModule(module, rootModel); + } + }; + addModuleConfigurationUpdater(configurationUpdater); + addListener(new ModuleBuilderListener() { @Override @@ -93,7 +116,8 @@ public class CloudModuleBuilder extends JavaModuleBuilder { @Nullable @Override public ModuleWizardStep getCustomOptionsStep(WizardContext context, Disposable parentDisposable) { - return new CloudModuleWizardStep(this, context.getProject(), parentDisposable); + myProject = context.getProject(); + return new CloudModuleWizardStep(this, myProject, parentDisposable); } public void setAccount(RemoteServer account) { @@ -108,7 +132,43 @@ public class CloudModuleBuilder extends JavaModuleBuilder { myApplicationConfiguration = applicationConfiguration; } + public CloudApplicationConfiguration getApplicationConfiguration() { + return myApplicationConfiguration; + } + + public CloudModuleBuilderContribution getContribution(ServerType cloudType) { + CloudModuleBuilderContribution result = myCloudType2Contribution.get(cloudType); + if (result == null) { + result = CloudModuleBuilderContributionFactory.getInstanceByType(cloudType).createContribution(this); + myCloudType2Contribution.put(cloudType, result); + } + return result; + } + + private CloudModuleBuilderContribution getContribution() { + return getContribution(myAccount.getType()); + } + + private void preConfigureModule(Module module, ModifiableRootModel model) { + getContribution().preConfigureModule(module, model); + } + private void configureModule(final Module module) { - CloudModuleBuilderContribution.getInstanceByType(myAccount.getType()).configureModule(module, myAccount, myApplicationConfiguration); + getContribution().configureModule(module); + } + + public FrameworkSupportModelBase getFrameworkSupportModel() { + if (myFrameworkSupportModel == null) { + final LibrariesContainer librariesContainer = LibrariesContainerFactory.createContainer(myProject); + myFrameworkSupportModel = new FrameworkSupportModelBase(myProject, this, librariesContainer) { + + @NotNull + @Override + public String getBaseDirectoryForLibrariesPath() { + return StringUtil.notNullize(getContentEntryPath()); + } + }; + } + return myFrameworkSupportModel; } } diff --git a/java/remote-servers/impl/src/com/intellij/remoteServer/impl/module/CloudModuleBuilderContribution.java b/java/remote-servers/impl/src/com/intellij/remoteServer/impl/module/CloudModuleBuilderContribution.java index 6643c89cc1c4..dd2d9d9af563 100644 --- a/java/remote-servers/impl/src/com/intellij/remoteServer/impl/module/CloudModuleBuilderContribution.java +++ b/java/remote-servers/impl/src/com/intellij/remoteServer/impl/module/CloudModuleBuilderContribution.java @@ -16,33 +16,51 @@ package com.intellij.remoteServer.impl.module; import com.intellij.openapi.Disposable; -import com.intellij.openapi.extensions.ExtensionPointName; import com.intellij.openapi.module.Module; import com.intellij.openapi.project.Project; +import com.intellij.openapi.roots.ModifiableRootModel; import com.intellij.remoteServer.ServerType; -import com.intellij.remoteServer.configuration.RemoteServer; +import com.intellij.remoteServer.configuration.deployment.DeploymentConfiguration; +import com.intellij.remoteServer.configuration.deployment.DeploymentSource; import org.jetbrains.annotations.Nullable; public abstract class CloudModuleBuilderContribution { - public static final ExtensionPointName EP_NAME - = ExtensionPointName.create("com.intellij.remoteServer.moduleBuilderContribution"); + private final CloudModuleBuilder myModuleBuilder; - public abstract ServerType getCloudType(); + private final ServerType myCloudType; + private CloudApplicationConfigurable myApplicationConfigurable; - public abstract CloudApplicationConfigurable createApplicationConfigurable(@Nullable Project project, Disposable parentDisposable); + public CloudModuleBuilderContribution(CloudModuleBuilder moduleBuilder, ServerType cloudType) { + myModuleBuilder = moduleBuilder; + myCloudType = cloudType; + } - public abstract void configureModule(Module module, - RemoteServer account, - CloudApplicationConfiguration configuration); + protected CloudModuleBuilder getModuleBuilder() { + return myModuleBuilder; + } - public static CloudModuleBuilderContribution getInstanceByType(ServerType cloudType) { - for (CloudModuleBuilderContribution contribution : EP_NAME.getExtensions()) { - if (contribution.getCloudType() == cloudType) { - return contribution; - } + protected ServerType getCloudType() { + return myCloudType; + } + + public CloudApplicationConfigurable getApplicationConfigurable(@Nullable Project project, Disposable parentDisposable) { + if (myApplicationConfigurable == null) { + myApplicationConfigurable = createApplicationConfigurable(project, parentDisposable); } - return null; + return myApplicationConfigurable; + } + + public void preConfigureModule(Module module, ModifiableRootModel model) { + + } + + public abstract void configureModule(Module module); + + protected abstract CloudApplicationConfigurable createApplicationConfigurable(@Nullable Project project, Disposable parentDisposable); + + protected DeploymentConfiguration createDeploymentConfiguration(DeploymentSource deploymentSource) { + return myCloudType.createDeploymentConfigurator(null).createDefaultConfiguration(deploymentSource); } } diff --git a/java/remote-servers/impl/src/com/intellij/remoteServer/impl/module/CloudModuleBuilderContributionBase.java b/java/remote-servers/impl/src/com/intellij/remoteServer/impl/module/CloudModuleBuilderContributionBase.java deleted file mode 100644 index 6a927d97bb93..000000000000 --- a/java/remote-servers/impl/src/com/intellij/remoteServer/impl/module/CloudModuleBuilderContributionBase.java +++ /dev/null @@ -1,142 +0,0 @@ -/* - * Copyright 2000-2014 JetBrains s.r.o. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.intellij.remoteServer.impl.module; - -import com.intellij.execution.RunManagerEx; -import com.intellij.execution.RunnerAndConfigurationSettings; -import com.intellij.execution.configurations.ConfigurationType; -import com.intellij.openapi.Disposable; -import com.intellij.openapi.module.Module; -import com.intellij.openapi.module.ModulePointer; -import com.intellij.openapi.module.ModulePointerManager; -import com.intellij.openapi.project.Project; -import com.intellij.openapi.ui.MessageType; -import com.intellij.remoteServer.ServerType; -import com.intellij.remoteServer.configuration.RemoteServer; -import com.intellij.remoteServer.impl.configuration.deployment.DeployToServerConfigurationType; -import com.intellij.remoteServer.impl.configuration.deployment.DeployToServerRunConfiguration; -import com.intellij.remoteServer.impl.configuration.deployment.ModuleDeploymentSourceImpl; -import com.intellij.remoteServer.util.*; -import com.intellij.remoteServer.util.ssh.SshKeyChecker; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; - - -public abstract class CloudModuleBuilderContributionBase< - SC extends CloudConfigurationBase, - DC extends CloudDeploymentNameConfiguration, - AC extends CloudApplicationConfiguration, - SR extends CloudMultiSourceServerRuntimeInstance> - extends CloudModuleBuilderContribution { - - @Override - public void configureModule(Module module, - RemoteServer account, - CloudApplicationConfiguration applicationConfiguration) { - RemoteServer castedAccount = (RemoteServer)account; - final AC castedApplicationConfiguration = (AC)applicationConfiguration; - - DC deploymentConfiguration = createDeploymentConfiguration(); - - if (applicationConfiguration.isExisting()) { - deploymentConfiguration.setDefaultDeploymentName(false); - deploymentConfiguration.setDeploymentName(applicationConfiguration.getExistingAppName()); - } - - final DeployToServerRunConfiguration runConfiguration = createRunConfiguration(module, castedAccount, deploymentConfiguration); - - final String cloudName = account.getType().getPresentableName(); - final Project project = module.getProject(); - new CloudConnectionTask(project, CloudBundle.getText("cloud.support", cloudName), castedAccount) { - - CloudNotifier myNotifier = new CloudNotifier(cloudName); - - boolean myFirstAttempt = true; - - @Override - protected Object run(SR serverRuntime) throws ServerRuntimeException { - doConfigureModule(castedApplicationConfiguration, runConfiguration, myFirstAttempt, serverRuntime); - myNotifier.showMessage(CloudBundle.getText("cloud.support.added", cloudName), MessageType.INFO); - return null; - } - - @Override - protected void runtimeErrorOccurred(@NotNull String errorMessage) { - myFirstAttempt = false; - new SshKeyChecker().checkServerError(errorMessage, myNotifier, project, this); - } - }.performAsync(); - } - - private DeployToServerRunConfiguration createRunConfiguration(Module module, - RemoteServer server, - DC deploymentConfiguration) { - Project project = module.getProject(); - - String serverName = server.getName(); - - String name = generateRunConfigurationName(serverName, module.getName()); - - final RunManagerEx runManager = RunManagerEx.getInstanceEx(project); - final RunnerAndConfigurationSettings runSettings - = runManager.createRunConfiguration(name, getRunConfigurationType().getConfigurationFactories()[0]); - - final DeployToServerRunConfiguration result = (DeployToServerRunConfiguration)runSettings.getConfiguration(); - - result.setServerName(serverName); - - final ModulePointer modulePointer = ModulePointerManager.getInstance(project).create(module); - result.setDeploymentSource(new ModuleDeploymentSourceImpl(modulePointer)); - - result.setDeploymentConfiguration(deploymentConfiguration); - - runManager.addConfiguration(runSettings, false); - runManager.setSelectedConfiguration(runSettings); - - return result; - } - - private static String generateRunConfigurationName(String serverName, String moduleName) { - return CloudBundle.getText("run.configuration.name", serverName, moduleName); - } - - private DeployToServerConfigurationType getRunConfigurationType() { - String id = DeployToServerConfigurationType.getId(getCloudType()); - for (ConfigurationType configurationType : ConfigurationType.CONFIGURATION_TYPE_EP.getExtensions()) { - if (configurationType instanceof DeployToServerConfigurationType) { - DeployToServerConfigurationType deployConfigurationType = (DeployToServerConfigurationType)configurationType; - if (deployConfigurationType.getId().equals(id)) { - return deployConfigurationType; - } - } - } - return null; - } - - @Override - public abstract ServerType getCloudType(); - - @Override - public abstract CloudApplicationConfigurable createApplicationConfigurable(@Nullable Project project, - Disposable parentDisposable); - - protected abstract DC createDeploymentConfiguration(); - - protected abstract void doConfigureModule(AC applicationConfiguration, - DeployToServerRunConfiguration runConfiguration, - boolean firstAttempt, - SR serverRuntime) throws ServerRuntimeException; -} diff --git a/java/remote-servers/impl/src/com/intellij/remoteServer/impl/module/CloudModuleBuilderContributionFactory.java b/java/remote-servers/impl/src/com/intellij/remoteServer/impl/module/CloudModuleBuilderContributionFactory.java new file mode 100644 index 000000000000..20ebc29fe148 --- /dev/null +++ b/java/remote-servers/impl/src/com/intellij/remoteServer/impl/module/CloudModuleBuilderContributionFactory.java @@ -0,0 +1,39 @@ +/* + * Copyright 2000-2014 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.intellij.remoteServer.impl.module; + +import com.intellij.openapi.extensions.ExtensionPointName; +import com.intellij.remoteServer.ServerType; + + +public abstract class CloudModuleBuilderContributionFactory { + + public static final ExtensionPointName EP_NAME + = ExtensionPointName.create("com.intellij.remoteServer.moduleBuilderContribution"); + + public abstract ServerType getCloudType(); + + public abstract CloudModuleBuilderContribution createContribution(CloudModuleBuilder moduleBuilder); + + public static CloudModuleBuilderContributionFactory getInstanceByType(ServerType cloudType) { + for (CloudModuleBuilderContributionFactory contribution : EP_NAME.getExtensions()) { + if (contribution.getCloudType() == cloudType) { + return contribution; + } + } + return null; + } +} diff --git a/java/remote-servers/impl/src/com/intellij/remoteServer/impl/module/CloudModuleBuilderSourceContribution.java b/java/remote-servers/impl/src/com/intellij/remoteServer/impl/module/CloudModuleBuilderSourceContribution.java new file mode 100644 index 000000000000..b5fdcc3995c8 --- /dev/null +++ b/java/remote-servers/impl/src/com/intellij/remoteServer/impl/module/CloudModuleBuilderSourceContribution.java @@ -0,0 +1,191 @@ +/* + * Copyright 2000-2014 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.intellij.remoteServer.impl.module; + +import com.intellij.ide.util.newProjectWizard.StepSequence; +import com.intellij.ide.util.newProjectWizard.modes.CreateFromSourcesMode; +import com.intellij.ide.util.projectWizard.AbstractStepWithProgress; +import com.intellij.ide.util.projectWizard.ModuleWizardStep; +import com.intellij.ide.util.projectWizard.ProjectBuilder; +import com.intellij.ide.util.projectWizard.WizardContext; +import com.intellij.openapi.Disposable; +import com.intellij.openapi.module.Module; +import com.intellij.openapi.progress.ProgressIndicator; +import com.intellij.openapi.progress.ProgressManager; +import com.intellij.openapi.progress.Task; +import com.intellij.openapi.project.Project; +import com.intellij.openapi.roots.ui.configuration.DefaultModulesProvider; +import com.intellij.openapi.roots.ui.configuration.ModulesProvider; +import com.intellij.openapi.ui.MessageType; +import com.intellij.openapi.util.Disposer; +import com.intellij.remoteServer.ServerType; +import com.intellij.remoteServer.configuration.RemoteServer; +import com.intellij.remoteServer.impl.configuration.deployment.DeployToServerRunConfiguration; +import com.intellij.remoteServer.util.*; +import com.intellij.remoteServer.util.ssh.SshKeyChecker; +import com.intellij.util.containers.ContainerUtil; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + + +public abstract class CloudModuleBuilderSourceContribution< + SC extends CloudConfigurationBase, + DC extends CloudDeploymentNameConfiguration, + AC extends CloudSourceApplicationConfiguration, + SR extends CloudMultiSourceServerRuntimeInstance> + extends CloudModuleBuilderContribution { + + private CloudNotifier myNotifier; + + public CloudModuleBuilderSourceContribution(CloudModuleBuilder moduleBuilder, ServerType cloudType) { + super(moduleBuilder, cloudType); + } + + @Override + public void configureModule(final Module module) { + final CloudModuleBuilder moduleBuilder = getModuleBuilder(); + RemoteServer account = (RemoteServer)moduleBuilder.getAccount(); + final AC applicationConfiguration = (AC)moduleBuilder.getApplicationConfiguration(); + + DC deploymentConfiguration = createDeploymentConfiguration(); + + if (applicationConfiguration.isExisting()) { + deploymentConfiguration.setDefaultDeploymentName(false); + deploymentConfiguration.setDeploymentName(applicationConfiguration.getExistingAppName()); + } + + final DeployToServerRunConfiguration runConfiguration + = CloudRunConfigurationUtil.createRunConfiguration(account, module, deploymentConfiguration); + + final ServerType cloudType = account.getType(); + final Project project = module.getProject(); + new CloudConnectionTask(project, + CloudBundle.getText("cloud.support", cloudType.getPresentableName()), + account) { + + boolean myFirstAttempt = true; + + @Override + protected Object run(SR serverRuntime) throws ServerRuntimeException { + doConfigureModule(applicationConfiguration, runConfiguration, myFirstAttempt, serverRuntime); + return null; + } + + @Override + protected void runtimeErrorOccurred(@NotNull String errorMessage) { + myFirstAttempt = false; + new SshKeyChecker().checkServerError(errorMessage, getNotifier(), project, this); + } + + @Override + protected void postPerform(Object result) { + detectModuleStructure(module, moduleBuilder.getContentEntryPath()); + } + + @Override + protected boolean shouldStartInBackground() { + return false; + } + }.performAsync(); + } + + private CloudNotifier getNotifier() { + if (myNotifier == null) { + myNotifier = new CloudNotifier(getCloudType().getPresentableName()); + } + return myNotifier; + } + + private void detectModuleStructure(Module module, final String contentPath) { + final Project project = module.getProject(); + + final CreateFromSourcesMode mode = new CreateFromSourcesMode() { + + @Override + public boolean isAvailable(WizardContext context) { + return true; + } + + @Override + public void addSteps(WizardContext context, ModulesProvider modulesProvider, StepSequence sequence, String specific) { + super.addSteps(context, modulesProvider, sequence, specific); + myProjectBuilder.setFileToImport(contentPath); + } + }; + + final WizardContext context = new WizardContext(project); + + final StepSequence stepSequence = mode.getSteps(context, DefaultModulesProvider.createForProject(context.getProject())); + if (stepSequence == null) { + return; + } + + Disposer.register(project, new Disposable() { + + @Override + public void dispose() { + for (ModuleWizardStep step : stepSequence.getAllSteps()) { + step.disposeUIResources(); + } + } + }); + + ProgressManager.getInstance() + .run(new Task.Backgroundable(project, CloudBundle.getText("detect.module.structure", getCloudType().getPresentableName()), false) { + + @Override + public void run(@NotNull ProgressIndicator indicator) { + for (ModuleWizardStep step = ContainerUtil.getFirstItem(stepSequence.getSelectedSteps()); + step != null; + step = stepSequence.getNextStep(step)) { + if (step instanceof AbstractStepWithProgress) { + ((AbstractStepWithProgress)step).performStep(); + } + else { + step.updateDataModel(); + } + } + CloudAccountSelectionEditor.unsetAccountOnContext(context, getCloudType()); + } + + @Override + public boolean shouldStartInBackground() { + return false; + } + + @Override + public void onSuccess() { + ProjectBuilder moduleBuilder = mode.getModuleBuilder(); + if (moduleBuilder == null) { + return; + } + moduleBuilder.commit(project); + getNotifier().showMessage(CloudBundle.getText("cloud.support.added", getCloudType().getPresentableName()), MessageType.INFO); + } + }); + } + + @Override + protected abstract CloudSourceApplicationConfigurable createApplicationConfigurable(@Nullable Project project, + Disposable parentDisposable); + + protected abstract DC createDeploymentConfiguration(); + + protected abstract void doConfigureModule(AC applicationConfiguration, + DeployToServerRunConfiguration runConfiguration, + boolean firstAttempt, + SR serverRuntime) throws ServerRuntimeException; +} diff --git a/java/remote-servers/impl/src/com/intellij/remoteServer/impl/module/CloudModuleWizardStep.java b/java/remote-servers/impl/src/com/intellij/remoteServer/impl/module/CloudModuleWizardStep.java index cf0e283616b2..79b307b0658e 100644 --- a/java/remote-servers/impl/src/com/intellij/remoteServer/impl/module/CloudModuleWizardStep.java +++ b/java/remote-servers/impl/src/com/intellij/remoteServer/impl/module/CloudModuleWizardStep.java @@ -22,13 +22,13 @@ import com.intellij.openapi.project.Project; import com.intellij.remoteServer.ServerType; import com.intellij.remoteServer.configuration.RemoteServer; import com.intellij.remoteServer.util.CloudAccountSelectionEditor; -import com.intellij.util.containers.hash.HashMap; +import com.intellij.util.containers.HashSet; import javax.swing.*; import java.awt.*; import java.util.ArrayList; import java.util.List; -import java.util.Map; +import java.util.Set; public class CloudModuleWizardStep extends ModuleWizardStep { @@ -43,17 +43,17 @@ public class CloudModuleWizardStep extends ModuleWizardStep { private CloudAccountSelectionEditor myAccountSelectionPanel; - private Map, CloudApplicationConfigurable> myCloudType2ApplicationConfigurable; + private Set> myApplicationConfigurableTypes; public CloudModuleWizardStep(CloudModuleBuilder moduleBuilder, Project project, Disposable parentDisposable) { myModuleBuilder = moduleBuilder; myProject = project; myParentDisposable = parentDisposable; - myCloudType2ApplicationConfigurable = new HashMap, CloudApplicationConfigurable>(); + myApplicationConfigurableTypes = new HashSet>(); List> cloudTypes = new ArrayList>(); - for (CloudModuleBuilderContribution contribution : CloudModuleBuilderContribution.EP_NAME.getExtensions()) { + for (CloudModuleBuilderContributionFactory contribution : CloudModuleBuilderContributionFactory.EP_NAME.getExtensions()) { cloudTypes.add(contribution.getCloudType()); } @@ -86,11 +86,8 @@ public class CloudModuleWizardStep extends ModuleWizardStep { ServerType cloudType = account.getType(); String cardName = cloudType.getId(); - CloudApplicationConfigurable applicationConfigurable = getApplicationConfigurable(); - if (applicationConfigurable == null) { - applicationConfigurable - = CloudModuleBuilderContribution.getInstanceByType(cloudType).createApplicationConfigurable(myProject, myParentDisposable); - myCloudType2ApplicationConfigurable.put(cloudType, applicationConfigurable); + CloudApplicationConfigurable applicationConfigurable = getApplicationConfigurable(); + if (myApplicationConfigurableTypes.add(cloudType)) { myApplicationPanelPlaceHolder.add(applicationConfigurable.getComponent(), cardName); } applicationPlaceHolderLayout.show(myApplicationPanelPlaceHolder, cardName); @@ -103,25 +100,25 @@ public class CloudModuleWizardStep extends ModuleWizardStep { return myMainPanel; } - private CloudApplicationConfigurable getApplicationConfigurable() { + private CloudApplicationConfigurable getApplicationConfigurable() { RemoteServer account = getSelectedAccount(); if (account == null) { return null; } - return myCloudType2ApplicationConfigurable.get(account.getType()); + return myModuleBuilder.getContribution(account.getType()).getApplicationConfigurable(myProject, myParentDisposable); } @Override public void updateDataModel() { myModuleBuilder.setAccount(myAccountSelectionPanel.getSelectedAccount()); - CloudApplicationConfigurable configurable = getApplicationConfigurable(); + CloudApplicationConfigurable configurable = getApplicationConfigurable(); myModuleBuilder.setApplicationConfiguration(configurable == null ? null : configurable.createConfiguration()); } @Override public boolean validate() throws ConfigurationException { myAccountSelectionPanel.validate(); - CloudApplicationConfigurable configurable = getApplicationConfigurable(); + CloudApplicationConfigurable configurable = getApplicationConfigurable(); if (configurable != null) { configurable.validate(); } diff --git a/java/remote-servers/impl/src/com/intellij/remoteServer/impl/module/CloudSourceApplicationConfigurable.java b/java/remote-servers/impl/src/com/intellij/remoteServer/impl/module/CloudSourceApplicationConfigurable.java new file mode 100644 index 000000000000..b6e0dfc857b0 --- /dev/null +++ b/java/remote-servers/impl/src/com/intellij/remoteServer/impl/module/CloudSourceApplicationConfigurable.java @@ -0,0 +1,165 @@ +/* + * Copyright 2000-2014 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.intellij.remoteServer.impl.module; + +import com.intellij.openapi.Disposable; +import com.intellij.openapi.project.Project; +import com.intellij.openapi.util.Disposer; +import com.intellij.remoteServer.configuration.RemoteServer; +import com.intellij.remoteServer.runtime.Deployment; +import com.intellij.remoteServer.runtime.ServerConnection; +import com.intellij.remoteServer.runtime.ServerConnector; +import com.intellij.remoteServer.runtime.deployment.ServerRuntimeInstance; +import com.intellij.remoteServer.util.*; +import com.intellij.util.concurrency.Semaphore; +import com.intellij.util.ui.UIUtil; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import javax.swing.*; +import java.util.Collection; +import java.util.concurrent.atomic.AtomicReference; + + +public abstract class CloudSourceApplicationConfigurable< + SC extends CloudConfigurationBase, + DC extends CloudDeploymentNameConfiguration, + SR extends CloudMultiSourceServerRuntimeInstance, + AC extends CloudApplicationConfiguration> extends CloudApplicationConfigurable { + + private final Project myProject; + private final Disposable myParentDisposable; + + private DelayedRunner myRunner; + + private RemoteServer myAccount; + + public CloudSourceApplicationConfigurable(@Nullable Project project, Disposable parentDisposable) { + myProject = project; + myParentDisposable = parentDisposable; + } + + @Override + public void setAccount(RemoteServer account) { + myAccount = account; + clearCloudData(); + } + + protected RemoteServer getAccount() { + return (RemoteServer)myAccount; + } + + @Override + public JComponent getComponent() { + JComponent result = getMainPanel(); + if (myRunner == null) { + myRunner = new DelayedRunner(result) { + + private RemoteServer myPreviousAccount; + + @Override + protected boolean wasChanged() { + boolean result = myPreviousAccount != myAccount; + if (result) { + myPreviousAccount = myAccount; + } + return result; + } + + @Override + protected void run() { + loadCloudData(); + } + }; + Disposer.register(myParentDisposable, myRunner); + } + return result; + } + + protected void clearCloudData() { + getExistingComboBox().removeAllItems(); + } + + protected void loadCloudData() { + new ConnectionTask>("Loading existing applications list") { + + @Override + protected void run(final ServerConnection connection, + final Semaphore semaphore, + final AtomicReference> result) { + connection.connectIfNeeded(new ServerConnector.ConnectionCallback() { + + @Override + public void connected(@NotNull ServerRuntimeInstance serverRuntimeInstance) { + connection.computeDeployments(new Runnable() { + + @Override + public void run() { + result.set(connection.getDeployments()); + semaphore.up(); + UIUtil.invokeLaterIfNeeded(new Runnable() { + @Override + public void run() { + if (!Disposer.isDisposed(myParentDisposable)) { + setupExistingApplications(result.get()); + } + } + }); + } + }); + } + + @Override + public void errorOccurred(@NotNull String errorMessage) { + runtimeErrorOccurred(errorMessage); + semaphore.up(); + } + }); + } + + @Override + protected Collection run(SR serverRuntimeInstance) throws ServerRuntimeException { + return null; + } + }.performAsync(); + } + + private void setupExistingApplications(Collection deployments) { + JComboBox existingComboBox = getExistingComboBox(); + existingComboBox.removeAllItems(); + for (Deployment deployment : deployments) { + existingComboBox.addItem(deployment.getName()); + } + } + + protected Project getProject() { + return myProject; + } + + protected abstract JComboBox getExistingComboBox(); + + protected abstract JComponent getMainPanel(); + + @Override + public abstract AC createConfiguration(); + + protected abstract class ConnectionTask extends CloudConnectionTask { + + public ConnectionTask(String title) { + super(myProject, title, CloudSourceApplicationConfigurable.this.getAccount()); + } + } +} diff --git a/java/remote-servers/impl/src/com/intellij/remoteServer/impl/module/CloudSourceApplicationConfiguration.java b/java/remote-servers/impl/src/com/intellij/remoteServer/impl/module/CloudSourceApplicationConfiguration.java new file mode 100644 index 000000000000..b1a3df6099ab --- /dev/null +++ b/java/remote-servers/impl/src/com/intellij/remoteServer/impl/module/CloudSourceApplicationConfiguration.java @@ -0,0 +1,36 @@ +/* + * Copyright 2000-2014 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.intellij.remoteServer.impl.module; + + +public abstract class CloudSourceApplicationConfiguration extends CloudApplicationConfiguration { + + private boolean myExisting; + private final String myExistingAppName; + + protected CloudSourceApplicationConfiguration(boolean existing, String existingAppName) { + myExisting = existing; + myExistingAppName = existingAppName; + } + + public boolean isExisting() { + return myExisting; + } + + public String getExistingAppName() { + return myExistingAppName; + } +} diff --git a/platform/core-api/src/com/intellij/ide/util/PropertiesComponent.java b/platform/core-api/src/com/intellij/ide/util/PropertiesComponent.java index f3b883d0b60f..f733cd04f4a6 100644 --- a/platform/core-api/src/com/intellij/ide/util/PropertiesComponent.java +++ b/platform/core-api/src/com/intellij/ide/util/PropertiesComponent.java @@ -17,8 +17,10 @@ package com.intellij.ide.util; import com.intellij.openapi.components.ServiceManager; import com.intellij.openapi.project.Project; +import com.intellij.util.ObjectUtils; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import java.lang.reflect.Field; @@ -31,6 +33,7 @@ public abstract class PropertiesComponent { public abstract boolean isValueSet(String name); + @Nullable public abstract String getValue(@NonNls String name); public abstract void setValue(@NonNls String name, String value); @@ -62,7 +65,10 @@ public abstract class PropertiesComponent { @NotNull public String getValue(@NonNls String name, @NotNull String defaultValue) { - return isValueSet(name) ? getValue(name) : defaultValue; + if (!isValueSet(name)) { + return defaultValue; + } + return ObjectUtils.notNull(getValue(name), defaultValue); } public final int getOrInitInt(@NonNls String name, int defaultValue) { diff --git a/platform/indexing-impl/src/com/intellij/psi/impl/cache/impl/id/IdTableBuilding.java b/platform/indexing-impl/src/com/intellij/psi/impl/cache/impl/id/IdTableBuilding.java index 3e6571405a91..3c12bb4cda21 100644 --- a/platform/indexing-impl/src/com/intellij/psi/impl/cache/impl/id/IdTableBuilding.java +++ b/platform/indexing-impl/src/com/intellij/psi/impl/cache/impl/id/IdTableBuilding.java @@ -149,7 +149,7 @@ public class IdTableBuilding { } private int convertToMask(final WordOccurrence.Kind kind) { - if (kind == null) return UsageSearchContext.ANY; + if (kind == null) return UsageSearchContext.IN_PLAIN_TEXT; if (kind == WordOccurrence.Kind.CODE) return UsageSearchContext.IN_CODE; if (kind == WordOccurrence.Kind.COMMENTS) return UsageSearchContext.IN_COMMENTS; if (kind == WordOccurrence.Kind.LITERALS) return UsageSearchContext.IN_STRINGS; diff --git a/platform/lang-impl/src/com/intellij/application/options/editor/EditorTabsConfigurable.java b/platform/lang-impl/src/com/intellij/application/options/editor/EditorTabsConfigurable.java index 8db2a882bfc7..35a34085d035 100644 --- a/platform/lang-impl/src/com/intellij/application/options/editor/EditorTabsConfigurable.java +++ b/platform/lang-impl/src/com/intellij/application/options/editor/EditorTabsConfigurable.java @@ -188,7 +188,7 @@ public class EditorTabsConfigurable implements EditorOptionsProvider { if (temp.trim().length() > 0) { try { int newTabTitleLimit = Integer.parseInt(temp); - newTabTitleLimit = Math.max(10, Math.min(100, newTabTitleLimit)); + newTabTitleLimit = Math.max(25, Math.min(100, newTabTitleLimit)); if (newTabTitleLimit != uiSettings.EDITOR_TAB_TITLE_LIMIT){ uiSettings.EDITOR_TAB_TITLE_LIMIT = newTabTitleLimit; uiSettingsChanged = true; diff --git a/platform/lang-impl/src/com/intellij/util/indexing/IndexingStamp.java b/platform/lang-impl/src/com/intellij/util/indexing/IndexingStamp.java index 6bdd55b1d343..5ef1379eaaf4 100644 --- a/platform/lang-impl/src/com/intellij/util/indexing/IndexingStamp.java +++ b/platform/lang-impl/src/com/intellij/util/indexing/IndexingStamp.java @@ -59,7 +59,7 @@ public class IndexingStamp { private static final long UNINDEXED_STAMP = -1L; // we don't store trivial "absent" state private static final long INDEX_DATA_OUTDATED_STAMP = -2L; - private static final int VERSION = 12; + private static final int VERSION = 13; private static final ConcurrentHashMap, Long> ourIndexIdToCreationStamp = new ConcurrentHashMap, Long>(); private static volatile long ourLastStamp; // ensure any file index stamp increases diff --git a/platform/platform-impl/src/com/intellij/util/ui/SwingHelper.java b/platform/platform-impl/src/com/intellij/util/ui/SwingHelper.java index 071777527401..59d1143b6bbd 100644 --- a/platform/platform-impl/src/com/intellij/util/ui/SwingHelper.java +++ b/platform/platform-impl/src/com/intellij/util/ui/SwingHelper.java @@ -1,3 +1,18 @@ +/* + * Copyright 2000-2014 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package com.intellij.util.ui; import com.intellij.ide.BrowserUtil; @@ -48,7 +63,7 @@ public class SwingHelper { * stacked vertically each on another in a given order. * * @param childAlignmentX Component.LEFT_ALIGNMENT, Component.CENTER_ALIGNMENT or Component.RIGHT_ALIGNMENT - * @param children children components + * @param children children components * @return created panel */ @NotNull @@ -76,7 +91,7 @@ public class SwingHelper { * stacked each on another in a given order. * * @param childAlignmentY Component.TOP_ALIGNMENT, Component.CENTER_ALIGNMENT or Component.BOTTOM_ALIGNMENT - * @param children children components + * @param children children components * @return created panel */ @NotNull @@ -98,10 +113,11 @@ public class SwingHelper { for (Component child : children) { panel.add(child, childAlignment); if (child instanceof JComponent) { - JComponent jChild = (JComponent) child; + JComponent jChild = (JComponent)child; if (verticalOrientation) { jChild.setAlignmentX(childAlignment); - } else { + } + else { jChild.setAlignmentY(childAlignment); } } @@ -291,7 +307,7 @@ public class SwingHelper { Object prototypeDisplayValue = comboBox.getPrototypeDisplayValue(); String prototypeDisplayValueStr = null; if (prototypeDisplayValue instanceof String) { - prototypeDisplayValueStr = (String) prototypeDisplayValue; + prototypeDisplayValueStr = (String)prototypeDisplayValue; } else if (prototypeDisplayValue != null) { return; @@ -424,6 +440,24 @@ public class SwingHelper { editorPane.setText(html); } + public static TextFieldWithHistoryWithBrowseButton createTextFieldWithHistoryWithBrowseButton(@Nullable Project project, + @NotNull String browseDialogTitle, + @NotNull FileChooserDescriptor fileChooserDescriptor, + @NotNull NotNullProducer> historyProvider) { + TextFieldWithHistoryWithBrowseButton textFieldWithHistoryWithBrowseButton = new TextFieldWithHistoryWithBrowseButton(); + final TextFieldWithHistory textFieldWithHistory = textFieldWithHistoryWithBrowseButton.getChildComponent(); + textFieldWithHistory.setHistorySize(-1); + textFieldWithHistory.setMinimumAndPreferredWidth(0); + addHistoryOnExpansion(textFieldWithHistory, historyProvider); + installFileCompletionAndBrowseDialog( + project, + textFieldWithHistoryWithBrowseButton, + browseDialogTitle, fileChooserDescriptor + + ); + return textFieldWithHistoryWithBrowseButton; + } + private static class CopyLinkAction extends AnAction { private final String myUrl; diff --git a/platform/remote-servers/impl/src/com/intellij/remoteServer/util/CloudAccountSelectionEditor.java b/platform/remote-servers/impl/src/com/intellij/remoteServer/util/CloudAccountSelectionEditor.java index fa4355eb356c..5a3d150daf57 100644 --- a/platform/remote-servers/impl/src/com/intellij/remoteServer/util/CloudAccountSelectionEditor.java +++ b/platform/remote-servers/impl/src/com/intellij/remoteServer/util/CloudAccountSelectionEditor.java @@ -15,9 +15,6 @@ */ package com.intellij.remoteServer.util; -import com.intellij.execution.RunManagerEx; -import com.intellij.execution.RunnerAndConfigurationSettings; -import com.intellij.execution.configurations.ConfigurationType; import com.intellij.ide.DataManager; import com.intellij.ide.actions.ShowSettingsUtilImpl; import com.intellij.ide.util.projectWizard.WizardContext; @@ -25,11 +22,8 @@ import com.intellij.openapi.actionSystem.AnAction; import com.intellij.openapi.actionSystem.AnActionEvent; import com.intellij.openapi.actionSystem.DefaultActionGroup; import com.intellij.openapi.module.Module; -import com.intellij.openapi.module.ModulePointer; -import com.intellij.openapi.module.ModulePointerManager; import com.intellij.openapi.options.ConfigurationException; import com.intellij.openapi.options.ex.SingleConfigurableEditor; -import com.intellij.openapi.project.Project; import com.intellij.openapi.ui.ComboBox; import com.intellij.openapi.ui.popup.JBPopupFactory; import com.intellij.openapi.util.Condition; @@ -38,12 +32,7 @@ import com.intellij.openapi.util.Ref; import com.intellij.remoteServer.ServerType; import com.intellij.remoteServer.configuration.RemoteServer; import com.intellij.remoteServer.configuration.RemoteServersManager; -import com.intellij.remoteServer.configuration.ServerConfiguration; -import com.intellij.remoteServer.configuration.deployment.DeploymentConfiguration; import com.intellij.remoteServer.impl.configuration.RemoteServerConfigurable; -import com.intellij.remoteServer.impl.configuration.deployment.DeployToServerConfigurationType; -import com.intellij.remoteServer.impl.configuration.deployment.DeployToServerRunConfiguration; -import com.intellij.remoteServer.impl.configuration.deployment.ModuleDeploymentSourceImpl; import com.intellij.util.Consumer; import com.intellij.util.containers.ContainerUtil; import com.intellij.util.containers.hash.HashMap; @@ -224,52 +213,7 @@ public class CloudAccountSelectionEditor { if (account == null) { return; } - createRunConfiguration(account, module, configuration); - } - - public static - DeployToServerRunConfiguration createRunConfiguration(RemoteServer account, Module module, DC deploymentConfiguration) { - - Project project = module.getProject(); - - String accountName = account.getName(); - - String name = generateRunConfigurationName(accountName, module.getName()); - - final RunManagerEx runManager = RunManagerEx.getInstanceEx(project); - final RunnerAndConfigurationSettings runSettings - = runManager.createRunConfiguration(name, getRunConfigurationType(account.getType()).getConfigurationFactories()[0]); - - final DeployToServerRunConfiguration result = (DeployToServerRunConfiguration)runSettings.getConfiguration(); - - result.setServerName(accountName); - - final ModulePointer modulePointer = ModulePointerManager.getInstance(project).create(module); - result.setDeploymentSource(new ModuleDeploymentSourceImpl(modulePointer)); - - result.setDeploymentConfiguration(deploymentConfiguration); - - runManager.addConfiguration(runSettings, false); - runManager.setSelectedConfiguration(runSettings); - - return result; - } - - private static DeployToServerConfigurationType getRunConfigurationType(ServerType cloudType) { - String id = DeployToServerConfigurationType.getId(cloudType); - for (ConfigurationType configurationType : ConfigurationType.CONFIGURATION_TYPE_EP.getExtensions()) { - if (configurationType instanceof DeployToServerConfigurationType) { - DeployToServerConfigurationType deployConfigurationType = (DeployToServerConfigurationType)configurationType; - if (deployConfigurationType.getId().equals(id)) { - return deployConfigurationType; - } - } - } - return null; - } - - private static String generateRunConfigurationName(String serverName, String moduleName) { - return CloudBundle.getText("run.configuration.name", serverName, moduleName); + CloudRunConfigurationUtil.createRunConfiguration(account, module, configuration); } private static class AccountItem { diff --git a/platform/remote-servers/impl/src/com/intellij/remoteServer/util/CloudRunConfigurationUtil.java b/platform/remote-servers/impl/src/com/intellij/remoteServer/util/CloudRunConfigurationUtil.java new file mode 100644 index 000000000000..a717571a7ca6 --- /dev/null +++ b/platform/remote-servers/impl/src/com/intellij/remoteServer/util/CloudRunConfigurationUtil.java @@ -0,0 +1,93 @@ +/* + * Copyright 2000-2014 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.intellij.remoteServer.util; + +import com.intellij.execution.RunManagerEx; +import com.intellij.execution.RunnerAndConfigurationSettings; +import com.intellij.execution.configuration.ConfigurationFactoryEx; +import com.intellij.execution.configurations.ConfigurationFactory; +import com.intellij.execution.configurations.ConfigurationType; +import com.intellij.openapi.module.Module; +import com.intellij.openapi.module.ModulePointer; +import com.intellij.openapi.module.ModulePointerManager; +import com.intellij.openapi.project.Project; +import com.intellij.remoteServer.ServerType; +import com.intellij.remoteServer.configuration.RemoteServer; +import com.intellij.remoteServer.configuration.ServerConfiguration; +import com.intellij.remoteServer.configuration.deployment.DeploymentConfiguration; +import com.intellij.remoteServer.configuration.deployment.DeploymentSource; +import com.intellij.remoteServer.impl.configuration.deployment.DeployToServerConfigurationType; +import com.intellij.remoteServer.impl.configuration.deployment.DeployToServerRunConfiguration; +import com.intellij.remoteServer.impl.configuration.deployment.ModuleDeploymentSourceImpl; + + +public class CloudRunConfigurationUtil { + + public static + DeployToServerRunConfiguration createRunConfiguration(RemoteServer account, Module module, DC deploymentConfiguration) { + final ModulePointer modulePointer = ModulePointerManager.getInstance(module.getProject()).create(module); + DeploymentSource deploymentSource = new ModuleDeploymentSourceImpl(modulePointer); + return createRunConfiguration(account, module, deploymentSource, deploymentConfiguration); + } + + public static + DeployToServerRunConfiguration createRunConfiguration(RemoteServer account, + Module module, + DeploymentSource deploymentSource, + DC deploymentConfiguration) { + Project project = module.getProject(); + + String accountName = account.getName(); + + String name = generateRunConfigurationName(accountName, module.getName()); + + final RunManagerEx runManager = RunManagerEx.getInstanceEx(project); + ConfigurationFactory configurationFactory = getRunConfigurationType(account.getType()).getConfigurationFactories()[0]; + final RunnerAndConfigurationSettings runSettings = runManager.createRunConfiguration(name, configurationFactory); + + final DeployToServerRunConfiguration result = (DeployToServerRunConfiguration)runSettings.getConfiguration(); + + result.setServerName(accountName); + + result.setDeploymentSource(deploymentSource); + + result.setDeploymentConfiguration(deploymentConfiguration); + + ((ConfigurationFactoryEx)configurationFactory).onNewConfigurationCreated(runSettings.getConfiguration()); + + runManager.addConfiguration(runSettings, false); + runManager.setSelectedConfiguration(runSettings); + + return result; + } + + private static DeployToServerConfigurationType getRunConfigurationType(ServerType cloudType) { + String id = DeployToServerConfigurationType.getId(cloudType); + for (ConfigurationType configurationType : ConfigurationType.CONFIGURATION_TYPE_EP.getExtensions()) { + if (configurationType instanceof DeployToServerConfigurationType) { + DeployToServerConfigurationType deployConfigurationType = (DeployToServerConfigurationType)configurationType; + if (deployConfigurationType.getId().equals(id)) { + return deployConfigurationType; + } + } + } + return null; + } + + private static String generateRunConfigurationName(String serverName, String moduleName) { + return CloudBundle.getText("run.configuration.name", serverName, moduleName); + } +} diff --git a/platform/util/src/com/intellij/openapi/util/text/StringUtil.java b/platform/util/src/com/intellij/openapi/util/text/StringUtil.java index b4201c56aa85..1a67d9d5a88c 100644 --- a/platform/util/src/com/intellij/openapi/util/text/StringUtil.java +++ b/platform/util/src/com/intellij/openapi/util/text/StringUtil.java @@ -2674,12 +2674,19 @@ public class StringUtil extends StringUtilRt { continue; } - if (i > 0 && (ch == '/' || ch == '.' || Character.isUpperCase(ch))) { + if (i > 0 && (ch == '/' || ch == '\\' || ch == '.' || Character.isUpperCase(ch))) { words.add(builder.toString()); builder.delete(0, builder.length()); } builder.append(ch); } + for (int i = 0; i < words.size(); i++) { + String word = words.get(i); + if (i < words.size() - 1 && word.length() == 1) { + words.remove(i); + words.set(i, word + words.get(i)); + } + } int removedLength = 0; diff --git a/platform/util/testSrc/com/intellij/util/text/StringUtilTest.java b/platform/util/testSrc/com/intellij/util/text/StringUtilTest.java index 46b7da7c734c..383c07f2a87e 100644 --- a/platform/util/testSrc/com/intellij/util/text/StringUtilTest.java +++ b/platform/util/testSrc/com/intellij/util/text/StringUtilTest.java @@ -197,7 +197,7 @@ public class StringUtilTest extends TestCase { } public void testShortened() { - String[] names = {"AVeryVeeryLongClassName.java", "com.test.SomeJAVAClassName.java", "strangelowercaseclassname.java", "PrefixPostfix.java"}; + String[] names = {"AVeryVeeryLongClassName.java", "com.test.SomeJAVAClassName.java", "strangelowercaseclassname.java", "PrefixPostfix.java", "SomeJAVAClassName.java"}; for (String name : names) { for (int i = name.length() + 1; i > 15; i--) { String shortened = StringUtil.getShortened(name, i); diff --git a/platform/vcs-log/api/src/com/intellij/vcs/log/TimedVcsCommit.java b/platform/vcs-log/api/src/com/intellij/vcs/log/TimedVcsCommit.java index c7b7ef9a7300..54f7ba19b187 100644 --- a/platform/vcs-log/api/src/com/intellij/vcs/log/TimedVcsCommit.java +++ b/platform/vcs-log/api/src/com/intellij/vcs/log/TimedVcsCommit.java @@ -20,7 +20,7 @@ import com.intellij.vcs.log.graph.GraphCommit; import java.util.List; /** - * A {@link GraphCommit} with information about date & time when this commit was made. + * A typified {@link GraphCommit}. *

* An instance of this object can be obtained via * {@link VcsLogObjectsFactory#createTimedCommit(Hash, List, long) VcsLogObjectsFactory#createTimedCommit}. @@ -31,12 +31,4 @@ import java.util.List; */ public interface TimedVcsCommit extends GraphCommit { - /** - *

Returns the timestamp indicating the date & time when this commit was made.

- *

This time is displayed in the table by default; - * is used for joining commits from different repositories; - * is used for ordering commits in a single repository (keeping the preference of the topological ordering of course).

- */ - long getTimestamp(); - } diff --git a/platform/vcs-log/api/src/com/intellij/vcs/log/VcsLogProvider.java b/platform/vcs-log/api/src/com/intellij/vcs/log/VcsLogProvider.java index 5d4f1fb83cad..89805947869c 100644 --- a/platform/vcs-log/api/src/com/intellij/vcs/log/VcsLogProvider.java +++ b/platform/vcs-log/api/src/com/intellij/vcs/log/VcsLogProvider.java @@ -29,8 +29,8 @@ public interface VcsLogProvider { *

Reads the whole history, but only hashes & parents.

*

Also reports authors/committers of this repository to the given user registry.

*/ - @NotNull - List readAllHashes(@NotNull VirtualFile root, @NotNull Consumer userRegistry) throws VcsException; + void readAllHashes(@NotNull VirtualFile root, @NotNull Consumer userRegistry, + @NotNull Consumer commitConsumer) throws VcsException; /** * Reads those details of the given commits, which are necessary to be shown in the log table. diff --git a/platform/vcs-log/api/src/com/intellij/vcs/log/VcsShortCommitDetails.java b/platform/vcs-log/api/src/com/intellij/vcs/log/VcsShortCommitDetails.java index 3069f3f6d967..9f6cecee49fb 100644 --- a/platform/vcs-log/api/src/com/intellij/vcs/log/VcsShortCommitDetails.java +++ b/platform/vcs-log/api/src/com/intellij/vcs/log/VcsShortCommitDetails.java @@ -21,20 +21,9 @@ import java.util.List; */ public interface VcsShortCommitDetails extends TimedVcsCommit { - @Override - @NotNull - Hash getId(); - @NotNull VirtualFile getRoot(); - @Override - @NotNull - List getParents(); - - @Override - long getTimestamp(); - @NotNull String getSubject(); diff --git a/platform/vcs-log/graph-api/src/com/intellij/vcs/log/graph/GraphCommit.java b/platform/vcs-log/graph-api/src/com/intellij/vcs/log/graph/GraphCommit.java index 6a414853da45..02b337804f5c 100644 --- a/platform/vcs-log/graph-api/src/com/intellij/vcs/log/graph/GraphCommit.java +++ b/platform/vcs-log/graph-api/src/com/intellij/vcs/log/graph/GraphCommit.java @@ -29,6 +29,12 @@ public interface GraphCommit { @NotNull List getParents(); + /** + *

Returns the timestamp indicating the date & time when this commit was made.

+ *

This time is displayed in the table by default; + * it is used for joining commits from different repositories; + * it is used for ordering commits in a single repository (keeping the preference of the topological ordering of course).

+ */ long getTimestamp(); } diff --git a/platform/vcs-log/impl/src/com/intellij/vcs/log/data/VcsLogMultiRepoJoiner.java b/platform/vcs-log/impl/src/com/intellij/vcs/log/data/VcsLogMultiRepoJoiner.java index 7006408943a8..072e0e26ace1 100644 --- a/platform/vcs-log/impl/src/com/intellij/vcs/log/data/VcsLogMultiRepoJoiner.java +++ b/platform/vcs-log/impl/src/com/intellij/vcs/log/data/VcsLogMultiRepoJoiner.java @@ -1,36 +1,36 @@ package com.intellij.vcs.log.data; import com.intellij.util.containers.ContainerUtil; -import com.intellij.vcs.log.TimedVcsCommit; +import com.intellij.vcs.log.graph.GraphCommit; import org.jetbrains.annotations.NotNull; import java.util.*; -public class VcsLogMultiRepoJoiner { +public class VcsLogMultiRepoJoiner { @NotNull - public List join(@NotNull Collection> logsFromRepos) { + public List> join(@NotNull Collection>> logsFromRepos) { if (logsFromRepos.size() == 1) { return logsFromRepos.iterator().next(); } int size = 0; - for (List repo : logsFromRepos) { + for (List> repo : logsFromRepos) { size += repo.size(); } - List result = new ArrayList(size); + List> result = new ArrayList>(size); - Map> nextCommits = ContainerUtil.newHashMap(); - for (List log : logsFromRepos) { - Iterator iterator = log.iterator(); + Map, Iterator>> nextCommits = ContainerUtil.newHashMap(); + for (List> log : logsFromRepos) { + Iterator> iterator = log.iterator(); if (iterator.hasNext()) { nextCommits.put(iterator.next(), iterator); } } while (!nextCommits.isEmpty()) { - TimedVcsCommit lastCommit = findLatestCommit(nextCommits.keySet()); - Iterator iterator = nextCommits.get(lastCommit); + GraphCommit lastCommit = findLatestCommit(nextCommits.keySet()); + Iterator> iterator = nextCommits.get(lastCommit); result.add(lastCommit); nextCommits.remove(lastCommit); @@ -43,10 +43,10 @@ public class VcsLogMultiRepoJoiner { } @NotNull - private static TimedVcsCommit findLatestCommit(@NotNull Set commits) { + private GraphCommit findLatestCommit(@NotNull Set> commits) { long maxTimeStamp = Long.MIN_VALUE; - TimedVcsCommit lastCommit = null; - for (TimedVcsCommit commit : commits) { + GraphCommit lastCommit = null; + for (GraphCommit commit : commits) { if (commit.getTimestamp() >= maxTimeStamp) { maxTimeStamp = commit.getTimestamp(); lastCommit = commit; diff --git a/platform/vcs-log/impl/src/com/intellij/vcs/log/data/VcsLogRefresherImpl.java b/platform/vcs-log/impl/src/com/intellij/vcs/log/data/VcsLogRefresherImpl.java index 0c25d7f5709d..45ffc5c182b9 100644 --- a/platform/vcs-log/impl/src/com/intellij/vcs/log/data/VcsLogRefresherImpl.java +++ b/platform/vcs-log/impl/src/com/intellij/vcs/log/data/VcsLogRefresherImpl.java @@ -96,11 +96,11 @@ public class VcsLogRefresherImpl implements VcsLogRefresher { Map> refs = loadRefsFromVcs(myProviders); Set roots = myProviders.keySet(); Map requirements = prepareSimpleRequirements(roots, myRecentCommitCount); - Map> commits = loadRecentCommitsFromVcs(myProviders, requirements, - myUserRegistry, myTopCommitsDetailsCache); - List compoundLog = compound(commits.values()); - List> compactedLog = compactCommits(compoundLog, myHashMap); - DataPack dataPack = DataPack.build(compactedLog, new RefsModel(refs, myHashMap.asIndexGetter()), + Map>> commits = loadRecentCommitsFromVcs(myProviders, requirements, + myUserRegistry, myTopCommitsDetailsCache, + myHashMap); + List> compoundLog = compound(commits.values()); + DataPack dataPack = DataPack.build(compoundLog, new RefsModel(refs, myHashMap.asIndexGetter()), myHashMap.asIndexGetter(), myHashMap.asHashGetter(), myProviders, false); mySingleTaskController.request(RefreshRequest.RELOAD_ALL); // build/rebuild the full log in bg return dataPack; @@ -152,19 +152,21 @@ public class VcsLogRefresherImpl implements VcsLogRefresher { } @NotNull - private static Map> loadRecentCommitsFromVcs(@NotNull Map providers, - @NotNull final Map requirements, - @NotNull final VcsUserRegistryImpl userRegistry, - @NotNull final Map topCommitsDetailsCache) - throws VcsException { + private static Map>> loadRecentCommitsFromVcs( + @NotNull Map providers, + @NotNull final Map requirements, + @NotNull final VcsUserRegistryImpl userRegistry, + @NotNull final Map topCommitsDetailsCache, + @NotNull final VcsLogHashMap hashMap) throws VcsException + { final StopWatch sw = StopWatch.start("loading commits"); - final Map> commits = ContainerUtil.newHashMap(); + final Map>> commits = ContainerUtil.newHashMap(); new ProviderIterator() { @Override public void each(@NotNull VirtualFile root, @NotNull VcsLogProvider provider) throws VcsException { List metadatas = provider.readFirstBlock(root, requirements.get(root)); storeUsersAndDetails(metadatas, userRegistry, topCommitsDetailsCache); - commits.put(root, metadatas); + commits.put(root, compactCommits(metadatas, hashMap)); sw.rootCompleted(root); } }.iterate(providers); @@ -177,9 +179,9 @@ public class VcsLogRefresherImpl implements VcsLogRefresher { * Compounds logs from different repositories into a single multi-repository log. */ @NotNull - private static List compound(@NotNull Collection> commits) { + private static List> compound(@NotNull Collection>> commits) { StopWatch sw = StopWatch.start("multi-repo join"); - List joined = new VcsLogMultiRepoJoiner().join(commits); + List> joined = new VcsLogMultiRepoJoiner().join(commits); sw.report(); return joined; } @@ -192,8 +194,7 @@ public class VcsLogRefresherImpl implements VcsLogRefresher { @NotNull @Override public GraphCommit fun(@NotNull TimedVcsCommit commit) { - return new GraphCommitImpl(hashMap.getCommitIndex(commit.getId()), - ContainerUtil.map(commit.getParents(), hashMap.asIndexGetter()), commit.getTimestamp()); + return compactCommit(commit, hashMap); } }); hashMap.flush(); @@ -201,6 +202,12 @@ public class VcsLogRefresherImpl implements VcsLogRefresher { return map; } + @NotNull + private static GraphCommitImpl compactCommit(@NotNull TimedVcsCommit commit, @NotNull VcsLogHashMap hashMap) { + return new GraphCommitImpl(hashMap.getCommitIndex(commit.getId()), + ContainerUtil.map(commit.getParents(), hashMap.asIndexGetter()), commit.getTimestamp()); + } + private static void storeUsersAndDetails(@NotNull List metadatas, @NotNull VcsUserRegistryImpl userRegistry, @NotNull Map topCommitsDetailsCache) { for (VcsCommitMetadata detail : metadatas) { @@ -218,9 +225,9 @@ public class VcsLogRefresherImpl implements VcsLogRefresher { private final Map myLoadedInfos = ContainerUtil.newHashMap(); private class LogAndRefs { - List log; + List> log; Collection refs; - LogAndRefs(Collection refs, List commits) { + LogAndRefs(Collection refs, List> commits) { this.refs = refs; this.log = commits; } @@ -266,16 +273,16 @@ public class VcsLogRefresherImpl implements VcsLogRefresher { try { if (permanentGraph != null) { loadLogAndRefs(roots, currentRefs, myRecentCommitCount); - List compoundLog = compound(ContainerUtil.map(myLoadedInfos.values(), - new Function>() { + List> compoundLog = compound(ContainerUtil.map(myLoadedInfos.values(), + new Function>>() { @Override - public List fun(LogAndRefs refs) { + public List> fun( + LogAndRefs refs) { return refs.log; } })); - List> preparedLog = compactCommits(compoundLog, myHashMap); Map> allNewRefs = getAllNewRefs(myLoadedInfos, currentRefs); - List> joinedFullLog = join(preparedLog, permanentGraph.getAllCommits(), currentRefs, allNewRefs); + List> joinedFullLog = join(compoundLog, permanentGraph.getAllCommits(), currentRefs, allNewRefs); if (joinedFullLog != null) { return DataPack.build(joinedFullLog, new RefsModel(allNewRefs, myHashMap.asIndexGetter()), myHashMap.asIndexGetter(), myHashMap.asHashGetter(), myProviders, true); @@ -310,8 +317,9 @@ public class VcsLogRefresherImpl implements VcsLogRefresher { Map providers = getProviders(roots); Map> refs = loadRefsFromVcs(providers); Map requirements = prepareRequirements(roots, commitCount, prevRefs, refs); - Map> commits = loadRecentCommitsFromVcs(providers, requirements, - myUserRegistry, myTopCommitsDetailsCache); + Map>> commits = loadRecentCommitsFromVcs(providers, requirements, + myUserRegistry, myTopCommitsDetailsCache, + myHashMap); for (VirtualFile root : roots) { myLoadedInfos.put(root, new LogAndRefs(refs.get(root), commits.get(root))); } @@ -345,7 +353,7 @@ public class VcsLogRefresherImpl implements VcsLogRefresher { } @Nullable - private List> join(@NotNull List> recentCommits, @NotNull List> fullLog, + private List> join(@NotNull List> recentCommits, @NotNull List> fullLog, @NotNull Map> previousRefs, @NotNull Map> newRefs) { StopWatch sw = StopWatch.start("joining new commits"); @@ -374,9 +382,8 @@ public class VcsLogRefresherImpl implements VcsLogRefresher { @NotNull private Pair, Map>> loadFullLog() throws VcsException { StopWatch sw = StopWatch.start("full log reload"); - Collection> commits = readFullLogFromVcs(); - List compoundLog = compound(commits); - List> graphCommits = compactCommits(compoundLog, myHashMap); + Collection>> commits = readFullLogFromVcs(); + List> graphCommits = compound(commits); Map> refMap = loadRefsFromVcs(myProviders); PermanentGraph permanentGraph = DataPack.buildPermanentGraph(graphCommits, new RefsModel(refMap, myHashMap.asIndexGetter()), myHashMap.asIndexGetter(), @@ -386,24 +393,31 @@ public class VcsLogRefresherImpl implements VcsLogRefresher { } @NotNull - private Collection> readFullLogFromVcs() throws VcsException { + private Collection>> readFullLogFromVcs() throws VcsException { final StopWatch sw = StopWatch.start("read full log from VCS"); - final Collection> commits = ContainerUtil.newArrayList(); + final Collection>> logs = ContainerUtil.newArrayList(); new ProviderIterator() { @Override void each(@NotNull VirtualFile root, @NotNull VcsLogProvider provider) throws VcsException { - commits.add(provider.readAllHashes(root, new Consumer() { + final List> graphCommits = ContainerUtil.newArrayList(); + provider.readAllHashes(root, new Consumer() { @Override public void consume(@NotNull VcsUser user) { myUserRegistry.addUser(user); } - })); + }, new Consumer() { + @Override + public void consume(TimedVcsCommit commit) { + graphCommits.add(compactCommit(commit, myHashMap)); + } + }); + logs.add(graphCommits); sw.rootCompleted(root); } }.iterate(myProviders); myUserRegistry.flush(); sw.report(); - return commits; + return logs; } } diff --git a/platform/vcs-log/impl/test/com/intellij/vcs/log/impl/TestVcsLogProvider.java b/platform/vcs-log/impl/test/com/intellij/vcs/log/impl/TestVcsLogProvider.java index d3709b2d8f55..850478b048dc 100644 --- a/platform/vcs-log/impl/test/com/intellij/vcs/log/impl/TestVcsLogProvider.java +++ b/platform/vcs-log/impl/test/com/intellij/vcs/log/impl/TestVcsLogProvider.java @@ -93,9 +93,9 @@ public class TestVcsLogProvider implements VcsLogProvider { return ContainerUtil.map(myCommits.subList(0, requirements.getCommitCount()), myCommitToMetadataConvertor); } - @NotNull @Override - public List readAllHashes(@NotNull VirtualFile root, @NotNull Consumer userRegistry) throws VcsException { + public void readAllHashes(@NotNull VirtualFile root, @NotNull Consumer userRegistry, + @NotNull Consumer commitConsumer) throws VcsException { try { myFullLogSemaphore.acquire(); } @@ -103,7 +103,9 @@ public class TestVcsLogProvider implements VcsLogProvider { throw new RuntimeException(e); } assertRoot(root); - return myCommits; + for (TimedVcsCommit commit : myCommits) { + commitConsumer.consume(commit); + } } private void assertRoot(@NotNull VirtualFile root) { diff --git a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/actions/handlers/XDebuggerRunToCursorActionHandler.java b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/actions/handlers/XDebuggerRunToCursorActionHandler.java index 2f38008f5c5a..66684da99205 100644 --- a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/actions/handlers/XDebuggerRunToCursorActionHandler.java +++ b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/actions/handlers/XDebuggerRunToCursorActionHandler.java @@ -15,7 +15,6 @@ */ package com.intellij.xdebugger.impl.actions.handlers; -import com.intellij.xdebugger.XDebuggerUtil; import com.intellij.xdebugger.impl.actions.XDebuggerSuspendedActionHandler; import com.intellij.xdebugger.impl.XDebuggerUtilImpl; import com.intellij.xdebugger.XDebugSession; @@ -34,9 +33,7 @@ public class XDebuggerRunToCursorActionHandler extends XDebuggerSuspendedActionH } protected boolean isEnabled(final @NotNull XDebugSession session, final DataContext dataContext) { - if (!super.isEnabled(session, dataContext)) return false; - XSourcePosition position = XDebuggerUtilImpl.getCaretPosition(session.getProject(), dataContext); - return position != null && XDebuggerUtil.getInstance().canPutBreakpointAt(session.getProject(), position.getFile(), position.getLine()); + return super.isEnabled(session, dataContext) && XDebuggerUtilImpl.getCaretPosition(session.getProject(), dataContext) != null; } protected void perform(@NotNull final XDebugSession session, final DataContext dataContext) { diff --git a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/evaluate/quick/XValueHint.java b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/evaluate/quick/XValueHint.java index cdfcad27354c..ca78932701d2 100644 --- a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/evaluate/quick/XValueHint.java +++ b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/evaluate/quick/XValueHint.java @@ -104,6 +104,7 @@ public class XValueHint extends AbstractValueHint { public void evaluated(@NotNull final XValue result) { result.computePresentation(new XValueNodePresentationConfigurator.ConfigurableXValueNodeImpl() { private XFullValueEvaluator myFullValueEvaluator; + private boolean myShown = false; @Override public void applyPresentation(@Nullable Icon icon, @@ -131,7 +132,7 @@ public class XValueHint extends AbstractValueHint { } showHint(component); } - else if (getType() == ValueHintType.MOUSE_CLICK_HINT) { + else if (getType() == ValueHintType.MOUSE_CLICK_HINT && !myShown) { showTree(result); } else { @@ -143,6 +144,7 @@ public class XValueHint extends AbstractValueHint { }); showHint(component); } + myShown = true; } @Override diff --git a/plugins/git4idea/src/git4idea/history/GitHistoryUtils.java b/plugins/git4idea/src/git4idea/history/GitHistoryUtils.java index 114b4beb5435..8273c3e1abdc 100644 --- a/plugins/git4idea/src/git4idea/history/GitHistoryUtils.java +++ b/plugins/git4idea/src/git4idea/history/GitHistoryUtils.java @@ -520,9 +520,19 @@ public class GitHistoryUtils { @NotNull VirtualFile root, @NotNull final Consumer userRegistry, @NotNull List parameters) throws VcsException { + List collector = ContainerUtil.newArrayList(); + readCommits(project, root, userRegistry, parameters, new CollectConsumer(collector)); + return collector; + } + + public static void readCommits(@NotNull final Project project, + @NotNull VirtualFile root, + @NotNull final Consumer userRegistry, + @NotNull List parameters, + @NotNull final Consumer commitConsumer) throws VcsException { final VcsLogObjectsFactory factory = getObjectsFactoryWithDisposeCheck(project); if (factory == null) { - return Collections.emptyList(); + return; } final int COMMIT_BUFFER = 1000; @@ -536,8 +546,6 @@ public class GitHistoryUtils { h.addParameters(parameters); h.endOptions(); - final List commits = ContainerUtil.newArrayList(); - final StringBuilder record = new StringBuilder(); final AtomicInteger records = new AtomicInteger(); final Ref ex = new Ref(); @@ -560,7 +568,10 @@ public class GitHistoryUtils { afterParseRemainder = line.substring(recordEnd + 1); } if (afterParseRemainder != null && records.incrementAndGet() > COMMIT_BUFFER) { // null means can't parse now - commits.addAll(parseCommit(parser, record, userRegistry, factory)); + List commits = parseCommit(parser, record, userRegistry, factory); + for (TimedVcsCommit commit : commits) { + commitConsumer.consume(commit); + } record.setLength(0); record.append(afterParseRemainder); } @@ -573,7 +584,10 @@ public class GitHistoryUtils { @Override public void processTerminated(int exitCode) { try { - commits.addAll(parseCommit(parser, record, userRegistry, factory)); + List commits = parseCommit(parser, record, userRegistry, factory); + for (TimedVcsCommit commit : commits) { + commitConsumer.consume(commit); + } } catch (Exception e) { ex.set(new VcsException(e)); @@ -589,7 +603,6 @@ public class GitHistoryUtils { if (!ex.isNull()) { throw ex.get(); } - return commits; } @NotNull diff --git a/plugins/git4idea/src/git4idea/log/GitBekParentFixer.java b/plugins/git4idea/src/git4idea/log/GitBekParentFixer.java index e469e61ca315..054ed9f90b48 100644 --- a/plugins/git4idea/src/git4idea/log/GitBekParentFixer.java +++ b/plugins/git4idea/src/git4idea/log/GitBekParentFixer.java @@ -27,49 +27,34 @@ import org.jetbrains.annotations.Nullable; import java.util.*; class GitBekParentFixer { - @NotNull - private final static String MAGIC_TEXT = "Merge remote"; - @NotNull - private final VcsLogFilterCollection MAGIC_FILTER = createVcsLogFilterCollection(); + @NotNull private static final String MAGIC_TEXT = "Merge remote"; + @NotNull private static final VcsLogFilterCollection MAGIC_FILTER = createVcsLogFilterCollection(); - @NotNull - private final VirtualFile myRoot; - @NotNull - private final GitLogProvider myGitLogProvider; - @NotNull - private final List myAllCommits; + @NotNull private final Set myWrongCommits; - GitBekParentFixer(@NotNull VirtualFile root, @NotNull GitLogProvider gitLogProvider, @NotNull List allCommits) { - myRoot = root; - myGitLogProvider = gitLogProvider; - myAllCommits = allCommits; + private GitBekParentFixer(@NotNull Set wrongCommits) { + myWrongCommits = wrongCommits; } @NotNull - List getCorrectCommits() throws VcsException { - if (!BekSorter.isBekEnabled()) - return myAllCommits; - - final Set wrongCommits = getWrongCommits(); - return new AbstractList() { - @Override - public TimedVcsCommit get(int index) { - TimedVcsCommit commit = myAllCommits.get(index); - if (!wrongCommits.contains(commit.getId())) - return commit; - - return reverseParents(commit); - } - - @Override - public int size() { - return myAllCommits.size(); - } - }; + static GitBekParentFixer prepare(@NotNull VirtualFile root, @NotNull GitLogProvider provider) throws VcsException { + if (!BekSorter.isBekEnabled()) { + return new GitBekParentFixer(Collections.emptySet()); + } + return new GitBekParentFixer(getWrongCommits(provider, root)); } - private Set getWrongCommits() throws VcsException { - List commitsMatchingFilter = myGitLogProvider.getCommitsMatchingFilter(myRoot, MAGIC_FILTER, -1); + @NotNull + TimedVcsCommit fixCommit(@NotNull TimedVcsCommit commit) { + if (!myWrongCommits.contains(commit.getId())) { + return commit; + } + return reverseParents(commit); + } + + @NotNull + private static Set getWrongCommits(@NotNull GitLogProvider provider, @NotNull VirtualFile root) throws VcsException { + List commitsMatchingFilter = provider.getCommitsMatchingFilter(root, MAGIC_FILTER, -1); return ContainerUtil.map2Set(commitsMatchingFilter, new Function() { @Override public Hash fun(TimedVcsCommit timedVcsCommit) { diff --git a/plugins/git4idea/src/git4idea/log/GitLogProvider.java b/plugins/git4idea/src/git4idea/log/GitLogProvider.java index ecc4709be5d3..435313fa5c7d 100644 --- a/plugins/git4idea/src/git4idea/log/GitLogProvider.java +++ b/plugins/git4idea/src/git4idea/log/GitLogProvider.java @@ -154,18 +154,23 @@ public class GitLogProvider implements VcsLogProvider { }); } - @NotNull @Override - public List readAllHashes(@NotNull VirtualFile root, @NotNull Consumer userRegistry) throws VcsException { + public void readAllHashes(@NotNull VirtualFile root, @NotNull Consumer userRegistry, + @NotNull final Consumer commitConsumer) throws VcsException { if (!isRepositoryReady(root)) { - return Collections.emptyList(); + return; } List parameters = new ArrayList(GitHistoryUtils.LOG_ALL); parameters.add("--sparse"); - List timedVcsCommits = GitHistoryUtils.readCommits(myProject, root, userRegistry, parameters); - return new GitBekParentFixer(root, this, timedVcsCommits).getCorrectCommits(); + final GitBekParentFixer parentFixer = GitBekParentFixer.prepare(root, this); + GitHistoryUtils.readCommits(myProject, root, userRegistry, parameters, new Consumer() { + @Override + public void consume(TimedVcsCommit commit) { + commitConsumer.consume(parentFixer.fixCommit(commit)); + } + }); } @NotNull diff --git a/plugins/git4idea/tests/git4idea/log/GitLogProviderTest.java b/plugins/git4idea/tests/git4idea/log/GitLogProviderTest.java index 797e0271b430..0bb67671622b 100644 --- a/plugins/git4idea/tests/git4idea/log/GitLogProviderTest.java +++ b/plugins/git4idea/tests/git4idea/log/GitLogProviderTest.java @@ -20,6 +20,7 @@ import com.intellij.openapi.util.Condition; import com.intellij.openapi.util.text.StringUtil; import com.intellij.openapi.vcs.VcsException; import com.intellij.util.ArrayUtil; +import com.intellij.util.CollectConsumer; import com.intellij.util.Consumer; import com.intellij.util.Function; import com.intellij.util.containers.ContainerUtil; @@ -84,9 +85,10 @@ public class GitLogProviderTest extends GitSingleRepoTest { prepareSomeHistory(); createTaggedBranch(); List expectedLog = log(); - @SuppressWarnings("unchecked") - List actualLog = myLogProvider.readAllHashes(myProjectRoot, Consumer.EMPTY_CONSUMER); - assertOrderedEquals(expectedLog, actualLog); + List collector = ContainerUtil.newArrayList(); + //noinspection unchecked + myLogProvider.readAllHashes(myProjectRoot, Consumer.EMPTY_CONSUMER, new CollectConsumer(collector)); + assertOrderedEquals(expectedLog, collector); } public void test_get_current_user() throws Exception { diff --git a/plugins/hg4idea/src/org/zmlx/hg4idea/log/HgLogProvider.java b/plugins/hg4idea/src/org/zmlx/hg4idea/log/HgLogProvider.java index 03c98621a8c2..4adec9dff515 100644 --- a/plugins/hg4idea/src/org/zmlx/hg4idea/log/HgLogProvider.java +++ b/plugins/hg4idea/src/org/zmlx/hg4idea/log/HgLogProvider.java @@ -64,10 +64,13 @@ public class HgLogProvider implements VcsLogProvider { return HgHistoryUtil.loadMetadata(myProject, root, requirements.getCommitCount(), Collections.emptyList()); } - @NotNull @Override - public List readAllHashes(@NotNull VirtualFile root, @NotNull Consumer userRegistry) throws VcsException { - return HgHistoryUtil.readAllHashes(myProject, root, userRegistry, Collections.emptyList()); + public void readAllHashes(@NotNull VirtualFile root, @NotNull Consumer userRegistry, + @NotNull Consumer commitConsumer) throws VcsException { + List commits = HgHistoryUtil.readAllHashes(myProject, root, userRegistry, Collections.emptyList()); + for (TimedVcsCommit commit : commits) { + commitConsumer.consume(commit); + } } @NotNull diff --git a/python/build/pycharm_community_build.gant b/python/build/pycharm_community_build.gant index 1d73b83048a8..cfaaf33f3bd0 100644 --- a/python/build/pycharm_community_build.gant +++ b/python/build/pycharm_community_build.gant @@ -331,8 +331,7 @@ private layoutWin(Map args, String target) { } winScripts(target, ch, "pycharm.bat", args) - winVMOptions(target, null, "pycharm.exe") - + winVMOptions(target, null, "pycharm.exe", "pycharm64.exe") ant.copy(file: "$home/python/help/pycharmhelp.jar", todir: "$target/help", failonerror: false) } diff --git a/python/edu/build/build.xml b/python/edu/build/build.xml index a78ba92d22ac..913237c81f27 100644 --- a/python/edu/build/build.xml +++ b/python/edu/build/build.xml @@ -1,5 +1,5 @@ - + @@ -30,7 +30,7 @@ - + diff --git a/python/edu/build/pycharm_edu_build.gant b/python/edu/build/pycharm_edu_build.gant index 56aa1d2dc560..a8966ee7fe0f 100644 --- a/python/edu/build/pycharm_edu_build.gant +++ b/python/edu/build/pycharm_edu_build.gant @@ -29,7 +29,7 @@ setProperty("pythonCommunityHome", "$home/python") setProperty("pythonEduHome", "$home/python/edu") // load ApplicationInfo.xml properties -ant.xmlproperty(file: "$pythonCommunityHome/resources/idea/PyCharmEduApplicationInfo.xml", collapseAttributes: "true") +ant.xmlproperty(file: "$pythonEduHome/resources/idea/PyCharmEduApplicationInfo.xml", collapseAttributes: "true") setProperty("system_selector", "PyCharm${p("component.version.major")}0") setProperty("dryRun", false) @@ -44,8 +44,8 @@ private List pycharmPlatformApiModules() { private List pycharmImplementationModules() { //modules to put into pycharm.jar - return [platformImplementationModules, "dom-impl", "python-community", "python-ide-community", "python-openapi", "python-psi-api", - "platform-main", "python-educational"].flatten() + return [platformImplementationModules, "dom-impl", "python-community", "python-ide-community", "python-educational", "python-openapi", "python-psi-api", + "platform-main"].flatten() } private List modules() { @@ -182,7 +182,7 @@ public layoutEducational(String classesPath, Set usedJars) { "$ch/platform/icons/src", "$pythonEduHome/resources"] buildWinLauncher("$ch", "$ch/bin/WinLauncher/WinLauncher.exe", launcher, - appInfo, "$pythonCommunityHome/build/pycharm_edu_launcher.properties", system_selector, resourcePaths) + appInfo, "$pythonEduHome/build/pycharm_edu_launcher.properties", system_selector, resourcePaths) buildWinZip("${paths.artifacts}/pycharmPE-${buildNumber}.zip", [paths.distAll, paths.distWin]) @@ -199,11 +199,11 @@ private layoutPlugins(layouts) { layouts.layoutPlugin("python-rest") } - layouts.layoutEducationalPlugins(ch) + layouts.layoutCommunityPlugins(ch) } private String appInfoFile(String classesPath) { - return "$classesPath/python-community/idea/PyCharmEduApplicationInfo.xml" + return "$classesPath/python-educational/idea/PyCharmEduApplicationInfo.xml" } private layoutFull(Map args, String target, Set usedJars) { diff --git a/python/edu/resources/ProductivityFeaturesRegistry.xml b/python/edu/resources/ProductivityFeaturesRegistry.xml deleted file mode 100644 index 2910dc26b475..000000000000 --- a/python/edu/resources/ProductivityFeaturesRegistry.xml +++ /dev/null @@ -1,293 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/python/edu/resources/colorSchemes/PythonDarcula.xml b/python/edu/resources/colorSchemes/PythonDarcula.xml deleted file mode 100644 index 97d59dde6c58..000000000000 --- a/python/edu/resources/colorSchemes/PythonDarcula.xml +++ /dev/null @@ -1,68 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/python/edu/resources/colorSchemes/PythonDefault.xml b/python/edu/resources/colorSchemes/PythonDefault.xml deleted file mode 100644 index 058ac3c402f1..000000000000 --- a/python/edu/resources/colorSchemes/PythonDefault.xml +++ /dev/null @@ -1,62 +0,0 @@ - - - - - - - - - - - - - - diff --git a/python/edu/resources/icons/com/jetbrains/pyqt/tsFile.png b/python/edu/resources/icons/com/jetbrains/pyqt/tsFile.png deleted file mode 100644 index b87e71b3a14f..000000000000 Binary files a/python/edu/resources/icons/com/jetbrains/pyqt/tsFile.png and /dev/null differ diff --git a/python/edu/resources/icons/com/jetbrains/pyqt/tsFile@2x.png b/python/edu/resources/icons/com/jetbrains/pyqt/tsFile@2x.png deleted file mode 100644 index 628e5af168b1..000000000000 Binary files a/python/edu/resources/icons/com/jetbrains/pyqt/tsFile@2x.png and /dev/null differ diff --git a/python/edu/resources/icons/com/jetbrains/pyqt/uiForm.png b/python/edu/resources/icons/com/jetbrains/pyqt/uiForm.png deleted file mode 100644 index ad5c245e8f1c..000000000000 Binary files a/python/edu/resources/icons/com/jetbrains/pyqt/uiForm.png and /dev/null differ diff --git a/python/edu/resources/icons/com/jetbrains/pyqt/uiForm@2x.png b/python/edu/resources/icons/com/jetbrains/pyqt/uiForm@2x.png deleted file mode 100644 index a4b359a8a4fa..000000000000 Binary files a/python/edu/resources/icons/com/jetbrains/pyqt/uiForm@2x.png and /dev/null differ diff --git a/python/edu/resources/icons/com/jetbrains/python/buildout/buildout.png b/python/edu/resources/icons/com/jetbrains/python/buildout/buildout.png deleted file mode 100644 index 21710ea36466..000000000000 Binary files a/python/edu/resources/icons/com/jetbrains/python/buildout/buildout.png and /dev/null differ diff --git a/python/edu/resources/icons/com/jetbrains/python/buildout/buildout@2x.png b/python/edu/resources/icons/com/jetbrains/python/buildout/buildout@2x.png deleted file mode 100644 index e0bcb6e65933..000000000000 Binary files a/python/edu/resources/icons/com/jetbrains/python/buildout/buildout@2x.png and /dev/null differ diff --git a/python/edu/resources/icons/com/jetbrains/python/debug/commandLine.png b/python/edu/resources/icons/com/jetbrains/python/debug/commandLine.png deleted file mode 100644 index 3d2333b0e7e8..000000000000 Binary files a/python/edu/resources/icons/com/jetbrains/python/debug/commandLine.png and /dev/null differ diff --git a/python/edu/resources/icons/com/jetbrains/python/debug/commandLine@2x.png b/python/edu/resources/icons/com/jetbrains/python/debug/commandLine@2x.png deleted file mode 100644 index a70992337f1e..000000000000 Binary files a/python/edu/resources/icons/com/jetbrains/python/debug/commandLine@2x.png and /dev/null differ diff --git a/python/edu/resources/icons/com/jetbrains/python/dotnet.png b/python/edu/resources/icons/com/jetbrains/python/dotnet.png deleted file mode 100644 index b7ff8dbb0cbe..000000000000 Binary files a/python/edu/resources/icons/com/jetbrains/python/dotnet.png and /dev/null differ diff --git a/python/edu/resources/icons/com/jetbrains/python/dotnet@2x.png b/python/edu/resources/icons/com/jetbrains/python/dotnet@2x.png deleted file mode 100644 index 1c08889f8a00..000000000000 Binary files a/python/edu/resources/icons/com/jetbrains/python/dotnet@2x.png and /dev/null differ diff --git a/python/edu/resources/icons/com/jetbrains/python/interpreterGear.png b/python/edu/resources/icons/com/jetbrains/python/interpreterGear.png deleted file mode 100644 index ea7f94761fdb..000000000000 Binary files a/python/edu/resources/icons/com/jetbrains/python/interpreterGear.png and /dev/null differ diff --git a/python/edu/resources/icons/com/jetbrains/python/interpreterGear@2x.png b/python/edu/resources/icons/com/jetbrains/python/interpreterGear@2x.png deleted file mode 100644 index fe190f2412aa..000000000000 Binary files a/python/edu/resources/icons/com/jetbrains/python/interpreterGear@2x.png and /dev/null differ diff --git a/python/edu/resources/icons/com/jetbrains/python/interpreterGear@2x_dark.png b/python/edu/resources/icons/com/jetbrains/python/interpreterGear@2x_dark.png deleted file mode 100644 index 2d77aac65fa5..000000000000 Binary files a/python/edu/resources/icons/com/jetbrains/python/interpreterGear@2x_dark.png and /dev/null differ diff --git a/python/edu/resources/icons/com/jetbrains/python/interpreterGear_dark.png b/python/edu/resources/icons/com/jetbrains/python/interpreterGear_dark.png deleted file mode 100644 index 44e79af9551d..000000000000 Binary files a/python/edu/resources/icons/com/jetbrains/python/interpreterGear_dark.png and /dev/null differ diff --git a/python/edu/resources/icons/com/jetbrains/python/jython.png b/python/edu/resources/icons/com/jetbrains/python/jython.png deleted file mode 100644 index ed5d76a9fcd3..000000000000 Binary files a/python/edu/resources/icons/com/jetbrains/python/jython.png and /dev/null differ diff --git a/python/edu/resources/icons/com/jetbrains/python/jython@2x.png b/python/edu/resources/icons/com/jetbrains/python/jython@2x.png deleted file mode 100644 index ff092c1449e6..000000000000 Binary files a/python/edu/resources/icons/com/jetbrains/python/jython@2x.png and /dev/null differ diff --git a/python/edu/resources/icons/com/jetbrains/python/nodes/cyan-dot.png b/python/edu/resources/icons/com/jetbrains/python/nodes/cyan-dot.png deleted file mode 100644 index 9118f7dfe9a8..000000000000 Binary files a/python/edu/resources/icons/com/jetbrains/python/nodes/cyan-dot.png and /dev/null differ diff --git a/python/edu/resources/icons/com/jetbrains/python/nodes/cyan-dot@2x.png b/python/edu/resources/icons/com/jetbrains/python/nodes/cyan-dot@2x.png deleted file mode 100644 index 6b4f5766e5ce..000000000000 Binary files a/python/edu/resources/icons/com/jetbrains/python/nodes/cyan-dot@2x.png and /dev/null differ diff --git a/python/edu/resources/icons/com/jetbrains/python/nodes/lock.png b/python/edu/resources/icons/com/jetbrains/python/nodes/lock.png deleted file mode 100644 index be02730a235a..000000000000 Binary files a/python/edu/resources/icons/com/jetbrains/python/nodes/lock.png and /dev/null differ diff --git a/python/edu/resources/icons/com/jetbrains/python/nodes/lock@2x.png b/python/edu/resources/icons/com/jetbrains/python/nodes/lock@2x.png deleted file mode 100644 index 84c278689df8..000000000000 Binary files a/python/edu/resources/icons/com/jetbrains/python/nodes/lock@2x.png and /dev/null differ diff --git a/python/edu/resources/icons/com/jetbrains/python/nodes/red-inv-triangle.png b/python/edu/resources/icons/com/jetbrains/python/nodes/red-inv-triangle.png deleted file mode 100644 index c078c76171b6..000000000000 Binary files a/python/edu/resources/icons/com/jetbrains/python/nodes/red-inv-triangle.png and /dev/null differ diff --git a/python/edu/resources/icons/com/jetbrains/python/nodes/red-inv-triangle@2x.png b/python/edu/resources/icons/com/jetbrains/python/nodes/red-inv-triangle@2x.png deleted file mode 100644 index 1c7c45e60332..000000000000 Binary files a/python/edu/resources/icons/com/jetbrains/python/nodes/red-inv-triangle@2x.png and /dev/null differ diff --git a/python/edu/resources/icons/com/jetbrains/python/propertyDeleter.png b/python/edu/resources/icons/com/jetbrains/python/propertyDeleter.png deleted file mode 100644 index 908454736bed..000000000000 Binary files a/python/edu/resources/icons/com/jetbrains/python/propertyDeleter.png and /dev/null differ diff --git a/python/edu/resources/icons/com/jetbrains/python/propertyDeleter@2x.png b/python/edu/resources/icons/com/jetbrains/python/propertyDeleter@2x.png deleted file mode 100644 index 5e022744fb00..000000000000 Binary files a/python/edu/resources/icons/com/jetbrains/python/propertyDeleter@2x.png and /dev/null differ diff --git a/python/edu/resources/icons/com/jetbrains/python/propertyDeleter@2x_dark.png b/python/edu/resources/icons/com/jetbrains/python/propertyDeleter@2x_dark.png deleted file mode 100644 index fc0705981518..000000000000 Binary files a/python/edu/resources/icons/com/jetbrains/python/propertyDeleter@2x_dark.png and /dev/null differ diff --git a/python/edu/resources/icons/com/jetbrains/python/propertyDeleter_dark.png b/python/edu/resources/icons/com/jetbrains/python/propertyDeleter_dark.png deleted file mode 100644 index 65dd90b3a066..000000000000 Binary files a/python/edu/resources/icons/com/jetbrains/python/propertyDeleter_dark.png and /dev/null differ diff --git a/python/edu/resources/icons/com/jetbrains/python/propertyGetter.png b/python/edu/resources/icons/com/jetbrains/python/propertyGetter.png deleted file mode 100644 index d3069a8d2650..000000000000 Binary files a/python/edu/resources/icons/com/jetbrains/python/propertyGetter.png and /dev/null differ diff --git a/python/edu/resources/icons/com/jetbrains/python/propertyGetter@2x.png b/python/edu/resources/icons/com/jetbrains/python/propertyGetter@2x.png deleted file mode 100644 index bbb02025b6f2..000000000000 Binary files a/python/edu/resources/icons/com/jetbrains/python/propertyGetter@2x.png and /dev/null differ diff --git a/python/edu/resources/icons/com/jetbrains/python/propertyGetter@2x_dark.png b/python/edu/resources/icons/com/jetbrains/python/propertyGetter@2x_dark.png deleted file mode 100644 index 69e1fe4d52c6..000000000000 Binary files a/python/edu/resources/icons/com/jetbrains/python/propertyGetter@2x_dark.png and /dev/null differ diff --git a/python/edu/resources/icons/com/jetbrains/python/propertyGetter_dark.png b/python/edu/resources/icons/com/jetbrains/python/propertyGetter_dark.png deleted file mode 100644 index cf114e38c516..000000000000 Binary files a/python/edu/resources/icons/com/jetbrains/python/propertyGetter_dark.png and /dev/null differ diff --git a/python/edu/resources/icons/com/jetbrains/python/propertySetter.png b/python/edu/resources/icons/com/jetbrains/python/propertySetter.png deleted file mode 100644 index 0154c387fd74..000000000000 Binary files a/python/edu/resources/icons/com/jetbrains/python/propertySetter.png and /dev/null differ diff --git a/python/edu/resources/icons/com/jetbrains/python/propertySetter@2x.png b/python/edu/resources/icons/com/jetbrains/python/propertySetter@2x.png deleted file mode 100644 index f9dbee7c1905..000000000000 Binary files a/python/edu/resources/icons/com/jetbrains/python/propertySetter@2x.png and /dev/null differ diff --git a/python/edu/resources/icons/com/jetbrains/python/propertySetter@2x_dark.png b/python/edu/resources/icons/com/jetbrains/python/propertySetter@2x_dark.png deleted file mode 100644 index 072bd5e4e8b7..000000000000 Binary files a/python/edu/resources/icons/com/jetbrains/python/propertySetter@2x_dark.png and /dev/null differ diff --git a/python/edu/resources/icons/com/jetbrains/python/propertySetter_dark.png b/python/edu/resources/icons/com/jetbrains/python/propertySetter_dark.png deleted file mode 100644 index 75f0423c8103..000000000000 Binary files a/python/edu/resources/icons/com/jetbrains/python/propertySetter_dark.png and /dev/null differ diff --git a/python/edu/resources/icons/com/jetbrains/python/pypy.png b/python/edu/resources/icons/com/jetbrains/python/pypy.png deleted file mode 100644 index 1649f3a6b6b8..000000000000 Binary files a/python/edu/resources/icons/com/jetbrains/python/pypy.png and /dev/null differ diff --git a/python/edu/resources/icons/com/jetbrains/python/pypy@2x.png b/python/edu/resources/icons/com/jetbrains/python/pypy@2x.png deleted file mode 100644 index a55a1a20c38d..000000000000 Binary files a/python/edu/resources/icons/com/jetbrains/python/pypy@2x.png and /dev/null differ diff --git a/python/edu/resources/icons/com/jetbrains/python/python-logo.png b/python/edu/resources/icons/com/jetbrains/python/python-logo.png deleted file mode 100644 index 87fff4d6dbfb..000000000000 Binary files a/python/edu/resources/icons/com/jetbrains/python/python-logo.png and /dev/null differ diff --git a/python/edu/resources/icons/com/jetbrains/python/python.png b/python/edu/resources/icons/com/jetbrains/python/python.png deleted file mode 100644 index 02f66b7fabd4..000000000000 Binary files a/python/edu/resources/icons/com/jetbrains/python/python.png and /dev/null differ diff --git a/python/edu/resources/icons/com/jetbrains/python/python@2x.png b/python/edu/resources/icons/com/jetbrains/python/python@2x.png deleted file mode 100644 index 87fff4d6dbfb..000000000000 Binary files a/python/edu/resources/icons/com/jetbrains/python/python@2x.png and /dev/null differ diff --git a/python/edu/resources/icons/com/jetbrains/python/pythonClosed.png b/python/edu/resources/icons/com/jetbrains/python/pythonClosed.png deleted file mode 100644 index d3d3257cf83e..000000000000 Binary files a/python/edu/resources/icons/com/jetbrains/python/pythonClosed.png and /dev/null differ diff --git a/python/edu/resources/icons/com/jetbrains/python/pythonClosed@2x.png b/python/edu/resources/icons/com/jetbrains/python/pythonClosed@2x.png deleted file mode 100644 index 68d99e2eeb8d..000000000000 Binary files a/python/edu/resources/icons/com/jetbrains/python/pythonClosed@2x.png and /dev/null differ diff --git a/python/edu/resources/icons/com/jetbrains/python/pythonTests.png b/python/edu/resources/icons/com/jetbrains/python/pythonTests.png deleted file mode 100644 index 5bcf60420dc9..000000000000 Binary files a/python/edu/resources/icons/com/jetbrains/python/pythonTests.png and /dev/null differ diff --git a/python/edu/resources/icons/com/jetbrains/python/pythonTests@2x.png b/python/edu/resources/icons/com/jetbrains/python/pythonTests@2x.png deleted file mode 100644 index 2bbbec6755ca..000000000000 Binary files a/python/edu/resources/icons/com/jetbrains/python/pythonTests@2x.png and /dev/null differ diff --git a/python/edu/resources/icons/com/jetbrains/python/python_24.png b/python/edu/resources/icons/com/jetbrains/python/python_24.png deleted file mode 100644 index fbdfc6ab02c9..000000000000 Binary files a/python/edu/resources/icons/com/jetbrains/python/python_24.png and /dev/null differ diff --git a/python/edu/resources/icons/com/jetbrains/python/python_24@2x.png b/python/edu/resources/icons/com/jetbrains/python/python_24@2x.png deleted file mode 100644 index 5cef65bcb381..000000000000 Binary files a/python/edu/resources/icons/com/jetbrains/python/python_24@2x.png and /dev/null differ diff --git a/python/edu/resources/icons/com/jetbrains/python/templateRoot.png b/python/edu/resources/icons/com/jetbrains/python/templateRoot.png deleted file mode 100644 index 32d4880ec454..000000000000 Binary files a/python/edu/resources/icons/com/jetbrains/python/templateRoot.png and /dev/null differ diff --git a/python/edu/resources/icons/com/jetbrains/python/templateRoot@2x.png b/python/edu/resources/icons/com/jetbrains/python/templateRoot@2x.png deleted file mode 100644 index bc475d5c0771..000000000000 Binary files a/python/edu/resources/icons/com/jetbrains/python/templateRoot@2x.png and /dev/null differ diff --git a/python/edu/resources/icons/com/jetbrains/python/virtualenv.png b/python/edu/resources/icons/com/jetbrains/python/virtualenv.png deleted file mode 100644 index 2c0f94f19608..000000000000 Binary files a/python/edu/resources/icons/com/jetbrains/python/virtualenv.png and /dev/null differ diff --git a/python/edu/resources/icons/com/jetbrains/python/virtualenv@2x.png b/python/edu/resources/icons/com/jetbrains/python/virtualenv@2x.png deleted file mode 100644 index 721a63b883bd..000000000000 Binary files a/python/edu/resources/icons/com/jetbrains/python/virtualenv@2x.png and /dev/null differ diff --git a/python/edu/resources/inspectionDescriptions/BuildoutUnresolvedPartInspection.html b/python/edu/resources/inspectionDescriptions/BuildoutUnresolvedPartInspection.html deleted file mode 100644 index b5b36c654afe..000000000000 --- a/python/edu/resources/inspectionDescriptions/BuildoutUnresolvedPartInspection.html +++ /dev/null @@ -1,5 +0,0 @@ - - -This inspection highlights unresolved buildout parts. - - diff --git a/python/edu/resources/inspectionDescriptions/PyAbstractClassInspection.html b/python/edu/resources/inspectionDescriptions/PyAbstractClassInspection.html deleted file mode 100644 index 41d83f7dcb9c..000000000000 --- a/python/edu/resources/inspectionDescriptions/PyAbstractClassInspection.html +++ /dev/null @@ -1,7 +0,0 @@ - - - - This inspection detects when there aren't all abstract properties/methods are defined in subclass - - - \ No newline at end of file diff --git a/python/edu/resources/inspectionDescriptions/PyArgumentEqualDefaultInspection.html b/python/edu/resources/inspectionDescriptions/PyArgumentEqualDefaultInspection.html deleted file mode 100644 index 16d894ec131c..000000000000 --- a/python/edu/resources/inspectionDescriptions/PyArgumentEqualDefaultInspection.html +++ /dev/null @@ -1,7 +0,0 @@ - - - -This inspection highlights situations, where argument passed to function is equal to default parameter value - - - \ No newline at end of file diff --git a/python/edu/resources/inspectionDescriptions/PyArgumentListInspection.html b/python/edu/resources/inspectionDescriptions/PyArgumentListInspection.html deleted file mode 100644 index 97d74c0f04ed..000000000000 --- a/python/edu/resources/inspectionDescriptions/PyArgumentListInspection.html +++ /dev/null @@ -1,8 +0,0 @@ - - - -This inspection reports discrepancies between declared parameters and actual arguments, as well as -incorrect arguments (e.g. duplicate named arguments) and incorrect argument order. Decorators are analyzed, too. - - - diff --git a/python/edu/resources/inspectionDescriptions/PyAssignmentToLoopOrWithParameterInspection.html b/python/edu/resources/inspectionDescriptions/PyAssignmentToLoopOrWithParameterInspection.html deleted file mode 100644 index 4fc3dcd20164..000000000000 --- a/python/edu/resources/inspectionDescriptions/PyAssignmentToLoopOrWithParameterInspection.html +++ /dev/null @@ -1,21 +0,0 @@ - - - - Checks for cases when you rewrite loop variable with inner loop - -
-    for i in xrange(5):
-      for i in xrange(20, 25):
-          print("Inner", i)
-      print("Outer", i)
-  
- - It also warns you if variable declared in with statement is redeclared inside of statement body: - -
-    with open("file") as f:
-      f.read()
-      with open("file") as f:
-  
- - diff --git a/python/edu/resources/inspectionDescriptions/PyAttributeOutsideInitInspection.html b/python/edu/resources/inspectionDescriptions/PyAttributeOutsideInitInspection.html deleted file mode 100644 index 4e0fee15aac0..000000000000 --- a/python/edu/resources/inspectionDescriptions/PyAttributeOutsideInitInspection.html +++ /dev/null @@ -1,7 +0,0 @@ - - - -This inspection detects instance attribute definition outside __init__ method - - - \ No newline at end of file diff --git a/python/edu/resources/inspectionDescriptions/PyAugmentAssignmentInspection.html b/python/edu/resources/inspectionDescriptions/PyAugmentAssignmentInspection.html deleted file mode 100644 index f9684908d722..000000000000 --- a/python/edu/resources/inspectionDescriptions/PyAugmentAssignmentInspection.html +++ /dev/null @@ -1,7 +0,0 @@ - - - -This inspection highlights assignment that can be replaced with augmented assignment. - - - \ No newline at end of file diff --git a/python/edu/resources/inspectionDescriptions/PyBroadExceptionInspection.html b/python/edu/resources/inspectionDescriptions/PyBroadExceptionInspection.html deleted file mode 100644 index 67c31a550156..000000000000 --- a/python/edu/resources/inspectionDescriptions/PyBroadExceptionInspection.html +++ /dev/null @@ -1,8 +0,0 @@ - - - -This inspection highlights too broad exception clauses such as -no exception class specified, or specified as 'Exception'. - - - \ No newline at end of file diff --git a/python/edu/resources/inspectionDescriptions/PyByteLiteralInspection.html b/python/edu/resources/inspectionDescriptions/PyByteLiteralInspection.html deleted file mode 100644 index e26cb4c5f6ed..000000000000 --- a/python/edu/resources/inspectionDescriptions/PyByteLiteralInspection.html +++ /dev/null @@ -1,7 +0,0 @@ - - - - This inspection detects characters > 255 in byte literals. - - - \ No newline at end of file diff --git a/python/edu/resources/inspectionDescriptions/PyCallByClassInspection.html b/python/edu/resources/inspectionDescriptions/PyCallByClassInspection.html deleted file mode 100644 index 7bc9775f3135..000000000000 --- a/python/edu/resources/inspectionDescriptions/PyCallByClassInspection.html +++ /dev/null @@ -1,15 +0,0 @@ - - -

-This inspection checks for calls of a method by class while passing an instance of a different class -as self parameter:

-
-  foo = Foo()
-  Bar.baz(foo, *more)
-
-

-Sometimes this may be intentional and correct. -But when unintentional, this leads to subtle bugs. -

- - diff --git a/python/edu/resources/inspectionDescriptions/PyCallingNonCallableInspection.html b/python/edu/resources/inspectionDescriptions/PyCallingNonCallableInspection.html deleted file mode 100644 index fdc8ed156416..000000000000 --- a/python/edu/resources/inspectionDescriptions/PyCallingNonCallableInspection.html +++ /dev/null @@ -1,7 +0,0 @@ - - - - This inspection highlights attempts to call objects which are not callable, like, for example, tuples. - - - \ No newline at end of file diff --git a/python/edu/resources/inspectionDescriptions/PyChainedComparisonsInspection.html b/python/edu/resources/inspectionDescriptions/PyChainedComparisonsInspection.html deleted file mode 100644 index 657c918d0c8f..000000000000 --- a/python/edu/resources/inspectionDescriptions/PyChainedComparisonsInspection.html +++ /dev/null @@ -1,7 +0,0 @@ - - - -This inspection highlights chained comparisons that can be simplified. - - - \ No newline at end of file diff --git a/python/edu/resources/inspectionDescriptions/PyClassHasNoInitInspection.html b/python/edu/resources/inspectionDescriptions/PyClassHasNoInitInspection.html deleted file mode 100644 index c31c8f8bf788..000000000000 --- a/python/edu/resources/inspectionDescriptions/PyClassHasNoInitInspection.html +++ /dev/null @@ -1,7 +0,0 @@ - - - -This inspection used when a class has no __init__ method, neither its parent classes. - - - \ No newline at end of file diff --git a/python/edu/resources/inspectionDescriptions/PyClassicStyleClassInspection.html b/python/edu/resources/inspectionDescriptions/PyClassicStyleClassInspection.html deleted file mode 100644 index 3894d7fe87c3..000000000000 --- a/python/edu/resources/inspectionDescriptions/PyClassicStyleClassInspection.html +++ /dev/null @@ -1,5 +0,0 @@ - - -This inspection detects classic style classes usage. - - \ No newline at end of file diff --git a/python/edu/resources/inspectionDescriptions/PyComparisonWithNoneInspection.html b/python/edu/resources/inspectionDescriptions/PyComparisonWithNoneInspection.html deleted file mode 100644 index 37a8c54b1627..000000000000 --- a/python/edu/resources/inspectionDescriptions/PyComparisonWithNoneInspection.html +++ /dev/null @@ -1,8 +0,0 @@ - - - - This inspection highlights comparisons with None. That type of comparisons - should always be done with 'is' or 'is not', never the equality operators. - - - \ No newline at end of file diff --git a/python/edu/resources/inspectionDescriptions/PyCompatibilityInspection.html b/python/edu/resources/inspectionDescriptions/PyCompatibilityInspection.html deleted file mode 100644 index 7bb11b11976d..000000000000 --- a/python/edu/resources/inspectionDescriptions/PyCompatibilityInspection.html +++ /dev/null @@ -1,8 +0,0 @@ - - - -Enable this inspection if you need your code to be compatible with a range of Python versions (for example, if you're building a library). -The range of Python versions with which the code needs to be compatible can be specified in the inspection settings. - - - \ No newline at end of file diff --git a/python/edu/resources/inspectionDescriptions/PyDecoratorInspection.html b/python/edu/resources/inspectionDescriptions/PyDecoratorInspection.html deleted file mode 100644 index 1265e99e5579..000000000000 --- a/python/edu/resources/inspectionDescriptions/PyDecoratorInspection.html +++ /dev/null @@ -1,7 +0,0 @@ - - -

-This inspection reports usages of @classmethod or @staticmethod decorators on functions outside of a class. -

- - diff --git a/python/edu/resources/inspectionDescriptions/PyDefaultArgumentInspection.html b/python/edu/resources/inspectionDescriptions/PyDefaultArgumentInspection.html deleted file mode 100644 index 3dced26af04e..000000000000 --- a/python/edu/resources/inspectionDescriptions/PyDefaultArgumentInspection.html +++ /dev/null @@ -1,9 +0,0 @@ - - - - This inspection detects when a mutable value as list or dictionary is detected in a default value for an argument.
- Default argument values are evaluated only once at function definition time, which means that modifying the - default value of the argument will affect all subsequent calls of the function. -
- - \ No newline at end of file diff --git a/python/edu/resources/inspectionDescriptions/PyDeprecatedModulesInspection.html b/python/edu/resources/inspectionDescriptions/PyDeprecatedModulesInspection.html deleted file mode 100644 index 0d03609e0a00..000000000000 --- a/python/edu/resources/inspectionDescriptions/PyDeprecatedModulesInspection.html +++ /dev/null @@ -1,7 +0,0 @@ - - - - This inspection highlight import statements references a module which is deprecated in current Python version. - - - \ No newline at end of file diff --git a/python/edu/resources/inspectionDescriptions/PyDeprecationInspection.html b/python/edu/resources/inspectionDescriptions/PyDeprecationInspection.html deleted file mode 100644 index 46c89d8ed8d1..000000000000 --- a/python/edu/resources/inspectionDescriptions/PyDeprecationInspection.html +++ /dev/null @@ -1,8 +0,0 @@ - - - - This inspection highlights usages of Python functions, classes or methods which are marked as deprecated (which raise a - DeprecationWarning or a PendingDeprecationWarning). - - - \ No newline at end of file diff --git a/python/edu/resources/inspectionDescriptions/PyDictCreationInspection.html b/python/edu/resources/inspectionDescriptions/PyDictCreationInspection.html deleted file mode 100644 index af988be8ce9a..000000000000 --- a/python/edu/resources/inspectionDescriptions/PyDictCreationInspection.html +++ /dev/null @@ -1,6 +0,0 @@ - - -This inspection detects situations when dictionary creation - could be rewritten with dictionary literal. - - \ No newline at end of file diff --git a/python/edu/resources/inspectionDescriptions/PyDictDuplicateKeysInspection.html b/python/edu/resources/inspectionDescriptions/PyDictDuplicateKeysInspection.html deleted file mode 100644 index 8f828987ba89..000000000000 --- a/python/edu/resources/inspectionDescriptions/PyDictDuplicateKeysInspection.html +++ /dev/null @@ -1,7 +0,0 @@ - - - -This inspection highlights using the same value as dictionary key twice. - - - \ No newline at end of file diff --git a/python/edu/resources/inspectionDescriptions/PyDocstringInspection.html b/python/edu/resources/inspectionDescriptions/PyDocstringInspection.html deleted file mode 100644 index f9f48e5e7204..000000000000 --- a/python/edu/resources/inspectionDescriptions/PyDocstringInspection.html +++ /dev/null @@ -1,7 +0,0 @@ - - - - This inspection detects mismatched parameters in docstring, lack of docstring and an empty docstring. - - - \ No newline at end of file diff --git a/python/edu/resources/inspectionDescriptions/PyDocstringTypesInspection.html b/python/edu/resources/inspectionDescriptions/PyDocstringTypesInspection.html deleted file mode 100644 index 18f462f3a161..000000000000 --- a/python/edu/resources/inspectionDescriptions/PyDocstringTypesInspection.html +++ /dev/null @@ -1,5 +0,0 @@ - - -This inspection highlights types in docstring which don't match dynamically inferred types. - - \ No newline at end of file diff --git a/python/edu/resources/inspectionDescriptions/PyExceptClausesOrderInspection.html b/python/edu/resources/inspectionDescriptions/PyExceptClausesOrderInspection.html deleted file mode 100644 index d6ade17849ec..000000000000 --- a/python/edu/resources/inspectionDescriptions/PyExceptClausesOrderInspection.html +++ /dev/null @@ -1,9 +0,0 @@ - - - - This inspection highlights situations when except clauses are not in the correct order - (from the more specific to the more generic) or one exception class is caught twice.
- If you don't fix the order, some exceptions may not be catched by the most specific handler. -
- - \ No newline at end of file diff --git a/python/edu/resources/inspectionDescriptions/PyExceptionInheritInspection.html b/python/edu/resources/inspectionDescriptions/PyExceptionInheritInspection.html deleted file mode 100644 index 71ba2f796ad0..000000000000 --- a/python/edu/resources/inspectionDescriptions/PyExceptionInheritInspection.html +++ /dev/null @@ -1,7 +0,0 @@ - - - - This inspection detects when a custom exception class is raised but doesn't inherit from the builtin "Exception" class. - - - \ No newline at end of file diff --git a/python/edu/resources/inspectionDescriptions/PyFromFutureImportInspection.html b/python/edu/resources/inspectionDescriptions/PyFromFutureImportInspection.html deleted file mode 100644 index 1161ea2b1035..000000000000 --- a/python/edu/resources/inspectionDescriptions/PyFromFutureImportInspection.html +++ /dev/null @@ -1,7 +0,0 @@ - - - - This inspection detects 'from __future__ import' statements which are used not in the beginning of a file. - - - \ No newline at end of file diff --git a/python/edu/resources/inspectionDescriptions/PyGlobalUndefinedInspection.html b/python/edu/resources/inspectionDescriptions/PyGlobalUndefinedInspection.html deleted file mode 100644 index f493865fdbd7..000000000000 --- a/python/edu/resources/inspectionDescriptions/PyGlobalUndefinedInspection.html +++ /dev/null @@ -1,7 +0,0 @@ - - - - This inspection is used when a variable is defined through the "global" statement but the variable is not defined in the module scope. - - - \ No newline at end of file diff --git a/python/edu/resources/inspectionDescriptions/PyInconsistentIndentationInspection.html b/python/edu/resources/inspectionDescriptions/PyInconsistentIndentationInspection.html deleted file mode 100644 index 9fefe1fa6f88..000000000000 --- a/python/edu/resources/inspectionDescriptions/PyInconsistentIndentationInspection.html +++ /dev/null @@ -1,7 +0,0 @@ - - -This inspection reports inconsistent indentation in Python source files (for example, use of a mixture - of tabs and spaces). - - - diff --git a/python/edu/resources/inspectionDescriptions/PyInitNewSignatureInspection.html b/python/edu/resources/inspectionDescriptions/PyInitNewSignatureInspection.html deleted file mode 100644 index 3c44c678c864..000000000000 --- a/python/edu/resources/inspectionDescriptions/PyInitNewSignatureInspection.html +++ /dev/null @@ -1,7 +0,0 @@ - - - - This inspection checks mutual compatibility of __new__ and __init__ signatures. - - - diff --git a/python/edu/resources/inspectionDescriptions/PyInterpreterInspection.html b/python/edu/resources/inspectionDescriptions/PyInterpreterInspection.html deleted file mode 100644 index 3d33dd83160b..000000000000 --- a/python/edu/resources/inspectionDescriptions/PyInterpreterInspection.html +++ /dev/null @@ -1,5 +0,0 @@ - - -This inspection notifies you if the current project has no Python interpreter configured or an invalid Python interpreter. - - diff --git a/python/edu/resources/inspectionDescriptions/PyListCreationInspection.html b/python/edu/resources/inspectionDescriptions/PyListCreationInspection.html deleted file mode 100644 index 47dfd11bdbc1..000000000000 --- a/python/edu/resources/inspectionDescriptions/PyListCreationInspection.html +++ /dev/null @@ -1,8 +0,0 @@ - - - - This inspection detects situations when list creation - could be rewritten with list literal. - - - \ No newline at end of file diff --git a/python/edu/resources/inspectionDescriptions/PyMandatoryEncodingInspection.html b/python/edu/resources/inspectionDescriptions/PyMandatoryEncodingInspection.html deleted file mode 100644 index 8f9c1c87332c..000000000000 --- a/python/edu/resources/inspectionDescriptions/PyMandatoryEncodingInspection.html +++ /dev/null @@ -1,7 +0,0 @@ - - - - This inspection detects lack of encoding magic comment for file. - - - \ No newline at end of file diff --git a/python/edu/resources/inspectionDescriptions/PyMethodFirstArgAssignmentInspection.html b/python/edu/resources/inspectionDescriptions/PyMethodFirstArgAssignmentInspection.html deleted file mode 100644 index 37914bb36ac9..000000000000 --- a/python/edu/resources/inspectionDescriptions/PyMethodFirstArgAssignmentInspection.html +++ /dev/null @@ -1,6 +0,0 @@ - - -This inspection detects cases when first parameter, such as 'self' or 'cls', is reassigned in a method. -In most cases imaginable, there's no point in such reassignment, and it indicates an error. - - diff --git a/python/edu/resources/inspectionDescriptions/PyMethodMayBeStaticInspection.html b/python/edu/resources/inspectionDescriptions/PyMethodMayBeStaticInspection.html deleted file mode 100644 index b6c42bf6bfb6..000000000000 --- a/python/edu/resources/inspectionDescriptions/PyMethodMayBeStaticInspection.html +++ /dev/null @@ -1,7 +0,0 @@ - - - - This inspection detects any methods which may safely be made static. - - - \ No newline at end of file diff --git a/python/edu/resources/inspectionDescriptions/PyMethodOverridingInspection.html b/python/edu/resources/inspectionDescriptions/PyMethodOverridingInspection.html deleted file mode 100644 index 95b3a9fdaac8..000000000000 --- a/python/edu/resources/inspectionDescriptions/PyMethodOverridingInspection.html +++ /dev/null @@ -1,6 +0,0 @@ - - - This inspection detects inconsistencies in overriding method signatures. - - - \ No newline at end of file diff --git a/python/edu/resources/inspectionDescriptions/PyMethodParametersInspection.html b/python/edu/resources/inspectionDescriptions/PyMethodParametersInspection.html deleted file mode 100644 index 378ed277a5a9..000000000000 --- a/python/edu/resources/inspectionDescriptions/PyMethodParametersInspection.html +++ /dev/null @@ -1,5 +0,0 @@ - - -This inspection looks for methods that lack a first parameter (which is usually named self). - - diff --git a/python/edu/resources/inspectionDescriptions/PyMissingConstructorInspection.html b/python/edu/resources/inspectionDescriptions/PyMissingConstructorInspection.html deleted file mode 100644 index 281213efbff0..000000000000 --- a/python/edu/resources/inspectionDescriptions/PyMissingConstructorInspection.html +++ /dev/null @@ -1,7 +0,0 @@ - - - -This inspection warns if call to super constructor in class is missed - - - \ No newline at end of file diff --git a/python/edu/resources/inspectionDescriptions/PyNestedDecoratorsInspection.html b/python/edu/resources/inspectionDescriptions/PyNestedDecoratorsInspection.html deleted file mode 100644 index f42239f79e6e..000000000000 --- a/python/edu/resources/inspectionDescriptions/PyNestedDecoratorsInspection.html +++ /dev/null @@ -1,7 +0,0 @@ - - - -This inspection looks for certain decorators that don't nest well. - - - \ No newline at end of file diff --git a/python/edu/resources/inspectionDescriptions/PyNonAsciiCharInspection.html b/python/edu/resources/inspectionDescriptions/PyNonAsciiCharInspection.html deleted file mode 100644 index c3f32441a4ac..000000000000 --- a/python/edu/resources/inspectionDescriptions/PyNonAsciiCharInspection.html +++ /dev/null @@ -1,7 +0,0 @@ - - - - This inspection detects file contains non-ASCII characters and doesn't have an encoding declaration at the top. - - - \ No newline at end of file diff --git a/python/edu/resources/inspectionDescriptions/PyNoneFunctionAssignmentInspection.html b/python/edu/resources/inspectionDescriptions/PyNoneFunctionAssignmentInspection.html deleted file mode 100644 index e06c37f23b0f..000000000000 --- a/python/edu/resources/inspectionDescriptions/PyNoneFunctionAssignmentInspection.html +++ /dev/null @@ -1,6 +0,0 @@ - - -This inspection is similar to pylint inspection E1111. It highlights situations when an assignment is done on a function call but the inferred function doesn't return anything. - - - \ No newline at end of file diff --git a/python/edu/resources/inspectionDescriptions/PyOldStyleClassesInspection.html b/python/edu/resources/inspectionDescriptions/PyOldStyleClassesInspection.html deleted file mode 100644 index 49a70216c631..000000000000 --- a/python/edu/resources/inspectionDescriptions/PyOldStyleClassesInspection.html +++ /dev/null @@ -1,7 +0,0 @@ - - - - This inspection highlights occurrences of new-style class features in old-style classes. - - - \ No newline at end of file diff --git a/python/edu/resources/inspectionDescriptions/PyPackageRequirementsInspection.html b/python/edu/resources/inspectionDescriptions/PyPackageRequirementsInspection.html deleted file mode 100644 index ad916132fc56..000000000000 --- a/python/edu/resources/inspectionDescriptions/PyPackageRequirementsInspection.html +++ /dev/null @@ -1,5 +0,0 @@ - - -This inspection warns about imported or required, but not installed packages. - - \ No newline at end of file diff --git a/python/edu/resources/inspectionDescriptions/PyPep8Inspection.html b/python/edu/resources/inspectionDescriptions/PyPep8Inspection.html deleted file mode 100644 index 3fa74ec62d48..000000000000 --- a/python/edu/resources/inspectionDescriptions/PyPep8Inspection.html +++ /dev/null @@ -1,5 +0,0 @@ - - -This inspection runs the pep8.py tool to check for violations of the PEP 8 coding style guide. - - \ No newline at end of file diff --git a/python/edu/resources/inspectionDescriptions/PyPep8NamingInspection.html b/python/edu/resources/inspectionDescriptions/PyPep8NamingInspection.html deleted file mode 100644 index 1668c3fbb377..000000000000 --- a/python/edu/resources/inspectionDescriptions/PyPep8NamingInspection.html +++ /dev/null @@ -1,5 +0,0 @@ - - -This inspection checks the PEP8 naming conventions. - - \ No newline at end of file diff --git a/python/edu/resources/inspectionDescriptions/PyPropertyAccessInspection.html b/python/edu/resources/inspectionDescriptions/PyPropertyAccessInspection.html deleted file mode 100644 index 437a05918de1..000000000000 --- a/python/edu/resources/inspectionDescriptions/PyPropertyAccessInspection.html +++ /dev/null @@ -1,8 +0,0 @@ - - - - This inspection checks that properties are accessed correctly: - read-only not set, write-only not read, non-deletable not deleted. - - - \ No newline at end of file diff --git a/python/edu/resources/inspectionDescriptions/PyPropertyDefinitionInspection.html b/python/edu/resources/inspectionDescriptions/PyPropertyDefinitionInspection.html deleted file mode 100644 index 38b322dd58fe..000000000000 --- a/python/edu/resources/inspectionDescriptions/PyPropertyDefinitionInspection.html +++ /dev/null @@ -1,8 +0,0 @@ - - - - This inspection checks that arguments to property() and functions annotated with - @property and friends look reasonably. - - - \ No newline at end of file diff --git a/python/edu/resources/inspectionDescriptions/PyProtectedMemberInspection.html b/python/edu/resources/inspectionDescriptions/PyProtectedMemberInspection.html deleted file mode 100644 index d48badd5e7fe..000000000000 --- a/python/edu/resources/inspectionDescriptions/PyProtectedMemberInspection.html +++ /dev/null @@ -1,7 +0,0 @@ - - - -This inspection warns if a protected member is access outside the class or a descendant of the class where it's defined. - - - \ No newline at end of file diff --git a/python/edu/resources/inspectionDescriptions/PyRaisingNewStyleClassInspection.html b/python/edu/resources/inspectionDescriptions/PyRaisingNewStyleClassInspection.html deleted file mode 100644 index e598afdcce23..000000000000 --- a/python/edu/resources/inspectionDescriptions/PyRaisingNewStyleClassInspection.html +++ /dev/null @@ -1,9 +0,0 @@ - - - - This inspection detects attempts to raise a new-style class as an exception in projects with - language level less than 2.5. Raising new-style classes is only supported in Python 2.5 - or later. - - - \ No newline at end of file diff --git a/python/edu/resources/inspectionDescriptions/PyRedeclarationInspection.html b/python/edu/resources/inspectionDescriptions/PyRedeclarationInspection.html deleted file mode 100644 index 1902a8f1a5c7..000000000000 --- a/python/edu/resources/inspectionDescriptions/PyRedeclarationInspection.html +++ /dev/null @@ -1,9 +0,0 @@ - - -This inspection detects unconditional redeclarations of names without being used in between, like this:
-
def x(): pass
-x = 2
-
-It applies to function and class declarations, and top-level assignments.
-
- diff --git a/python/edu/resources/inspectionDescriptions/PyRedundantParenthesesInspection.html b/python/edu/resources/inspectionDescriptions/PyRedundantParenthesesInspection.html deleted file mode 100644 index 329591d4e425..000000000000 --- a/python/edu/resources/inspectionDescriptions/PyRedundantParenthesesInspection.html +++ /dev/null @@ -1,7 +0,0 @@ - - - -This inspection highlights redundant parentheses in statements. - - - \ No newline at end of file diff --git a/python/edu/resources/inspectionDescriptions/PyReturnFromInitInspection.html b/python/edu/resources/inspectionDescriptions/PyReturnFromInitInspection.html deleted file mode 100644 index 7820f74cbede..000000000000 --- a/python/edu/resources/inspectionDescriptions/PyReturnFromInitInspection.html +++ /dev/null @@ -1,6 +0,0 @@ - - -This inspection reports occurrences of return statements with a return value inside - __init__ methods of classes. A constructor should not return any value. - - diff --git a/python/edu/resources/inspectionDescriptions/PySetFunctionToLiteralInspection.html b/python/edu/resources/inspectionDescriptions/PySetFunctionToLiteralInspection.html deleted file mode 100644 index a54baa15f59f..000000000000 --- a/python/edu/resources/inspectionDescriptions/PySetFunctionToLiteralInspection.html +++ /dev/null @@ -1,8 +0,0 @@ - - - - This inspection detects call for function "set" which can be replaced with - set literal. - - - \ No newline at end of file diff --git a/python/edu/resources/inspectionDescriptions/PyShadowingBuiltinsInspection.html b/python/edu/resources/inspectionDescriptions/PyShadowingBuiltinsInspection.html deleted file mode 100644 index f25c27847c4f..000000000000 --- a/python/edu/resources/inspectionDescriptions/PyShadowingBuiltinsInspection.html +++ /dev/null @@ -1,5 +0,0 @@ - - -This inspection detects shadowing built-in names, such as 'len' or 'list'. - - \ No newline at end of file diff --git a/python/edu/resources/inspectionDescriptions/PyShadowingNamesInspection.html b/python/edu/resources/inspectionDescriptions/PyShadowingNamesInspection.html deleted file mode 100644 index dabfaf0b94a1..000000000000 --- a/python/edu/resources/inspectionDescriptions/PyShadowingNamesInspection.html +++ /dev/null @@ -1,5 +0,0 @@ - - -This inspection detects shadowing names defined in outer scopes. - - \ No newline at end of file diff --git a/python/edu/resources/inspectionDescriptions/PySimplifyBooleanCheckInspection.html b/python/edu/resources/inspectionDescriptions/PySimplifyBooleanCheckInspection.html deleted file mode 100644 index dc5059e90a35..000000000000 --- a/python/edu/resources/inspectionDescriptions/PySimplifyBooleanCheckInspection.html +++ /dev/null @@ -1,7 +0,0 @@ - - - - This inspection detects equality comparison with a boolean literal. - - - \ No newline at end of file diff --git a/python/edu/resources/inspectionDescriptions/PySingleQuotedDocstringInspection.html b/python/edu/resources/inspectionDescriptions/PySingleQuotedDocstringInspection.html deleted file mode 100644 index e1674d5aa517..000000000000 --- a/python/edu/resources/inspectionDescriptions/PySingleQuotedDocstringInspection.html +++ /dev/null @@ -1,7 +0,0 @@ - - - -This inspection highlights docstrings not using triple double-quoted string format. - - - \ No newline at end of file diff --git a/python/edu/resources/inspectionDescriptions/PyStatementEffectInspection.html b/python/edu/resources/inspectionDescriptions/PyStatementEffectInspection.html deleted file mode 100644 index 99eee87de619..000000000000 --- a/python/edu/resources/inspectionDescriptions/PyStatementEffectInspection.html +++ /dev/null @@ -1,7 +0,0 @@ - - - - This inspection detects statements without any effect. - - - \ No newline at end of file diff --git a/python/edu/resources/inspectionDescriptions/PyStringExceptionInspection.html b/python/edu/resources/inspectionDescriptions/PyStringExceptionInspection.html deleted file mode 100644 index c2584f6bd36c..000000000000 --- a/python/edu/resources/inspectionDescriptions/PyStringExceptionInspection.html +++ /dev/null @@ -1,7 +0,0 @@ - - - - This inspection detects when a string exception is raised. - - - \ No newline at end of file diff --git a/python/edu/resources/inspectionDescriptions/PyStringFormatInspection.html b/python/edu/resources/inspectionDescriptions/PyStringFormatInspection.html deleted file mode 100644 index 2146cacc428f..000000000000 --- a/python/edu/resources/inspectionDescriptions/PyStringFormatInspection.html +++ /dev/null @@ -1,7 +0,0 @@ - - - - This inspection detects errors in string formatting operations. - - - \ No newline at end of file diff --git a/python/edu/resources/inspectionDescriptions/PySuperArgumentsInspection.html b/python/edu/resources/inspectionDescriptions/PySuperArgumentsInspection.html deleted file mode 100644 index 7229a01cfc75..000000000000 --- a/python/edu/resources/inspectionDescriptions/PySuperArgumentsInspection.html +++ /dev/null @@ -1,7 +0,0 @@ - - - - This inspection check that in any call to super(A, B), B either is an instance of A or a subclass of A. - - - \ No newline at end of file diff --git a/python/edu/resources/inspectionDescriptions/PyTrailingSemicolonInspection.html b/python/edu/resources/inspectionDescriptions/PyTrailingSemicolonInspection.html deleted file mode 100644 index 1d4b70b3dc13..000000000000 --- a/python/edu/resources/inspectionDescriptions/PyTrailingSemicolonInspection.html +++ /dev/null @@ -1,5 +0,0 @@ - - -This inspection detects trailing semicolons in statements. - - diff --git a/python/edu/resources/inspectionDescriptions/PyTupleAssignmentBalanceInspection.html b/python/edu/resources/inspectionDescriptions/PyTupleAssignmentBalanceInspection.html deleted file mode 100644 index 6aa175b0927f..000000000000 --- a/python/edu/resources/inspectionDescriptions/PyTupleAssignmentBalanceInspection.html +++ /dev/null @@ -1,6 +0,0 @@ - - - - This inspection check that the number of expressions on right-hand side and targets on left-hand side are the same. - - \ No newline at end of file diff --git a/python/edu/resources/inspectionDescriptions/PyTupleItemAssignmentInspection.html b/python/edu/resources/inspectionDescriptions/PyTupleItemAssignmentInspection.html deleted file mode 100644 index 49a437b3561f..000000000000 --- a/python/edu/resources/inspectionDescriptions/PyTupleItemAssignmentInspection.html +++ /dev/null @@ -1,7 +0,0 @@ - - - - This inspection detects assignments to tuple item. - - - \ No newline at end of file diff --git a/python/edu/resources/inspectionDescriptions/PyTypeCheckerInspection.html b/python/edu/resources/inspectionDescriptions/PyTypeCheckerInspection.html deleted file mode 100644 index f2fc714eee0c..000000000000 --- a/python/edu/resources/inspectionDescriptions/PyTypeCheckerInspection.html +++ /dev/null @@ -1,8 +0,0 @@ - - -This inspection detects type errors in function call expressions. -Due to dynamic dispatch and duck typing, this is possible in a limited but -useful number of cases. Types of function parameters can be specified in -docstrings or in Python 3 function annotations. - - diff --git a/python/edu/resources/inspectionDescriptions/PyUnboundLocalVariableInspection.html b/python/edu/resources/inspectionDescriptions/PyUnboundLocalVariableInspection.html deleted file mode 100644 index c65de68ae122..000000000000 --- a/python/edu/resources/inspectionDescriptions/PyUnboundLocalVariableInspection.html +++ /dev/null @@ -1,5 +0,0 @@ - - -This inspection warns about local variables referenced before assignment. - - \ No newline at end of file diff --git a/python/edu/resources/inspectionDescriptions/PyUnnecessaryBackslashInspection.html b/python/edu/resources/inspectionDescriptions/PyUnnecessaryBackslashInspection.html deleted file mode 100644 index 75d0bd3ba6d5..000000000000 --- a/python/edu/resources/inspectionDescriptions/PyUnnecessaryBackslashInspection.html +++ /dev/null @@ -1,7 +0,0 @@ - - - -This inspection highlights backslashes in places where line continuation is implicit (inside (), [], {}). - - - \ No newline at end of file diff --git a/python/edu/resources/inspectionDescriptions/PyUnreachableCodeInspection.html b/python/edu/resources/inspectionDescriptions/PyUnreachableCodeInspection.html deleted file mode 100644 index ed689c3de81b..000000000000 --- a/python/edu/resources/inspectionDescriptions/PyUnreachableCodeInspection.html +++ /dev/null @@ -1,3 +0,0 @@ - -This inspection detects code which can not be normally reached. - diff --git a/python/edu/resources/inspectionDescriptions/PyUnresolvedReferencesInspection.html b/python/edu/resources/inspectionDescriptions/PyUnresolvedReferencesInspection.html deleted file mode 100644 index 8841b4687e61..000000000000 --- a/python/edu/resources/inspectionDescriptions/PyUnresolvedReferencesInspection.html +++ /dev/null @@ -1,7 +0,0 @@ - - -This inspection detects names that should resolve but don't. -Due to dynamic dispatch and duck typing, this is possible in a limited but useful -number of cases. Top-level and class-level items are supported better than instance items. - - diff --git a/python/edu/resources/inspectionDescriptions/PyUnsupportedFeaturesInspection.html b/python/edu/resources/inspectionDescriptions/PyUnsupportedFeaturesInspection.html deleted file mode 100644 index b0c92cf6725b..000000000000 --- a/python/edu/resources/inspectionDescriptions/PyUnsupportedFeaturesInspection.html +++ /dev/null @@ -1,7 +0,0 @@ - - - - This inspection detects usage of language features which not supported by current Python version - - - \ No newline at end of file diff --git a/python/edu/resources/inspectionDescriptions/PyUnusedLocalInspection.html b/python/edu/resources/inspectionDescriptions/PyUnusedLocalInspection.html deleted file mode 100644 index 95ce583e518d..000000000000 --- a/python/edu/resources/inspectionDescriptions/PyUnusedLocalInspection.html +++ /dev/null @@ -1,3 +0,0 @@ - - This inspection highlights local variables,parameters or local functions unused in scope. - diff --git a/python/edu/resources/inspectionDescriptions/RestRoleInspection.html b/python/edu/resources/inspectionDescriptions/RestRoleInspection.html deleted file mode 100644 index 75809b6562be..000000000000 --- a/python/edu/resources/inspectionDescriptions/RestRoleInspection.html +++ /dev/null @@ -1,7 +0,0 @@ - - - - This inspection detects undefined roles. - - - \ No newline at end of file diff --git a/python/edu/resources/intentionDescriptions/ConvertFormatOperatorToMethodIntention/after.py.template b/python/edu/resources/intentionDescriptions/ConvertFormatOperatorToMethodIntention/after.py.template deleted file mode 100644 index ea988e4ae394..000000000000 --- a/python/edu/resources/intentionDescriptions/ConvertFormatOperatorToMethodIntention/after.py.template +++ /dev/null @@ -1 +0,0 @@ -print("{0: 5.3F}".format(12)) \ No newline at end of file diff --git a/python/edu/resources/intentionDescriptions/ConvertFormatOperatorToMethodIntention/before.py.template b/python/edu/resources/intentionDescriptions/ConvertFormatOperatorToMethodIntention/before.py.template deleted file mode 100644 index fdf53299f13f..000000000000 --- a/python/edu/resources/intentionDescriptions/ConvertFormatOperatorToMethodIntention/before.py.template +++ /dev/null @@ -1 +0,0 @@ -print("% 5.3F" % 12) diff --git a/python/edu/resources/intentionDescriptions/ConvertFormatOperatorToMethodIntention/description.html b/python/edu/resources/intentionDescriptions/ConvertFormatOperatorToMethodIntention/description.html deleted file mode 100644 index 64adb58c79e3..000000000000 --- a/python/edu/resources/intentionDescriptions/ConvertFormatOperatorToMethodIntention/description.html +++ /dev/null @@ -1,7 +0,0 @@ - - - - This intention replaces a string format operator with the equivalent 'format' method call. - - - \ No newline at end of file diff --git a/python/edu/resources/intentionDescriptions/ConvertVariadicParamIntention/after.py.template b/python/edu/resources/intentionDescriptions/ConvertVariadicParamIntention/after.py.template deleted file mode 100644 index 4a19285fe1f5..000000000000 --- a/python/edu/resources/intentionDescriptions/ConvertVariadicParamIntention/after.py.template +++ /dev/null @@ -1,2 +0,0 @@ -def foo(foo): - doSomething(foo) \ No newline at end of file diff --git a/python/edu/resources/intentionDescriptions/ConvertVariadicParamIntention/before.py.template b/python/edu/resources/intentionDescriptions/ConvertVariadicParamIntention/before.py.template deleted file mode 100644 index ca5b415454d2..000000000000 --- a/python/edu/resources/intentionDescriptions/ConvertVariadicParamIntention/before.py.template +++ /dev/null @@ -1,2 +0,0 @@ -def foo(**kwargs): - doSomething(kwargs['foo']) \ No newline at end of file diff --git a/python/edu/resources/intentionDescriptions/ConvertVariadicParamIntention/description.html b/python/edu/resources/intentionDescriptions/ConvertVariadicParamIntention/description.html deleted file mode 100644 index 10db640519f0..000000000000 --- a/python/edu/resources/intentionDescriptions/ConvertVariadicParamIntention/description.html +++ /dev/null @@ -1,7 +0,0 @@ - - - - This intention replaces variadic parameter(s) with usual. - - - \ No newline at end of file diff --git a/python/edu/resources/intentionDescriptions/ImportFromToImportIntention/after.py.template b/python/edu/resources/intentionDescriptions/ImportFromToImportIntention/after.py.template deleted file mode 100644 index 3158f1b50510..000000000000 --- a/python/edu/resources/intentionDescriptions/ImportFromToImportIntention/after.py.template +++ /dev/null @@ -1,2 +0,0 @@ -import sys -name = sys.argv[0] diff --git a/python/edu/resources/intentionDescriptions/ImportFromToImportIntention/before.py.template b/python/edu/resources/intentionDescriptions/ImportFromToImportIntention/before.py.template deleted file mode 100644 index 8ccd26c2c6ae..000000000000 --- a/python/edu/resources/intentionDescriptions/ImportFromToImportIntention/before.py.template +++ /dev/null @@ -1,2 +0,0 @@ -from sys import argv -name = argv[0] diff --git a/python/edu/resources/intentionDescriptions/ImportFromToImportIntention/description.html b/python/edu/resources/intentionDescriptions/ImportFromToImportIntention/description.html deleted file mode 100644 index 63818e399ca3..000000000000 --- a/python/edu/resources/intentionDescriptions/ImportFromToImportIntention/description.html +++ /dev/null @@ -1,8 +0,0 @@ - - - -This intention transforms from module_name import ... into import module_name -and qualifies any names imported from that module by module name. - - - \ No newline at end of file diff --git a/python/edu/resources/intentionDescriptions/ImportToImportFromIntention/after.py.template b/python/edu/resources/intentionDescriptions/ImportToImportFromIntention/after.py.template deleted file mode 100644 index 8ccd26c2c6ae..000000000000 --- a/python/edu/resources/intentionDescriptions/ImportToImportFromIntention/after.py.template +++ /dev/null @@ -1,2 +0,0 @@ -from sys import argv -name = argv[0] diff --git a/python/edu/resources/intentionDescriptions/ImportToImportFromIntention/before.py.template b/python/edu/resources/intentionDescriptions/ImportToImportFromIntention/before.py.template deleted file mode 100644 index 3158f1b50510..000000000000 --- a/python/edu/resources/intentionDescriptions/ImportToImportFromIntention/before.py.template +++ /dev/null @@ -1,2 +0,0 @@ -import sys -name = sys.argv[0] diff --git a/python/edu/resources/intentionDescriptions/ImportToImportFromIntention/description.html b/python/edu/resources/intentionDescriptions/ImportToImportFromIntention/description.html deleted file mode 100644 index 880f1e8deea2..000000000000 --- a/python/edu/resources/intentionDescriptions/ImportToImportFromIntention/description.html +++ /dev/null @@ -1,8 +0,0 @@ - - - -This intention replaces import foo with from foo import ... -and drop qualifiers at references to names from foo. - - - diff --git a/python/edu/resources/intentionDescriptions/ImportToggleAliasIntention/after.py.template b/python/edu/resources/intentionDescriptions/ImportToggleAliasIntention/after.py.template deleted file mode 100644 index 3331304b1da8..000000000000 --- a/python/edu/resources/intentionDescriptions/ImportToggleAliasIntention/after.py.template +++ /dev/null @@ -1,2 +0,0 @@ -from urllib import url2pathname as u2p -name = u2p("/") diff --git a/python/edu/resources/intentionDescriptions/ImportToggleAliasIntention/before.py.template b/python/edu/resources/intentionDescriptions/ImportToggleAliasIntention/before.py.template deleted file mode 100644 index 6db525770030..000000000000 --- a/python/edu/resources/intentionDescriptions/ImportToggleAliasIntention/before.py.template +++ /dev/null @@ -1,2 +0,0 @@ -from urllib import url2pathname -name = url2pathname("/") diff --git a/python/edu/resources/intentionDescriptions/ImportToggleAliasIntention/description.html b/python/edu/resources/intentionDescriptions/ImportToggleAliasIntention/description.html deleted file mode 100644 index de5fc8167a1c..000000000000 --- a/python/edu/resources/intentionDescriptions/ImportToggleAliasIntention/description.html +++ /dev/null @@ -1,8 +0,0 @@ - - - -This intention allows to add or remove an alias from an import element, renaming references accordingly. -Works both for import ... as ... and from ... import ... as statements. - - - diff --git a/python/edu/resources/intentionDescriptions/PyConvertLambdaToFunctionIntention/after.py.template b/python/edu/resources/intentionDescriptions/PyConvertLambdaToFunctionIntention/after.py.template deleted file mode 100644 index 4429ea5a8361..000000000000 --- a/python/edu/resources/intentionDescriptions/PyConvertLambdaToFunctionIntention/after.py.template +++ /dev/null @@ -1,7 +0,0 @@ -def func2(x, y): - return (x+y)/y - -def func(seq): - ... - newlist = reduce(func2, seq) - ... diff --git a/python/edu/resources/intentionDescriptions/PyConvertLambdaToFunctionIntention/before.py.template b/python/edu/resources/intentionDescriptions/PyConvertLambdaToFunctionIntention/before.py.template deleted file mode 100644 index fd61cfd76461..000000000000 --- a/python/edu/resources/intentionDescriptions/PyConvertLambdaToFunctionIntention/before.py.template +++ /dev/null @@ -1,4 +0,0 @@ -def func(seq): - ... - newlist = reduce(lambda x, y: (x+y)/y, seq) - ... diff --git a/python/edu/resources/intentionDescriptions/PyConvertLambdaToFunctionIntention/description.html b/python/edu/resources/intentionDescriptions/PyConvertLambdaToFunctionIntention/description.html deleted file mode 100644 index 2e58675974a3..000000000000 --- a/python/edu/resources/intentionDescriptions/PyConvertLambdaToFunctionIntention/description.html +++ /dev/null @@ -1,7 +0,0 @@ - - - - This intention converts lambda function to function definition statement. - - - \ No newline at end of file diff --git a/python/edu/resources/intentionDescriptions/PyConvertMethodToPropertyIntention/after.py.template b/python/edu/resources/intentionDescriptions/PyConvertMethodToPropertyIntention/after.py.template deleted file mode 100644 index 1c8040301451..000000000000 --- a/python/edu/resources/intentionDescriptions/PyConvertMethodToPropertyIntention/after.py.template +++ /dev/null @@ -1,13 +0,0 @@ -class MyClass(object): - """ - My class to show intention. - """ - def __init__(self): - self._x = None - - @property - def x(self): - return self._x - - -x = MyClass().x \ No newline at end of file diff --git a/python/edu/resources/intentionDescriptions/PyConvertMethodToPropertyIntention/before.py.template b/python/edu/resources/intentionDescriptions/PyConvertMethodToPropertyIntention/before.py.template deleted file mode 100644 index 7940289de5cb..000000000000 --- a/python/edu/resources/intentionDescriptions/PyConvertMethodToPropertyIntention/before.py.template +++ /dev/null @@ -1,12 +0,0 @@ -class MyClass(object): - """ - My class to show intention. - """ - def __init__(self): - self._x = None - - def x(self): - return self._x - - -x = MyClass().x() \ No newline at end of file diff --git a/python/edu/resources/intentionDescriptions/PyConvertMethodToPropertyIntention/description.html b/python/edu/resources/intentionDescriptions/PyConvertMethodToPropertyIntention/description.html deleted file mode 100644 index 82ae5ebfe544..000000000000 --- a/python/edu/resources/intentionDescriptions/PyConvertMethodToPropertyIntention/description.html +++ /dev/null @@ -1,5 +0,0 @@ - - -This intention converts method to property. - - \ No newline at end of file diff --git a/python/edu/resources/intentionDescriptions/PyConvertStaticMethodToFunctionIntention/after.py.template b/python/edu/resources/intentionDescriptions/PyConvertStaticMethodToFunctionIntention/after.py.template deleted file mode 100644 index f393b5ef1e73..000000000000 --- a/python/edu/resources/intentionDescriptions/PyConvertStaticMethodToFunctionIntention/after.py.template +++ /dev/null @@ -1,14 +0,0 @@ -class MyClass(object): - """ - My class to show intention. - """ - - def __init__(self): - self.a = 1 - -def my_static_method(): - import code - import time - - time.sleep(100) - print code diff --git a/python/edu/resources/intentionDescriptions/PyConvertStaticMethodToFunctionIntention/before.py.template b/python/edu/resources/intentionDescriptions/PyConvertStaticMethodToFunctionIntention/before.py.template deleted file mode 100644 index a2e4b7985e54..000000000000 --- a/python/edu/resources/intentionDescriptions/PyConvertStaticMethodToFunctionIntention/before.py.template +++ /dev/null @@ -1,15 +0,0 @@ -class MyClass(object): - """ - My class to show intention. - """ - - def __init__(self): - self.a = 1 - - @staticmethod - def my_static_method(): - import code - import time - - time.sleep(100) - print code diff --git a/python/edu/resources/intentionDescriptions/PyConvertStaticMethodToFunctionIntention/description.html b/python/edu/resources/intentionDescriptions/PyConvertStaticMethodToFunctionIntention/description.html deleted file mode 100644 index ea7e64f10d6b..000000000000 --- a/python/edu/resources/intentionDescriptions/PyConvertStaticMethodToFunctionIntention/description.html +++ /dev/null @@ -1,5 +0,0 @@ - - -This intention converts static method to function. - - \ No newline at end of file diff --git a/python/edu/resources/intentionDescriptions/PyConvertTripleQuotedStringIntention/after.py.template b/python/edu/resources/intentionDescriptions/PyConvertTripleQuotedStringIntention/after.py.template deleted file mode 100644 index af439511d107..000000000000 --- a/python/edu/resources/intentionDescriptions/PyConvertTripleQuotedStringIntention/after.py.template +++ /dev/null @@ -1,3 +0,0 @@ -a = ("This line is ok," "\n" - "but \"this\" includes far too much" "\n" - "whitespace at the start") \ No newline at end of file diff --git a/python/edu/resources/intentionDescriptions/PyConvertTripleQuotedStringIntention/before.py.template b/python/edu/resources/intentionDescriptions/PyConvertTripleQuotedStringIntention/before.py.template deleted file mode 100644 index b556824b48f0..000000000000 --- a/python/edu/resources/intentionDescriptions/PyConvertTripleQuotedStringIntention/before.py.template +++ /dev/null @@ -1,3 +0,0 @@ -a = """This line is ok, - but "this" includes far too much - whitespace at the start""" \ No newline at end of file diff --git a/python/edu/resources/intentionDescriptions/PyConvertTripleQuotedStringIntention/description.html b/python/edu/resources/intentionDescriptions/PyConvertTripleQuotedStringIntention/description.html deleted file mode 100644 index a75a51a90fbf..000000000000 --- a/python/edu/resources/intentionDescriptions/PyConvertTripleQuotedStringIntention/description.html +++ /dev/null @@ -1,7 +0,0 @@ - - - - This intention converts triple-quoted string to single-quoted. - - - \ No newline at end of file diff --git a/python/edu/resources/intentionDescriptions/PyDemorganIntention/after.py.template b/python/edu/resources/intentionDescriptions/PyDemorganIntention/after.py.template deleted file mode 100644 index de9e125e7530..000000000000 --- a/python/edu/resources/intentionDescriptions/PyDemorganIntention/after.py.template +++ /dev/null @@ -1,2 +0,0 @@ -if not (not a and not b): - pass \ No newline at end of file diff --git a/python/edu/resources/intentionDescriptions/PyDemorganIntention/before.py.template b/python/edu/resources/intentionDescriptions/PyDemorganIntention/before.py.template deleted file mode 100644 index 1a0e3f300de4..000000000000 --- a/python/edu/resources/intentionDescriptions/PyDemorganIntention/before.py.template +++ /dev/null @@ -1,2 +0,0 @@ -if a or b: - pass \ No newline at end of file diff --git a/python/edu/resources/intentionDescriptions/PyDemorganIntention/description.html b/python/edu/resources/intentionDescriptions/PyDemorganIntention/description.html deleted file mode 100644 index 4dfbca1bdc31..000000000000 --- a/python/edu/resources/intentionDescriptions/PyDemorganIntention/description.html +++ /dev/null @@ -1,14 +0,0 @@ - - - -This intention replaces either -
-a or b with not(not a and not b) or
-a and b with not(not a or not b)
-
- - -inside boolean expression. - - - \ No newline at end of file diff --git a/python/edu/resources/intentionDescriptions/PyDictConstructorToLiteralFormIntention/after.py.template b/python/edu/resources/intentionDescriptions/PyDictConstructorToLiteralFormIntention/after.py.template deleted file mode 100644 index 684a858f604c..000000000000 --- a/python/edu/resources/intentionDescriptions/PyDictConstructorToLiteralFormIntention/after.py.template +++ /dev/null @@ -1 +0,0 @@ -{'a': 3, 'b': 5} \ No newline at end of file diff --git a/python/edu/resources/intentionDescriptions/PyDictConstructorToLiteralFormIntention/before.py.template b/python/edu/resources/intentionDescriptions/PyDictConstructorToLiteralFormIntention/before.py.template deleted file mode 100644 index 2bfbfb98c348..000000000000 --- a/python/edu/resources/intentionDescriptions/PyDictConstructorToLiteralFormIntention/before.py.template +++ /dev/null @@ -1 +0,0 @@ -dict(a=3, b=5) \ No newline at end of file diff --git a/python/edu/resources/intentionDescriptions/PyDictConstructorToLiteralFormIntention/description.html b/python/edu/resources/intentionDescriptions/PyDictConstructorToLiteralFormIntention/description.html deleted file mode 100644 index ee5f619cd7f4..000000000000 --- a/python/edu/resources/intentionDescriptions/PyDictConstructorToLiteralFormIntention/description.html +++ /dev/null @@ -1,7 +0,0 @@ - - - - This intention converts translation from dict constructor to dict literal form. - - - \ No newline at end of file diff --git a/python/edu/resources/intentionDescriptions/PyDictLiteralFormToConstructorIntention/after.py.template b/python/edu/resources/intentionDescriptions/PyDictLiteralFormToConstructorIntention/after.py.template deleted file mode 100644 index 2bfbfb98c348..000000000000 --- a/python/edu/resources/intentionDescriptions/PyDictLiteralFormToConstructorIntention/after.py.template +++ /dev/null @@ -1 +0,0 @@ -dict(a=3, b=5) \ No newline at end of file diff --git a/python/edu/resources/intentionDescriptions/PyDictLiteralFormToConstructorIntention/before.py.template b/python/edu/resources/intentionDescriptions/PyDictLiteralFormToConstructorIntention/before.py.template deleted file mode 100644 index 684a858f604c..000000000000 --- a/python/edu/resources/intentionDescriptions/PyDictLiteralFormToConstructorIntention/before.py.template +++ /dev/null @@ -1 +0,0 @@ -{'a': 3, 'b': 5} \ No newline at end of file diff --git a/python/edu/resources/intentionDescriptions/PyDictLiteralFormToConstructorIntention/description.html b/python/edu/resources/intentionDescriptions/PyDictLiteralFormToConstructorIntention/description.html deleted file mode 100644 index 9af5246228d3..000000000000 --- a/python/edu/resources/intentionDescriptions/PyDictLiteralFormToConstructorIntention/description.html +++ /dev/null @@ -1,7 +0,0 @@ - - - - This intention converts translation from dict literal form to dict constructor. - - - \ No newline at end of file diff --git a/python/edu/resources/intentionDescriptions/PyFlipComparisonIntention/after.py.template b/python/edu/resources/intentionDescriptions/PyFlipComparisonIntention/after.py.template deleted file mode 100644 index 37b79e3f1d30..000000000000 --- a/python/edu/resources/intentionDescriptions/PyFlipComparisonIntention/after.py.template +++ /dev/null @@ -1,2 +0,0 @@ -if a > b: - return a \ No newline at end of file diff --git a/python/edu/resources/intentionDescriptions/PyFlipComparisonIntention/before.py.template b/python/edu/resources/intentionDescriptions/PyFlipComparisonIntention/before.py.template deleted file mode 100644 index 1814460d6f27..000000000000 --- a/python/edu/resources/intentionDescriptions/PyFlipComparisonIntention/before.py.template +++ /dev/null @@ -1,2 +0,0 @@ -if b < a: - return a \ No newline at end of file diff --git a/python/edu/resources/intentionDescriptions/PyFlipComparisonIntention/description.html b/python/edu/resources/intentionDescriptions/PyFlipComparisonIntention/description.html deleted file mode 100644 index c6b67f5acfe2..000000000000 --- a/python/edu/resources/intentionDescriptions/PyFlipComparisonIntention/description.html +++ /dev/null @@ -1,7 +0,0 @@ - - - - This intention swaps the operands of a comparison expression. - - - \ No newline at end of file diff --git a/python/edu/resources/intentionDescriptions/PyGenerateDocstringIntention/after.py.template b/python/edu/resources/intentionDescriptions/PyGenerateDocstringIntention/after.py.template deleted file mode 100644 index bf0cffa3e944..000000000000 --- a/python/edu/resources/intentionDescriptions/PyGenerateDocstringIntention/after.py.template +++ /dev/null @@ -1,7 +0,0 @@ -def foo(a, b): - """ - :param a: - :param b: - :return: - """ - pass \ No newline at end of file diff --git a/python/edu/resources/intentionDescriptions/PyGenerateDocstringIntention/before.py.template b/python/edu/resources/intentionDescriptions/PyGenerateDocstringIntention/before.py.template deleted file mode 100644 index 7898e8a5a596..000000000000 --- a/python/edu/resources/intentionDescriptions/PyGenerateDocstringIntention/before.py.template +++ /dev/null @@ -1,2 +0,0 @@ -def foo(a,b): - pass \ No newline at end of file diff --git a/python/edu/resources/intentionDescriptions/PyGenerateDocstringIntention/description.html b/python/edu/resources/intentionDescriptions/PyGenerateDocstringIntention/description.html deleted file mode 100644 index 87e9bb7c4b80..000000000000 --- a/python/edu/resources/intentionDescriptions/PyGenerateDocstringIntention/description.html +++ /dev/null @@ -1,7 +0,0 @@ - - - - This intention generates documentation string stub. - - - \ No newline at end of file diff --git a/python/edu/resources/intentionDescriptions/PyJoinIfIntention/after.py.template b/python/edu/resources/intentionDescriptions/PyJoinIfIntention/after.py.template deleted file mode 100644 index e2fcd5989953..000000000000 --- a/python/edu/resources/intentionDescriptions/PyJoinIfIntention/after.py.template +++ /dev/null @@ -1,2 +0,0 @@ -if a and b: - return \ No newline at end of file diff --git a/python/edu/resources/intentionDescriptions/PyJoinIfIntention/before.py.template b/python/edu/resources/intentionDescriptions/PyJoinIfIntention/before.py.template deleted file mode 100644 index c680e979fc94..000000000000 --- a/python/edu/resources/intentionDescriptions/PyJoinIfIntention/before.py.template +++ /dev/null @@ -1,3 +0,0 @@ -if a: - if b: - return \ No newline at end of file diff --git a/python/edu/resources/intentionDescriptions/PyJoinIfIntention/description.html b/python/edu/resources/intentionDescriptions/PyJoinIfIntention/description.html deleted file mode 100644 index 794e24c6b87c..000000000000 --- a/python/edu/resources/intentionDescriptions/PyJoinIfIntention/description.html +++ /dev/null @@ -1,7 +0,0 @@ - - - - This intention converts two nested if statements into one if statement containing conjuction operation in it. - - - \ No newline at end of file diff --git a/python/edu/resources/intentionDescriptions/PyNegateComparisonIntention/after.py.template b/python/edu/resources/intentionDescriptions/PyNegateComparisonIntention/after.py.template deleted file mode 100644 index 89ed0f8d31a2..000000000000 --- a/python/edu/resources/intentionDescriptions/PyNegateComparisonIntention/after.py.template +++ /dev/null @@ -1,2 +0,0 @@ -if a != b: - return a \ No newline at end of file diff --git a/python/edu/resources/intentionDescriptions/PyNegateComparisonIntention/before.py.template b/python/edu/resources/intentionDescriptions/PyNegateComparisonIntention/before.py.template deleted file mode 100644 index 7283065cd014..000000000000 --- a/python/edu/resources/intentionDescriptions/PyNegateComparisonIntention/before.py.template +++ /dev/null @@ -1,2 +0,0 @@ -if not a == b: - return a \ No newline at end of file diff --git a/python/edu/resources/intentionDescriptions/PyNegateComparisonIntention/description.html b/python/edu/resources/intentionDescriptions/PyNegateComparisonIntention/description.html deleted file mode 100644 index acb11fef7ac6..000000000000 --- a/python/edu/resources/intentionDescriptions/PyNegateComparisonIntention/description.html +++ /dev/null @@ -1,8 +0,0 @@ - - - - This intention converts boolean comparison expression not(a negop b) into a op b. - Where op and negop are mutually inverse comparison operators, like == and !=. - - - \ No newline at end of file diff --git a/python/edu/resources/intentionDescriptions/PyQuotedStringIntention/after.py.template b/python/edu/resources/intentionDescriptions/PyQuotedStringIntention/after.py.template deleted file mode 100644 index cbf185626543..000000000000 --- a/python/edu/resources/intentionDescriptions/PyQuotedStringIntention/after.py.template +++ /dev/null @@ -1 +0,0 @@ -"\"Hello\" - said man." \ No newline at end of file diff --git a/python/edu/resources/intentionDescriptions/PyQuotedStringIntention/before.py.template b/python/edu/resources/intentionDescriptions/PyQuotedStringIntention/before.py.template deleted file mode 100644 index 904c28a98492..000000000000 --- a/python/edu/resources/intentionDescriptions/PyQuotedStringIntention/before.py.template +++ /dev/null @@ -1 +0,0 @@ -'"Hello" - said man.' \ No newline at end of file diff --git a/python/edu/resources/intentionDescriptions/PyQuotedStringIntention/description.html b/python/edu/resources/intentionDescriptions/PyQuotedStringIntention/description.html deleted file mode 100644 index cfd35d664f82..000000000000 --- a/python/edu/resources/intentionDescriptions/PyQuotedStringIntention/description.html +++ /dev/null @@ -1,7 +0,0 @@ - - - - This intention allows conversion between single-quoted and double-quoted strings. - - - \ No newline at end of file diff --git a/python/edu/resources/intentionDescriptions/PySplitIfIntention/after.py.template b/python/edu/resources/intentionDescriptions/PySplitIfIntention/after.py.template deleted file mode 100644 index c0f7384ea7c6..000000000000 --- a/python/edu/resources/intentionDescriptions/PySplitIfIntention/after.py.template +++ /dev/null @@ -1,3 +0,0 @@ -if a: - if b: - return \ No newline at end of file diff --git a/python/edu/resources/intentionDescriptions/PySplitIfIntention/before.py.template b/python/edu/resources/intentionDescriptions/PySplitIfIntention/before.py.template deleted file mode 100644 index 9e841f5ee358..000000000000 --- a/python/edu/resources/intentionDescriptions/PySplitIfIntention/before.py.template +++ /dev/null @@ -1,2 +0,0 @@ -if a and b: - return \ No newline at end of file diff --git a/python/edu/resources/intentionDescriptions/PySplitIfIntention/description.html b/python/edu/resources/intentionDescriptions/PySplitIfIntention/description.html deleted file mode 100644 index 643c3c79571f..000000000000 --- a/python/edu/resources/intentionDescriptions/PySplitIfIntention/description.html +++ /dev/null @@ -1,7 +0,0 @@ - - - - This intention converts if statement containing conjuction operation into two nested if statements with simplified conditions. - - - \ No newline at end of file diff --git a/python/edu/resources/intentionDescriptions/PyStringConcatenationToFormatIntention/after.py.template b/python/edu/resources/intentionDescriptions/PyStringConcatenationToFormatIntention/after.py.template deleted file mode 100644 index 56cd89aef1c8..000000000000 --- a/python/edu/resources/intentionDescriptions/PyStringConcatenationToFormatIntention/after.py.template +++ /dev/null @@ -1 +0,0 @@ -"a%sc" % (b) \ No newline at end of file diff --git a/python/edu/resources/intentionDescriptions/PyStringConcatenationToFormatIntention/before.py.template b/python/edu/resources/intentionDescriptions/PyStringConcatenationToFormatIntention/before.py.template deleted file mode 100644 index 96db9539c962..000000000000 --- a/python/edu/resources/intentionDescriptions/PyStringConcatenationToFormatIntention/before.py.template +++ /dev/null @@ -1 +0,0 @@ -"a" + b + "c" \ No newline at end of file diff --git a/python/edu/resources/intentionDescriptions/PyStringConcatenationToFormatIntention/description.html b/python/edu/resources/intentionDescriptions/PyStringConcatenationToFormatIntention/description.html deleted file mode 100644 index 908daa21be31..000000000000 --- a/python/edu/resources/intentionDescriptions/PyStringConcatenationToFormatIntention/description.html +++ /dev/null @@ -1,8 +0,0 @@ - - - - This intention replaces a string concatenation with the equivalent expression with string formatting operator usage - or with str.format() method call (for Python versions >= 2.7). - - - \ No newline at end of file diff --git a/python/edu/resources/intentionDescriptions/PyTransformConditionalExpressionIntention/after.py.template b/python/edu/resources/intentionDescriptions/PyTransformConditionalExpressionIntention/after.py.template deleted file mode 100644 index 24e157d011dc..000000000000 --- a/python/edu/resources/intentionDescriptions/PyTransformConditionalExpressionIntention/after.py.template +++ /dev/null @@ -1,4 +0,0 @@ -if cond: - x = a -else: - x = b \ No newline at end of file diff --git a/python/edu/resources/intentionDescriptions/PyTransformConditionalExpressionIntention/before.py.template b/python/edu/resources/intentionDescriptions/PyTransformConditionalExpressionIntention/before.py.template deleted file mode 100644 index 601e958f079d..000000000000 --- a/python/edu/resources/intentionDescriptions/PyTransformConditionalExpressionIntention/before.py.template +++ /dev/null @@ -1 +0,0 @@ -x = a if cond else b \ No newline at end of file diff --git a/python/edu/resources/intentionDescriptions/PyTransformConditionalExpressionIntention/description.html b/python/edu/resources/intentionDescriptions/PyTransformConditionalExpressionIntention/description.html deleted file mode 100644 index c0552efb32e6..000000000000 --- a/python/edu/resources/intentionDescriptions/PyTransformConditionalExpressionIntention/description.html +++ /dev/null @@ -1,7 +0,0 @@ - - - - This intention transforms conditional expression into if/else statement. - - - \ No newline at end of file diff --git a/python/edu/resources/intentionDescriptions/PyYieldFromIntention/after.py.template b/python/edu/resources/intentionDescriptions/PyYieldFromIntention/after.py.template deleted file mode 100644 index 773e592b09e0..000000000000 --- a/python/edu/resources/intentionDescriptions/PyYieldFromIntention/after.py.template +++ /dev/null @@ -1 +0,0 @@ -yield from b \ No newline at end of file diff --git a/python/edu/resources/intentionDescriptions/PyYieldFromIntention/before.py.template b/python/edu/resources/intentionDescriptions/PyYieldFromIntention/before.py.template deleted file mode 100644 index aa447f1e3b13..000000000000 --- a/python/edu/resources/intentionDescriptions/PyYieldFromIntention/before.py.template +++ /dev/null @@ -1,2 +0,0 @@ -for a in b: - yield a \ No newline at end of file diff --git a/python/edu/resources/intentionDescriptions/PyYieldFromIntention/description.html b/python/edu/resources/intentionDescriptions/PyYieldFromIntention/description.html deleted file mode 100644 index 667a76164b3f..000000000000 --- a/python/edu/resources/intentionDescriptions/PyYieldFromIntention/description.html +++ /dev/null @@ -1,5 +0,0 @@ - - - This intention transforms explicit iteration with 'yield' into 'yield from'. - - \ No newline at end of file diff --git a/python/edu/resources/intentionDescriptions/ReplaceListComprehensionWithForIntention/after.py.template b/python/edu/resources/intentionDescriptions/ReplaceListComprehensionWithForIntention/after.py.template deleted file mode 100644 index 036345d596d1..000000000000 --- a/python/edu/resources/intentionDescriptions/ReplaceListComprehensionWithForIntention/after.py.template +++ /dev/null @@ -1,3 +0,0 @@ -a = [] -for x in xrange(5): - a.add(x) \ No newline at end of file diff --git a/python/edu/resources/intentionDescriptions/ReplaceListComprehensionWithForIntention/before.py.template b/python/edu/resources/intentionDescriptions/ReplaceListComprehensionWithForIntention/before.py.template deleted file mode 100644 index eef9ef7bb5dd..000000000000 --- a/python/edu/resources/intentionDescriptions/ReplaceListComprehensionWithForIntention/before.py.template +++ /dev/null @@ -1 +0,0 @@ -a = [x for x in xrange(5)] \ No newline at end of file diff --git a/python/edu/resources/intentionDescriptions/ReplaceListComprehensionWithForIntention/description.html b/python/edu/resources/intentionDescriptions/ReplaceListComprehensionWithForIntention/description.html deleted file mode 100644 index 54da12726567..000000000000 --- a/python/edu/resources/intentionDescriptions/ReplaceListComprehensionWithForIntention/description.html +++ /dev/null @@ -1,7 +0,0 @@ - - - - This intention replaces a list comprehension with for loop. - - - \ No newline at end of file diff --git a/python/edu/resources/intentionDescriptions/SpecifyTypeInDocstringIntention/after.html.template b/python/edu/resources/intentionDescriptions/SpecifyTypeInDocstringIntention/after.html.template deleted file mode 100644 index 489da3518483..000000000000 --- a/python/edu/resources/intentionDescriptions/SpecifyTypeInDocstringIntention/after.html.template +++ /dev/null @@ -1,5 +0,0 @@ -def foo(var): - """ - @type var: string - """ - var. \ No newline at end of file diff --git a/python/edu/resources/intentionDescriptions/SpecifyTypeInDocstringIntention/before.html.template b/python/edu/resources/intentionDescriptions/SpecifyTypeInDocstringIntention/before.html.template deleted file mode 100644 index fcdfce0ebee8..000000000000 --- a/python/edu/resources/intentionDescriptions/SpecifyTypeInDocstringIntention/before.html.template +++ /dev/null @@ -1,2 +0,0 @@ -def foo(var): - var. \ No newline at end of file diff --git a/python/edu/resources/intentionDescriptions/SpecifyTypeInDocstringIntention/description.html b/python/edu/resources/intentionDescriptions/SpecifyTypeInDocstringIntention/description.html deleted file mode 100644 index 9ff83f3b28bc..000000000000 --- a/python/edu/resources/intentionDescriptions/SpecifyTypeInDocstringIntention/description.html +++ /dev/null @@ -1,7 +0,0 @@ - - - - This intention used to specify type for expression in docstring. - - - \ No newline at end of file diff --git a/python/edu/resources/intentionDescriptions/SpecifyTypeInPy3AnnotationsIntention/after.html.template b/python/edu/resources/intentionDescriptions/SpecifyTypeInPy3AnnotationsIntention/after.html.template deleted file mode 100644 index 5f5265fc0bd6..000000000000 --- a/python/edu/resources/intentionDescriptions/SpecifyTypeInPy3AnnotationsIntention/after.html.template +++ /dev/null @@ -1,2 +0,0 @@ -def foo(var: object): - var. \ No newline at end of file diff --git a/python/edu/resources/intentionDescriptions/SpecifyTypeInPy3AnnotationsIntention/before.html.template b/python/edu/resources/intentionDescriptions/SpecifyTypeInPy3AnnotationsIntention/before.html.template deleted file mode 100644 index fcdfce0ebee8..000000000000 --- a/python/edu/resources/intentionDescriptions/SpecifyTypeInPy3AnnotationsIntention/before.html.template +++ /dev/null @@ -1,2 +0,0 @@ -def foo(var): - var. \ No newline at end of file diff --git a/python/edu/resources/intentionDescriptions/SpecifyTypeInPy3AnnotationsIntention/description.html b/python/edu/resources/intentionDescriptions/SpecifyTypeInPy3AnnotationsIntention/description.html deleted file mode 100644 index dce9825a7ef6..000000000000 --- a/python/edu/resources/intentionDescriptions/SpecifyTypeInPy3AnnotationsIntention/description.html +++ /dev/null @@ -1,7 +0,0 @@ - - - - This intention used to specify type for expression in Python 3 using type annotations. - - - \ No newline at end of file diff --git a/python/edu/resources/intentionDescriptions/TypeAssertionIntention/after.html.template b/python/edu/resources/intentionDescriptions/TypeAssertionIntention/after.html.template deleted file mode 100644 index fd8ffc7fb452..000000000000 --- a/python/edu/resources/intentionDescriptions/TypeAssertionIntention/after.html.template +++ /dev/null @@ -1,3 +0,0 @@ -var = unknown() -assert isinstance(var, object) -var. \ No newline at end of file diff --git a/python/edu/resources/intentionDescriptions/TypeAssertionIntention/before.html.template b/python/edu/resources/intentionDescriptions/TypeAssertionIntention/before.html.template deleted file mode 100644 index 3ce25401f353..000000000000 --- a/python/edu/resources/intentionDescriptions/TypeAssertionIntention/before.html.template +++ /dev/null @@ -1,2 +0,0 @@ -var = unknown() -var. \ No newline at end of file diff --git a/python/edu/resources/intentionDescriptions/TypeAssertionIntention/description.html b/python/edu/resources/intentionDescriptions/TypeAssertionIntention/description.html deleted file mode 100644 index be57cd3b6847..000000000000 --- a/python/edu/resources/intentionDescriptions/TypeAssertionIntention/description.html +++ /dev/null @@ -1,7 +0,0 @@ - - - - This intention used to specify type for expression by assertion. - - - \ No newline at end of file diff --git a/python/edu/resources/intentionDescriptions/WrapTransTagIntention/after.html.template b/python/edu/resources/intentionDescriptions/WrapTransTagIntention/after.html.template deleted file mode 100644 index d26fc1258f3e..000000000000 --- a/python/edu/resources/intentionDescriptions/WrapTransTagIntention/after.html.template +++ /dev/null @@ -1 +0,0 @@ -{% blocktrans %}This will have {{ myvar }} inside.{% endblocktrans %} \ No newline at end of file diff --git a/python/edu/resources/intentionDescriptions/WrapTransTagIntention/before.html.template b/python/edu/resources/intentionDescriptions/WrapTransTagIntention/before.html.template deleted file mode 100644 index e7f818a2378b..000000000000 --- a/python/edu/resources/intentionDescriptions/WrapTransTagIntention/before.html.template +++ /dev/null @@ -1 +0,0 @@ -This will have {{ myvar }} inside. \ No newline at end of file diff --git a/python/edu/resources/intentionDescriptions/WrapTransTagIntention/description.html b/python/edu/resources/intentionDescriptions/WrapTransTagIntention/description.html deleted file mode 100644 index 6646903b6258..000000000000 --- a/python/edu/resources/intentionDescriptions/WrapTransTagIntention/description.html +++ /dev/null @@ -1,7 +0,0 @@ - - - - This intention wraps selected template part with {% trans %} tag. - - - \ No newline at end of file diff --git a/python/edu/resources/liveTemplates/Python.xml b/python/edu/resources/liveTemplates/Python.xml deleted file mode 100644 index 47928f82d8aa..000000000000 --- a/python/edu/resources/liveTemplates/Python.xml +++ /dev/null @@ -1,329 +0,0 @@ - - - - - - - - - - - - - - - - - - diff --git a/python/edu/resources/tips/AdaptiveWelcome.html b/python/edu/resources/tips/AdaptiveWelcome.html deleted file mode 100644 index 597ffaf6e402..000000000000 --- a/python/edu/resources/tips/AdaptiveWelcome.html +++ /dev/null @@ -1,13 +0,0 @@ - - - - - -

Welcome to PyCharm Productivity Guide

-

- PyCharm keeps track of which of its features you are using and will offer you some tips to let you know - about the features you may have missed. These tips will be shown while the startup process is going on. - You can always get back to them by selecting Help | Productivity Guide - on the menu bar.

- - diff --git a/python/edu/resources/tips/AnnotationsAndDiffs.html b/python/edu/resources/tips/AnnotationsAndDiffs.html deleted file mode 100644 index 309d032d6483..000000000000 --- a/python/edu/resources/tips/AnnotationsAndDiffs.html +++ /dev/null @@ -1,13 +0,0 @@ - - - - - -

- Version control annotations show the latest changes of each line in one click.

-

- Just right-click an annotation and use the Show Diff command in the context menu.

-

-

- - \ No newline at end of file diff --git a/python/edu/resources/tips/BreakpointSpeedmenu.html b/python/edu/resources/tips/BreakpointSpeedmenu.html deleted file mode 100644 index 5a03f23734a0..000000000000 --- a/python/edu/resources/tips/BreakpointSpeedmenu.html +++ /dev/null @@ -1,12 +0,0 @@ - - - - - -

- Right-clicking on a breakpoint (in the left gutter) invokes the context menu where - you can quickly enable/disable the breakpoint or adjust its properties.

-

-

- - diff --git a/python/edu/resources/tips/BuiltInServer.html b/python/edu/resources/tips/BuiltInServer.html deleted file mode 100644 index 4515f0406f56..000000000000 --- a/python/edu/resources/tips/BuiltInServer.html +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - -

It is very easy to change the built-in web server port (File | Settings – Debugger – JavaScript), -and use the "Built-in server port" spinner to set the new value.

-

-

Next, open an HTML page in your browser and see it running on the defined port.

- - - - - diff --git a/python/edu/resources/tips/CamelHumpsInCodeCompletion.html b/python/edu/resources/tips/CamelHumpsInCodeCompletion.html deleted file mode 100644 index 610f91da547e..000000000000 --- a/python/edu/resources/tips/CamelHumpsInCodeCompletion.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - -

- When in the Code Completion lookup, you can ease the search by filtering the list with the help of the "camel words" prefixes.

-

-

- - diff --git a/python/edu/resources/tips/CamelPrefixesInNavigationPopups.html b/python/edu/resources/tips/CamelPrefixesInNavigationPopups.html deleted file mode 100644 index cae5bf207ab9..000000000000 --- a/python/edu/resources/tips/CamelPrefixesInNavigationPopups.html +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - -

When in the Go to Class, - Go to Symbol, or - Go to File popup, - you can ease the search by filtering the lookup list with the help of the "camel words" prefixes.

-

- - - - - diff --git a/python/edu/resources/tips/CancelByControlArrows.html b/python/edu/resources/tips/CancelByControlArrows.html deleted file mode 100644 index 2433e56796a3..000000000000 --- a/python/edu/resources/tips/CancelByControlArrows.html +++ /dev/null @@ -1,12 +0,0 @@ - - - - - -

- When an autopopup completion is active, - &shortcut:EditorLookupDown; and &shortcut:EditorLookupUp; - will close it and move the caret down or up in the editor. -

- - diff --git a/python/edu/resources/tips/ChangeSorting.html b/python/edu/resources/tips/ChangeSorting.html deleted file mode 100644 index 152e182b5dfc..000000000000 --- a/python/edu/resources/tips/ChangeSorting.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - -

- You can switch between sorting completion variants by relevance or alphabetically by using an icon at the bottom right: -

-

- - diff --git a/python/edu/resources/tips/ChangesView.html b/python/edu/resources/tips/ChangesView.html deleted file mode 100644 index 73d19bbd87a1..000000000000 --- a/python/edu/resources/tips/ChangesView.html +++ /dev/null @@ -1,13 +0,0 @@ - - - - - -

The Changes tool window shows all deleted, modified, and unversioned files in a single view. -Use &shortcut:ActivateChangesToolWindow; keyboard shortcut to show or hide this tool window.

-

From the Changes tool window you can perform all the necessary version control actions: commit changes, manage changelists, put resources under version control, examine differences and more.

- - - - - diff --git a/python/edu/resources/tips/CheckRegExp.html b/python/edu/resources/tips/CheckRegExp.html deleted file mode 100644 index d231480db17c..000000000000 --- a/python/edu/resources/tips/CheckRegExp.html +++ /dev/null @@ -1,13 +0,0 @@ - - - - - -

The format of a regular expression can be rather complicated. -To make sure you didn't miss some slash of quotation mark, place the caret -somewhere in the expression you want to check, and press &shortcut:ShowIntentionActions;.

-

In the pop-up frame type a string that you think should match your regular expression. If the background turns green, you are lucky. If it turns red, then you have to look for a mistake.

-

-

- - \ No newline at end of file diff --git a/python/edu/resources/tips/ClassNameCompletion.html b/python/edu/resources/tips/ClassNameCompletion.html deleted file mode 100644 index cdeb6602a9ff..000000000000 --- a/python/edu/resources/tips/ClassNameCompletion.html +++ /dev/null @@ -1,14 +0,0 @@ - - - - - -

- A special variant of the Code Completion feature invoked by pressing &shortcut:CodeCompletion; twice allows you to - complete the name of any class - no matter if it was imported in the current file or not. - If the class is not imported yet, the import statement is generated automatically.

-

-

- - diff --git a/python/edu/resources/tips/ClipboardStack.html b/python/edu/resources/tips/ClipboardStack.html deleted file mode 100644 index 1c5e00890bec..000000000000 --- a/python/edu/resources/tips/ClipboardStack.html +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - -

Use the &shortcut:PasteMultiple; shortcut to choose and insert recent clipboard contents into the text.

- - - - diff --git a/python/edu/resources/tips/CloseOthers.html b/python/edu/resources/tips/CloseOthers.html deleted file mode 100644 index ab5beb58f6e3..000000000000 --- a/python/edu/resources/tips/CloseOthers.html +++ /dev/null @@ -1,15 +0,0 @@ - - - - - -

- There are two ways of closing all tabs in the editor, except the current one:

-
    -
  • First, right-click the editor tab, and choose Close Others on the context menu.
  • -
  • Second, keeping the Alt key pressed, click on the editor tab.
  • -
-

-

- - diff --git a/python/edu/resources/tips/CodeCompletion.html b/python/edu/resources/tips/CodeCompletion.html deleted file mode 100644 index 351c332e55a8..000000000000 --- a/python/edu/resources/tips/CodeCompletion.html +++ /dev/null @@ -1,15 +0,0 @@ - - - - - -

- The Code Completion feature lets you quickly complete different kinds of statements - in the code. - For example, start typing a class name and press &shortcut:CodeCompletion; - to complete it. - When multiple choices are available, they are shown in the lookup list.

-

-

- - diff --git a/python/edu/resources/tips/CodeCompletionInSearch.html b/python/edu/resources/tips/CodeCompletionInSearch.html deleted file mode 100644 index 165a58883779..000000000000 --- a/python/edu/resources/tips/CodeCompletionInSearch.html +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - -

When you are finding text in the current file (&shortcut:Find;), you don't need to type the whole search string: - Basic Code Completion is available in the search field. Start typing, press &shortcut:CodeCompletion;, and - select the desired string from the suggestion list.

- -

- - - - - diff --git a/python/edu/resources/tips/CodeCompletionMiddle.html b/python/edu/resources/tips/CodeCompletionMiddle.html deleted file mode 100644 index 016a0749554d..000000000000 --- a/python/edu/resources/tips/CodeCompletionMiddle.html +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - -

When using basic code completion (&shortcut:CodeCompletion;), -type any characters that exist anywhere in an identifier. -

- -

- - - - - diff --git a/python/edu/resources/tips/CodeCompletionNoShift.html b/python/edu/resources/tips/CodeCompletionNoShift.html deleted file mode 100644 index b9128ec74cf5..000000000000 --- a/python/edu/resources/tips/CodeCompletionNoShift.html +++ /dev/null @@ -1,16 +0,0 @@ - - - - - -

- When using basic code completion (&shortcut:CodeCompletion;), - you don't need to type upper-case letters in CamelHump names. - It is enough to type the initial letters of the camel names in lower case, and they will be smartly recognized.

-

-

-

This behavior is enabled, if None is selected from the -Case sensitive completion drop-down list (the -Code Completion page of the Editor settings). - - diff --git a/python/edu/resources/tips/ColorEditingInCss.html b/python/edu/resources/tips/ColorEditingInCss.html deleted file mode 100644 index cf92ed9baa2f..000000000000 --- a/python/edu/resources/tips/ColorEditingInCss.html +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - -

&productName; - simplifies your work - with colors in CSS files. The color - properties have the icons of the corresponding color in the left gutter area of the editor. -

-

Click color icons to choose the desired color from the color picker.

-

- - - - - diff --git a/python/edu/resources/tips/ColumnSelection.html b/python/edu/resources/tips/ColumnSelection.html deleted file mode 100644 index d7bddd0db0fc..000000000000 --- a/python/edu/resources/tips/ColumnSelection.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - -

You can easily make column selection by dragging your mouse pointer while keeping the - Alt key pressed. -

-

- - diff --git a/python/edu/resources/tips/Comment.html b/python/edu/resources/tips/Comment.html deleted file mode 100644 index 534d17231c9e..000000000000 --- a/python/edu/resources/tips/Comment.html +++ /dev/null @@ -1,17 +0,0 @@ - - - - - -

- You can comment and uncomment lines of code using &shortcut:CommentByLineComment;.

-

- &shortcut:CommentByLineComment; comments or uncomments the current line or - several selected lines with single line comments ({# in Django templates, - or # in Python scripts).

-

- Pressing &shortcut:CommentByBlockComment; for a selected block of source code - in a Django template surrounds the block with {% comment %} - and {% endcomment %} tags.

- - diff --git a/python/edu/resources/tips/CommitCtrlK.html b/python/edu/resources/tips/CommitCtrlK.html deleted file mode 100644 index 488a75e29bc9..000000000000 --- a/python/edu/resources/tips/CommitCtrlK.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - -

- The keyboard shortcut Ctrl+K enables you to quickly invoke the Commit Changes dialog.

-

- This dialog shows all modifications in project, gives summary information of file status and suggests improvements before check-in.

- - diff --git a/python/edu/resources/tips/CompletionInHTML.html b/python/edu/resources/tips/CompletionInHTML.html deleted file mode 100644 index 3b39387f5c7a..000000000000 --- a/python/edu/resources/tips/CompletionInHTML.html +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - -

You can use Basic Completion - (&shortcut:CodeCompletion;) in HTML, CSS and JavaScript files, for completing attributes, - parameters, tags, selectors, etc.

-

-

- - - - - diff --git a/python/edu/resources/tips/ConfiguringTerminal.html b/python/edu/resources/tips/ConfiguringTerminal.html deleted file mode 100644 index c393ea6575b7..000000000000 --- a/python/edu/resources/tips/ConfiguringTerminal.html +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - -

For the embedded local terminal, you can define your favorite shell, -default tab name, and other settings. -Choose -File | Settings (Windows/*nix) or -PyCharm | Preferences (Mac) -on the main menu, and then open the page Terminal.

- - - diff --git a/python/edu/resources/tips/Consoles.html b/python/edu/resources/tips/Consoles.html deleted file mode 100644 index 1514b6efc50c..000000000000 --- a/python/edu/resources/tips/Consoles.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - -

- You can work in the Python or Django shell without leaving the IDE. - Just choose Run Python Console or Run Django Console - in the Tools menu.

- - \ No newline at end of file diff --git a/python/edu/resources/tips/ConsolesCodeCompletion.html b/python/edu/resources/tips/ConsolesCodeCompletion.html deleted file mode 100644 index 8c4cbb33dd3d..000000000000 --- a/python/edu/resources/tips/ConsolesCodeCompletion.html +++ /dev/null @@ -1,14 +0,0 @@ - - - - - -

- Working in the interactive consoles, you don't need to memorise the command line syntax or available functions. - Instead, you can use the familiar code completion &shortcut:CodeCompletion;. - Moreover, from within the lookup list, you can press &shortcut:QuickJavaDoc; - to view the item's documentation.

-

-

- - \ No newline at end of file diff --git a/python/edu/resources/tips/ConsolesHistory.html b/python/edu/resources/tips/ConsolesHistory.html deleted file mode 100644 index 8fe19a578742..000000000000 --- a/python/edu/resources/tips/ConsolesHistory.html +++ /dev/null @@ -1,13 +0,0 @@ - - - - - -

- If you have already spent some time working in the interactive consoles, - you don't need to re-type the previously entered commands to repeat them. - Instead, press &shortcut:EditorScrollUp; and - &shortcut:EditorScrollDown; to scroll through - the history of commands.

- - diff --git a/python/edu/resources/tips/CopyWithNoSelection.html b/python/edu/resources/tips/CopyWithNoSelection.html deleted file mode 100644 index d7321e4e8379..000000000000 --- a/python/edu/resources/tips/CopyWithNoSelection.html +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - -

-If nothing is selected in the editor, and you press &shortcut:$Copy;, then the whole line at caret is copied to the clipboard. -

- - - diff --git a/python/edu/resources/tips/CtrlD.html b/python/edu/resources/tips/CtrlD.html deleted file mode 100644 index 5b676b83275b..000000000000 --- a/python/edu/resources/tips/CtrlD.html +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - -

&shortcut:EditorDuplicate; in the editor duplicates the selected block or the current line - when no block is selected.

- - - - - diff --git a/python/edu/resources/tips/CtrlDotInLookups.html b/python/edu/resources/tips/CtrlDotInLookups.html deleted file mode 100644 index 9cc5b377d169..000000000000 --- a/python/edu/resources/tips/CtrlDotInLookups.html +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - -

- When using autopopup Code Completion, you can select the first item using &shortcut:EditorChooseLookupItemDot;. - The selected name is automatically entered in the editor followed by dot.

- - - - - diff --git a/python/edu/resources/tips/CtrlShiftI.html b/python/edu/resources/tips/CtrlShiftI.html deleted file mode 100644 index 59f9dd57209e..000000000000 --- a/python/edu/resources/tips/CtrlShiftI.html +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - -

Use &shortcut:QuickImplementations; - (View | Quick Definition), - to quickly review definition or content of the symbol at caret, without the need to open it - in a new editor tab.

-

- - - - - diff --git a/python/edu/resources/tips/CtrlShiftIForLookup.html b/python/edu/resources/tips/CtrlShiftIForLookup.html deleted file mode 100644 index 9a783314e0a2..000000000000 --- a/python/edu/resources/tips/CtrlShiftIForLookup.html +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - -

The Quick Definition Viewer - (&shortcut:QuickImplementations;) can be also used for items in lookup lists that appear on code - completion and class/file/symbol navigaton commands.

-

- - - - - \ No newline at end of file diff --git a/python/edu/resources/tips/CtrlW.html b/python/edu/resources/tips/CtrlW.html deleted file mode 100644 index 34e30540cb80..000000000000 --- a/python/edu/resources/tips/CtrlW.html +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - -

&shortcut:EditorSelectWord; (extend selection) in the editor selects the word at the caret - and then selects expanding areas of the source code. For example, it may select a method name, - then the expression that calls this method, then the whole statement, then the containing block, etc. - You can also select the word at the caret and the expanding areas of the source code by double-clicking the target areas in the editor.

- - - - diff --git a/python/edu/resources/tips/DirDiff.html b/python/edu/resources/tips/DirDiff.html deleted file mode 100644 index b03166b9689e..000000000000 --- a/python/edu/resources/tips/DirDiff.html +++ /dev/null @@ -1,10 +0,0 @@ - - - - - -

- To compare two directories, select one or both of them in the Project view and - press &shortcut:CompareDirs;.

- - \ No newline at end of file diff --git a/python/edu/resources/tips/DotEtcInLookups.html b/python/edu/resources/tips/DotEtcInLookups.html deleted file mode 100644 index 149bbaad6aab..000000000000 --- a/python/edu/resources/tips/DotEtcInLookups.html +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - -

- When using Code Completion, you can accept the currently highlighted selection in the popup list - with the period character (.), comma (,), - semicolon (;), space and other characters.

-

- The selected name is automatically entered in the editor followed by the entered character.

- - - - - diff --git a/python/edu/resources/tips/DragToOpen.html b/python/edu/resources/tips/DragToOpen.html deleted file mode 100644 index 6d788aebb3e7..000000000000 --- a/python/edu/resources/tips/DragToOpen.html +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - -

You can easily open an external file for editing, if you just drag it from the Explorer or Finder to the editor.

- - -

- - - diff --git a/python/edu/resources/tips/EditRegExp.html b/python/edu/resources/tips/EditRegExp.html deleted file mode 100644 index 6a14a46a28ca..000000000000 --- a/python/edu/resources/tips/EditRegExp.html +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - -

You can avoid escaping backslashes in your regular expressions. Start typing a regular expression, then press &shortcut:ShowIntentionActions; and choose Edit RegExp. -The regular expression opens in a separate tab in the editor, where you can type backslashes as is.

-

All changes are synchronized with the original regular expression, and escapes are presented automatically. When ready, just press &shortcut:EditorEscape; to close the regular expression editor.

-

- - - diff --git a/python/edu/resources/tips/Emmet.html b/python/edu/resources/tips/Emmet.html deleted file mode 100644 index 6dcec74020a3..000000000000 --- a/python/edu/resources/tips/Emmet.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - -

Speed up HTML, XML or CSS development with Emmet.

-

Enable this framework in the Emmet(Zen Coding) page of the Settings/Preferences dialog:

-

-

- - \ No newline at end of file diff --git a/python/edu/resources/tips/EnterDirectoryInGotoFile.html b/python/edu/resources/tips/EnterDirectoryInGotoFile.html deleted file mode 100644 index 71704d4906f3..000000000000 --- a/python/edu/resources/tips/EnterDirectoryInGotoFile.html +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - -

You can jump directly to any deeply buried file, if you press &shortcut:GotoFile;, and type just a couple -of characters of the enclosing directories and file names:

- -

- -

Use either a slash or a backslash as a delimiter.

- - - - \ No newline at end of file diff --git a/python/edu/resources/tips/Escape.html b/python/edu/resources/tips/Escape.html deleted file mode 100644 index 949dec64329d..000000000000 --- a/python/edu/resources/tips/Escape.html +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - -

The &shortcut:EditorEscape; key in any tool window moves the focus to the editor.

-

&shortcut:HideActiveWindow; moves the focus to the editor and also hides the current (or last active) tool window.

-

The &shortcut:JumpToLastWindow; key moves the focus from the editor to the last focused tool window.

- - - - - diff --git a/python/edu/resources/tips/EvaluateExpressionInEditor.html b/python/edu/resources/tips/EvaluateExpressionInEditor.html deleted file mode 100644 index 09917ef01048..000000000000 --- a/python/edu/resources/tips/EvaluateExpressionInEditor.html +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - -

To easily evaluate the value of any expression while debugging the program, select its text in the editor - (you might want to press a &shortcut:EditorSelectWord; a few times to efficiently perform this operation) - and then press &shortcut:EvaluateExpression;.

- - - - - diff --git a/python/edu/resources/tips/ExtractVariable.html b/python/edu/resources/tips/ExtractVariable.html deleted file mode 100644 index 06ce96f45675..000000000000 --- a/python/edu/resources/tips/ExtractVariable.html +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - -

The Extract Variable - refactoring helps you simplify complicated statements in your code. For example, in the code fragment below, - you can select an expression in the code, and press &shortcut:IntroduceVariable; (Refactor | Extract | Variable).

-

-

- This will result in the following:

-

- - - - - diff --git a/python/edu/resources/tips/FileStructurePopup.html b/python/edu/resources/tips/FileStructurePopup.html deleted file mode 100644 index f0f94c6a3e18..000000000000 --- a/python/edu/resources/tips/FileStructurePopup.html +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - -

You can quickly navigate in the currently edited file with &shortcut:FileStructurePopup; - (Navigate | File Structure).

-

It shows the list of members of the current class. Select an element you want to navigate to and press the - Enter key or the &shortcut:EditSource; key.

-

To easily locate an item in the list, just start typing its name.

- - - - - diff --git a/python/edu/resources/tips/FindReplaceToggle.html b/python/edu/resources/tips/FindReplaceToggle.html deleted file mode 100644 index 60d7b31dc700..000000000000 --- a/python/edu/resources/tips/FindReplaceToggle.html +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - -

It is very easy to toggle between find and replace functionality.

-

When you perform search and replace in a file, pressing &shortcut:Find; -shows the search pane. Pressing &shortcut:Replace; adds field, where you can type the replace string.

- -

While in the Find in Path dialog, you can switch to -replace by pressing &shortcut:ReplaceInPath;. Same way, press &shortcut:FindInPath; to hide the -Replace with field, and switch to mere search.

- - - - diff --git a/python/edu/resources/tips/FindUsages.html b/python/edu/resources/tips/FindUsages.html deleted file mode 100644 index a7162139a42f..000000000000 --- a/python/edu/resources/tips/FindUsages.html +++ /dev/null @@ -1,12 +0,0 @@ - - - - - -

- You can quickly find all places where a particular class, method or variable is used in the whole project - by positioning the caret at the symbol's name or at its usage in code and pressing &shortcut:FindUsages; - (Find Usages - in the popup menu).

- - diff --git a/python/edu/resources/tips/GoToAction.html b/python/edu/resources/tips/GoToAction.html deleted file mode 100644 index 89a93e95e3f2..000000000000 --- a/python/edu/resources/tips/GoToAction.html +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - -

To quickly find a menu command or toolbar action, you do not need to look through the menus. Just press - &shortcut:GotoAction; - (Help | Find Action on the main - menu) and start typing the name of the action. Choose the desired action from the suggestion list.

- - - - - diff --git a/python/edu/resources/tips/GoToClass.html b/python/edu/resources/tips/GoToClass.html deleted file mode 100644 index 2cdf5eb3f0d1..000000000000 --- a/python/edu/resources/tips/GoToClass.html +++ /dev/null @@ -1,16 +0,0 @@ - - - - - -

- To open any class in the editor quickly, press &shortcut:GotoClass; - (Navigate | Class) - and start typing the name of the class. Choose the class from a drop-down list that appears.

-

-

-

- You can open any file in your project in a similar way by using &shortcut:GotoFile; - (Navigate | File)

- - diff --git a/python/edu/resources/tips/GoToDeclaration.html b/python/edu/resources/tips/GoToDeclaration.html deleted file mode 100644 index 7db07bbfdf96..000000000000 --- a/python/edu/resources/tips/GoToDeclaration.html +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - -

To navigate to the declaration of a class, method or variable used somewhere in the code, - position the caret at the usage and press &shortcut:GotoDeclaration;. You can also click the mouse - on usages with the Ctrl - key pressed to jump to declarations.

-

- - - - - diff --git a/python/edu/resources/tips/GoToInspection.html b/python/edu/resources/tips/GoToInspection.html deleted file mode 100644 index dabb6ef4fb51..000000000000 --- a/python/edu/resources/tips/GoToInspection.html +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - -

To quickly find and run an inspection, press - &shortcut:RunInspection; - and start typing the name of the inspection or its group. Choose the desired inspection from the suggestion list and - then specify the desired scope.

- - - - - diff --git a/python/edu/resources/tips/GoToSymbol.html b/python/edu/resources/tips/GoToSymbol.html deleted file mode 100644 index 85d099fd8121..000000000000 --- a/python/edu/resources/tips/GoToSymbol.html +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - -

To open any particular method or field in the editor quickly, press &shortcut:GotoSymbol; - (Navigate | Symbol) - and start typing its name.

-

Choose symbol from the drop-down list that appears.

-

- - - - - diff --git a/python/edu/resources/tips/GotoLineInFile.html b/python/edu/resources/tips/GotoLineInFile.html deleted file mode 100644 index cc44b74064f1..000000000000 --- a/python/edu/resources/tips/GotoLineInFile.html +++ /dev/null @@ -1,16 +0,0 @@ - - - - - -

- To open any class or file in the editor at the desired line, press &shortcut:GotoFile; - (Navigate | File), - start typing the name, and choose the one from the suggestion list. - Then type the colon (:) and a line number.

-

- The selected file will open with the caret at the specified line.

-

-

- - diff --git a/python/edu/resources/tips/HierarchyBrowser.html b/python/edu/resources/tips/HierarchyBrowser.html deleted file mode 100644 index 3fd2fc9c1678..000000000000 --- a/python/edu/resources/tips/HierarchyBrowser.html +++ /dev/null @@ -1,15 +0,0 @@ - - - - - -

- To see the inheritance hierarchy for a selected class, - press &shortcut:TypeHierarchy; - (Navigate | Type Hierarchy). - You can also invoke the hierarchy view right from the editor - to see the hierarchy for the currently edited class.

-

-

- - diff --git a/python/edu/resources/tips/HighlightUsagesInFile.html b/python/edu/resources/tips/HighlightUsagesInFile.html deleted file mode 100644 index ea316136833b..000000000000 --- a/python/edu/resources/tips/HighlightUsagesInFile.html +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - -

Use &shortcut:HighlightUsagesInFile; (Edit | Find | Highlight Usages in File) - to quickly highlight usages of some variable in the current file.

-

Use &shortcut:FindNext; and &shortcut:FindPrevious; keys to navigate through highlighted usages.

-

Press &shortcut:EditorEscape; to remove highlighting.

- - - - - diff --git a/python/edu/resources/tips/HorizontalScrolling.html b/python/edu/resources/tips/HorizontalScrolling.html deleted file mode 100644 index f70b0cd50c7c..000000000000 --- a/python/edu/resources/tips/HorizontalScrolling.html +++ /dev/null @@ -1,10 +0,0 @@ - - - - - -

- Enable the horizontal scrolling with the mouse wheel by holding - the Shift key.

- - \ No newline at end of file diff --git a/python/edu/resources/tips/ImageFileCompletion.html b/python/edu/resources/tips/ImageFileCompletion.html deleted file mode 100644 index cc6a5291b7ab..000000000000 --- a/python/edu/resources/tips/ImageFileCompletion.html +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - -

Use Basic Completion - (&shortcut:CodeCompletion;) within HTML, CSS and other files, for completing image file names.

-

- - - - - diff --git a/python/edu/resources/tips/ImagesLookup.html b/python/edu/resources/tips/ImagesLookup.html deleted file mode 100644 index cad3862eef64..000000000000 --- a/python/edu/resources/tips/ImagesLookup.html +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - -

You can quickly view the image referenced at caret by using the - Quick Definition - (&shortcut:QuickImplementations;). The underlying image will be opened in a popup instead of a separate editor tab.

-

- - - - - diff --git a/python/edu/resources/tips/Interpreter.html b/python/edu/resources/tips/Interpreter.html deleted file mode 100644 index 4f4c58f58657..000000000000 --- a/python/edu/resources/tips/Interpreter.html +++ /dev/null @@ -1,12 +0,0 @@ - - - - - -

PyCharm allows configuring Python interpreters on the various stages of development:

-
    -
  • When a project is only being created (File | New Project, or Create New Project on the Welcome screen).
  • -
  • In an already existing project (File | Settings - Project Interpreter).
  • -
- - diff --git a/python/edu/resources/tips/IssueNavigation.html b/python/edu/resources/tips/IssueNavigation.html deleted file mode 100644 index 8f1bc7db088e..000000000000 --- a/python/edu/resources/tips/IssueNavigation.html +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - -

&productName; lets you jump from your check-in comment to an issue in your task tracker.

-

All you have to do is to define issue navigation patterns on the - Version Control page of the Settings/Preferences - dialog:

-

-

When you commit a changelist, and type the check-in comment, make sure it matches one of your issue navigation patterns. - Later, when you browse through the changelists in the repository, such comments turn into hyperlinks:

-

-

Clicking a hyperlink brings you directly to an issue in your task tracker.

- - - - - \ No newline at end of file diff --git a/python/edu/resources/tips/JoinLines.html b/python/edu/resources/tips/JoinLines.html deleted file mode 100644 index 144035ddb624..000000000000 --- a/python/edu/resources/tips/JoinLines.html +++ /dev/null @@ -1,10 +0,0 @@ - - - - - -

- The &shortcut:EditorJoinLines; shortcut joins two lines - into one and removes unnecessary spaces to match your code style.

- - diff --git a/python/edu/resources/tips/JumpToLastEdit.html b/python/edu/resources/tips/JumpToLastEdit.html deleted file mode 100644 index 1438812f4e1d..000000000000 --- a/python/edu/resources/tips/JumpToLastEdit.html +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - -

&shortcut:JumpToLastChange; (Navigate | Last Edit Location) - brings you back to the last place where you made changes in the code.

-

Pressing &shortcut:JumpToLastChange; a few times moves you deeper into your changes history.

- - - - - diff --git a/python/edu/resources/tips/LaunchConsole.html b/python/edu/resources/tips/LaunchConsole.html deleted file mode 100644 index 5b2213c0c57d..000000000000 --- a/python/edu/resources/tips/LaunchConsole.html +++ /dev/null @@ -1,15 +0,0 @@ - - - - - -

- While debugging, you might need an interactive console at hand... This is most easy. -During the debugging session, switch to the Debugger Console, -and then press the very lowest button in its toolbar. -

-

The console becomes interactive, and shows a prompt, where you can enter commands, and view output.

-

launch_console_in_debugger

- - - diff --git a/python/edu/resources/tips/LineEndings.html b/python/edu/resources/tips/LineEndings.html deleted file mode 100644 index 162eb9b1ede6..000000000000 --- a/python/edu/resources/tips/LineEndings.html +++ /dev/null @@ -1,12 +0,0 @@ - - - - - -

To view which line separators style is used in the current file, -look at the Status Bar:

- -

-

To change the current line ending style, just click the spinner.

- - \ No newline at end of file diff --git a/python/edu/resources/tips/LineEndingsFolder.html b/python/edu/resources/tips/LineEndingsFolder.html deleted file mode 100644 index a7824801b636..000000000000 --- a/python/edu/resources/tips/LineEndingsFolder.html +++ /dev/null @@ -1,13 +0,0 @@ - - - - - -

You do not need to open a file in the editor to change its line separator style. -Use the Project tool window instead: select one or more files, -or folders, point to File | Line Separators on the main menu, -and then choose the desired line ending style.

-

For a directory, new line separator applies recursively.

-

- - \ No newline at end of file diff --git a/python/edu/resources/tips/LiveTemplates.html b/python/edu/resources/tips/LiveTemplates.html deleted file mode 100644 index be1d10b45a42..000000000000 --- a/python/edu/resources/tips/LiveTemplates.html +++ /dev/null @@ -1,20 +0,0 @@ - - - - - -

- Live Templates let you generate many typical code constructs in seconds. For example, type - for in a Django template

-

-

-

- and then press the Tab key to see what happens.

-

-

-

- Use the Tab key to move between the template fields.

-

See Live Templates page of the Settings / Preferences -dialog for more details.

- - diff --git a/python/edu/resources/tips/LiveTemplatesDjango.html b/python/edu/resources/tips/LiveTemplatesDjango.html deleted file mode 100644 index 4bd3fa725cfa..000000000000 --- a/python/edu/resources/tips/LiveTemplatesDjango.html +++ /dev/null @@ -1,13 +0,0 @@ - - - - - -

If you are going to use Django live templates, make sure that Django is selected -as the default Python template language in the Settings / Preferences dialog: -

-

-

- - - diff --git a/python/edu/resources/tips/LiveTemplatesRestore.html b/python/edu/resources/tips/LiveTemplatesRestore.html deleted file mode 100755 index dd090591347f..000000000000 --- a/python/edu/resources/tips/LiveTemplatesRestore.html +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - -

If you've changed a live template, it becomes blue. If you want to return to the -original text, right-click such a blue template, and choose -Restore defaults on the context menu. -

- - diff --git a/python/edu/resources/tips/LocalVCS.html b/python/edu/resources/tips/LocalVCS.html deleted file mode 100644 index 28811c18950a..000000000000 --- a/python/edu/resources/tips/LocalVCS.html +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - -

To see your local history of changes in a file, invoke - Local History | Show History - from the context menu. You can navigate through different file versions, see the differences and roll back to any previous version.

-

Use the same context menu item to see the history of changes on a directory. You will never lose any code with this feature!

- - - - - diff --git a/python/edu/resources/tips/Managepy.html b/python/edu/resources/tips/Managepy.html deleted file mode 100644 index ca9250ea3acd..000000000000 --- a/python/edu/resources/tips/Managepy.html +++ /dev/null @@ -1,18 +0,0 @@ - - - - - -

- The easiest way to run a utility of the manage.py task is to - choose Run manage.py Task in the - Tools menu, or press &shortcut:Django.RunManageTaskAction;.

-

- As you type the name of the utility you want to run, the lookup list shrinks - to show the matching entries only.

-

- If you type an asterisk, PyCharm will show the complete list of all the available tasks.

-

-

- - diff --git a/python/edu/resources/tips/MenuItemsDescriptions.html b/python/edu/resources/tips/MenuItemsDescriptions.html deleted file mode 100644 index 1739124a0073..000000000000 --- a/python/edu/resources/tips/MenuItemsDescriptions.html +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - -

To help you learn the purpose of each item in the main menu, its short description is shown in the status - bar at the bottom of the application frame when you position the mouse pointer over this item.

- - - - - diff --git a/python/edu/resources/tips/MethodSeparators.html b/python/edu/resources/tips/MethodSeparators.html deleted file mode 100644 index 1ce1b039d762..000000000000 --- a/python/edu/resources/tips/MethodSeparators.html +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - -

To show separator lines between methods in the editor, open the editor settings - and select the Show method separators check box in the - Appearance page.

- -

- - - - diff --git a/python/edu/resources/tips/MethodUpDown.html b/python/edu/resources/tips/MethodUpDown.html deleted file mode 100644 index 0bf39a287674..000000000000 --- a/python/edu/resources/tips/MethodUpDown.html +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - -

Use &shortcut:MethodUp; and &shortcut:MethodDown; keys to quickly move between methods in the editor.

- - - - diff --git a/python/edu/resources/tips/MoveToChangelist.html b/python/edu/resources/tips/MoveToChangelist.html deleted file mode 100644 index 440cc9c17ee2..000000000000 --- a/python/edu/resources/tips/MoveToChangelist.html +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - -

If you don't want to commit some of your changes to the repository, you can set them aside for a while, by moving - to a separate changelist, or by putting them to a shelf. Select such file in the Local tab of the Changes tool - window, and on the context menu choose Move to another changelist, - or Shelve Changes.

- - - - - diff --git a/python/edu/resources/tips/MoveUpDown.html b/python/edu/resources/tips/MoveUpDown.html deleted file mode 100644 index 0575c20e7c63..000000000000 --- a/python/edu/resources/tips/MoveUpDown.html +++ /dev/null @@ -1,28 +0,0 @@ - - - - - -

- The Code | Move Statement Up/Down action is useful for reorganizing the code lines - in your file, e.g., for bringing a variable declaration closer to the variable usage.

-

- For example, select a code fragment and press &shortcut:MoveStatementUp; or - &shortcut:MoveStatementDown;.

-

- Before:

-

-

-

- After moving the lines up:

-

-

-

- After moving the lines down:

-

-

-

- When there is no selection, the line at the cursor will be moved.

- - - diff --git a/python/edu/resources/tips/Multicursor.html b/python/edu/resources/tips/Multicursor.html deleted file mode 100755 index 251d849acab1..000000000000 --- a/python/edu/resources/tips/Multicursor.html +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - -

In &productName;, you can have multiple cursors. -Having pressed Alt, click the left mouse button -at the desired position to set additional cursors in the editor.

-

Press &shortcut:EditorEscape; to remove all the additional cursors -but one that resides at the line at caret.

-

- - - - diff --git a/python/edu/resources/tips/Multicursor1.html b/python/edu/resources/tips/Multicursor1.html deleted file mode 100755 index 21bf62ffbd90..000000000000 --- a/python/edu/resources/tips/Multicursor1.html +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - -

Clone the cursor strictly upwards or downwards. To do that, -press &shortcut:GotoAction; twice, type -Clone caret, and then choose the desired action.

-

- - diff --git a/python/edu/resources/tips/MultipleProjects.html b/python/edu/resources/tips/MultipleProjects.html deleted file mode 100644 index 2efdd0852d09..000000000000 --- a/python/edu/resources/tips/MultipleProjects.html +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - -

&productName; can work with several projects in one window. -To open a project in the same window with the already opened one, choose -Open directory, then in the Open project -dialog box, select the option -Open in current window, and select the check box -Add to currently opened projects.

- - - diff --git a/python/edu/resources/tips/NavBar.html b/python/edu/resources/tips/NavBar.html deleted file mode 100644 index 2029dc95e2b8..000000000000 --- a/python/edu/resources/tips/NavBar.html +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - -

Navigation bar is a quick alternative to the Project view.

-

Use &shortcut:ShowNavBar; keyboard shortcut to show the navigation bar, and arrow keys to locate the necessary files or folders.

- - - -

- - diff --git a/python/edu/resources/tips/NavigateToFilePath.html b/python/edu/resources/tips/NavigateToFilePath.html deleted file mode 100644 index 0df5aa5b9377..000000000000 --- a/python/edu/resources/tips/NavigateToFilePath.html +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - -

Ctrl+Click (on Windows) or Cmd+Click (on MacOS) a tab in the editor to navigate to any part of the file path. -Select the necessary element in the drop-down, and the corresponding file path opens in an external browser -(e.g., in the Explorer, if your OS is Windows).

-

- - - - - \ No newline at end of file diff --git a/python/edu/resources/tips/OverrideImplementMethods.html b/python/edu/resources/tips/OverrideImplementMethods.html deleted file mode 100644 index f9a4ecb5083c..000000000000 --- a/python/edu/resources/tips/OverrideImplementMethods.html +++ /dev/null @@ -1,12 +0,0 @@ - - - - - -

- You can easily override the methods of the base class by pressing - &shortcut:OverrideMethods; (Code | Override Methods).

-

-

- - diff --git a/python/edu/resources/tips/ParameterInfo.html b/python/edu/resources/tips/ParameterInfo.html deleted file mode 100644 index 3cc6ab808a1b..000000000000 --- a/python/edu/resources/tips/ParameterInfo.html +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - -

If the cursor is between the parentheses of a method call, pressing &shortcut:ParameterInfo; brings up - a list of valid parameters.

-

- - - - - - - diff --git a/python/edu/resources/tips/PreviewTODO.html b/python/edu/resources/tips/PreviewTODO.html deleted file mode 100644 index c7c9c2acb83a..000000000000 --- a/python/edu/resources/tips/PreviewTODO.html +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - -

TODO tool window lets you preview each of the -encountered TODO items – just click the preview button on the toolbar.

-

-

- - - diff --git a/python/edu/resources/tips/PyColorFiles.html b/python/edu/resources/tips/PyColorFiles.html deleted file mode 100644 index 4ac26ed2e950..000000000000 --- a/python/edu/resources/tips/PyColorFiles.html +++ /dev/null @@ -1,15 +0,0 @@ - - - - - -

- You don't need to guess which __init__.py or - views.py you are looking at...

-

- Make the editor tabs and the lines in navigation lists stand out - using the File Colors page of the project settings.

-

-

- - diff --git a/python/edu/resources/tips/QuickDocInSuggestionList.html b/python/edu/resources/tips/QuickDocInSuggestionList.html deleted file mode 100755 index 94d0e5a2e0d3..000000000000 --- a/python/edu/resources/tips/QuickDocInSuggestionList.html +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - -

When choosing a live template from a suggestion list, press -&shortcut:QuickJavaDoc; to view quick documentation - -to be sure you make a right choice:

-

- - - diff --git a/python/edu/resources/tips/QuickDocOnMouseMove.html b/python/edu/resources/tips/QuickDocOnMouseMove.html deleted file mode 100755 index 9499aeaeaad5..000000000000 --- a/python/edu/resources/tips/QuickDocOnMouseMove.html +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - -

You don't need to invoke quick documentation explicitly -(&shortcut:QuickJavaDoc;) - if you just move your mouse -pointer over the desired symbol, the quick documentation pop-up window will show -automatically.

-

To enable this feature, select the check box Show quick doc on mouse move -in the editor settings. -

- - diff --git a/python/edu/resources/tips/QuickFixRightArrow.html b/python/edu/resources/tips/QuickFixRightArrow.html deleted file mode 100644 index 04a937377bc2..000000000000 --- a/python/edu/resources/tips/QuickFixRightArrow.html +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - -

When you press &shortcut:ShowIntentionActions; to invoke a quick fix or intention action, - press the right arrow key to reveal the list of additional options.

-

Depending on the context, you can choose to disable inspection, fix all problems, - change inspection profile, etc.

-

qfo

- - - - - diff --git a/python/edu/resources/tips/QuickJavaDoc.html b/python/edu/resources/tips/QuickJavaDoc.html deleted file mode 100644 index 5bceb1a6ce70..000000000000 --- a/python/edu/resources/tips/QuickJavaDoc.html +++ /dev/null @@ -1,12 +0,0 @@ - - - - - -

- To quickly see the documentation for the symbol at caret, press &shortcut:QuickJavaDoc; - (View | Quick Documentation).

-

-

- - diff --git a/python/edu/resources/tips/QuickJavaDocInLookups.html b/python/edu/resources/tips/QuickJavaDocInLookups.html deleted file mode 100644 index b2c232944bda..000000000000 --- a/python/edu/resources/tips/QuickJavaDocInLookups.html +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - -

The shortcuts such as &shortcut:QuickJavaDoc; - (View | Quick Documentation), - &shortcut:ParameterInfo; (View | Parameter Info), - &shortcut:GotoDeclaration; (Navigate | Declaration) - and others can be used not only in the editor but in the code completion popup list as well.

-

- - - - - diff --git a/python/edu/resources/tips/QuickSwitchScheme.html b/python/edu/resources/tips/QuickSwitchScheme.html deleted file mode 100644 index 0d9359921242..000000000000 --- a/python/edu/resources/tips/QuickSwitchScheme.html +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - -

With a single keystroke, you can apply another code style/coloring scheme or keymap right from the editor. - Just press &shortcut:QuickChangeScheme; - (View | Quick Switch Scheme), - to specify the scheme you want to change.

-

- - - - - \ No newline at end of file diff --git a/python/edu/resources/tips/RecentChanges.html b/python/edu/resources/tips/RecentChanges.html deleted file mode 100644 index 83cae820f71a..000000000000 --- a/python/edu/resources/tips/RecentChanges.html +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - -

Use &shortcut:RecentChanges; to quickly review your recent changes to the project.

-

- - - - - diff --git a/python/edu/resources/tips/RecentFiles.html b/python/edu/resources/tips/RecentFiles.html deleted file mode 100644 index 975af5018893..000000000000 --- a/python/edu/resources/tips/RecentFiles.html +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - -

&shortcut:RecentFiles; (View | Recent Files) - brings a popup list of the recently visited files. Choose the desired file and press - Enter to open it.

-

- -

Besides recent files, you can bring up results of the usage searches you have performed - recently. To do that, use the same &shortcut:RecentFiles; shortcut with the Find tool window having - the focus, and select the desired find usages result from the Recent Find Usages popup.

- -

- - - - - diff --git a/python/edu/resources/tips/RecentSearch.html b/python/edu/resources/tips/RecentSearch.html deleted file mode 100644 index 1c727e6a952f..000000000000 --- a/python/edu/resources/tips/RecentSearch.html +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - -

When searching for a text string in a file, use recent history: with the search pane already open, click - the down arrow to show the list of recent entries. -

- - - - - diff --git a/python/edu/resources/tips/RefactorThis.html b/python/edu/resources/tips/RefactorThis.html deleted file mode 100644 index 275e43b74696..000000000000 --- a/python/edu/resources/tips/RefactorThis.html +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - -

If you place the caret at certain symbol and press &shortcut:Refactorings.QuickListPopupAction;, -you will see the list of refactorings applicable to the current context.

-

-

- - - diff --git a/python/edu/resources/tips/RemoteInterpreter.html b/python/edu/resources/tips/RemoteInterpreter.html deleted file mode 100644 index 9373493d41e1..000000000000 --- a/python/edu/resources/tips/RemoteInterpreter.html +++ /dev/null @@ -1,13 +0,0 @@ - - - - - -

Found yourself in a situation, when you want to use an interpreter located remotely? With -PyCharm it is quite easy.

-

To configure a remote interpreter, press &shortcut:ShowSettings;, and -under the Project Settings. open the page Project Interpreter.

-

Then click the geat button, and choose the option Add Remote:

-

You can use this remote interpreter for your project, or just leave it as one of the available interpreters.

- - diff --git a/python/edu/resources/tips/Rename.html b/python/edu/resources/tips/Rename.html deleted file mode 100644 index a1307443a10f..000000000000 --- a/python/edu/resources/tips/Rename.html +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - -

You can easily rename your local variables with automatic correction of all places where they are used.

-

To try it, place the caret at the variable you want to rename, and press &shortcut:RenameElement; - (Refactor | Rename). - Type the new name in the popup window that appears, or select one of the suggested names, - and press - Enter.

-

- - - diff --git a/python/edu/resources/tips/RenameCssSelector.html b/python/edu/resources/tips/RenameCssSelector.html deleted file mode 100644 index 12e4b7a9cfbb..000000000000 --- a/python/edu/resources/tips/RenameCssSelector.html +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - -

It is possible to rename CSS selectors directly from HTML. Position the caret at - the selector to be renamed and press &shortcut:RenameElement; - (Refactor | Rename).

- - - - - diff --git a/python/edu/resources/tips/Reopen.html b/python/edu/resources/tips/Reopen.html deleted file mode 100644 index f66edac2e0ac..000000000000 --- a/python/edu/resources/tips/Reopen.html +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - -

To open again one of the recent projects, use Reopen(on Windows and Linux)/Open Recent(on MacOS) -on the File menu:

-

- -

Another way to reopen a project is to right-click the &productName; icon on the task bar: - -

- - -

- - - diff --git a/python/edu/resources/tips/RunConfigFolders.html b/python/edu/resources/tips/RunConfigFolders.html deleted file mode 100644 index a4d8c08c3597..000000000000 --- a/python/edu/resources/tips/RunConfigFolders.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - -

If there are too many run/debug configurations of the same type, you can group them into folders, and thus distinguish them visually.

-

- - - diff --git a/python/edu/resources/tips/ScopesInTODO.html b/python/edu/resources/tips/ScopesInTODO.html deleted file mode 100644 index 9872b807a7a9..000000000000 --- a/python/edu/resources/tips/ScopesInTODO.html +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - -

If you are working on a large project, with numerous TODO items, -filter them by scopes.

-

Use the Scope-Based tab in the TODO tool window to show only those items -that pertain to the scope of interest.

-

-

- - - diff --git a/python/edu/resources/tips/SearchEverywhere.html b/python/edu/resources/tips/SearchEverywhere.html deleted file mode 100644 index 9488ee263bda..000000000000 --- a/python/edu/resources/tips/SearchEverywhere.html +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - -

Find any action, symbol, or setting in &productName; with -Double Shift:

-

. -

You can also click in the upper-right corner of the product window. -

- - - diff --git a/python/edu/resources/tips/SearchInSettings.html b/python/edu/resources/tips/SearchInSettings.html deleted file mode 100644 index 85f14b136114..000000000000 --- a/python/edu/resources/tips/SearchInSettings.html +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - -

You can quickly find a setting you need in the Settings/Preferences dialog, without browsing through the numerous options. -Just type some characters that, in your opinion, exist in the option description, and the list of settings will reduce to the -matching ones. Select the desired entry, and see the setting that contains the entered characters highlighted:

-

- - - - - diff --git a/python/edu/resources/tips/SelectIn.html b/python/edu/resources/tips/SelectIn.html deleted file mode 100644 index 5076777f945b..000000000000 --- a/python/edu/resources/tips/SelectIn.html +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - -

To quickly select the currently edited element (class, file, method or field) in any view (Project view, - Structure view or other), - press &shortcut:SelectIn;.

-

- - - - - diff --git a/python/edu/resources/tips/SelectRunDebugConfiguration.html b/python/edu/resources/tips/SelectRunDebugConfiguration.html deleted file mode 100644 index 54ff5a42b2f3..000000000000 --- a/python/edu/resources/tips/SelectRunDebugConfiguration.html +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - -

By pressing &shortcut:ChooseRunConfiguration; you can access the Run/Debug dropdown on the main toolbar, - without the need to use your mouse.

- - - - - \ No newline at end of file diff --git a/python/edu/resources/tips/SelectTasks.html b/python/edu/resources/tips/SelectTasks.html deleted file mode 100644 index db5fb1a34864..000000000000 --- a/python/edu/resources/tips/SelectTasks.html +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - -

When working with a lengthy list of tasks, you don't need to delete them one by one. - Select several tasks, using Shift - or Control/Command keys, click the right arrow, and then click -Remove. -

-

- - - diff --git a/python/edu/resources/tips/ShowAppliedStyles.html b/python/edu/resources/tips/ShowAppliedStyles.html deleted file mode 100644 index 2f6b0984b220..000000000000 --- a/python/edu/resources/tips/ShowAppliedStyles.html +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - -

You can quickly review all styles currently applied to an HTML tag, by right-clicking the tag name and selecting - Show Applied Styles For Tag - from the context menu:

-

- - - - - - diff --git a/python/edu/resources/tips/ShowHideSideBars.html b/python/edu/resources/tips/ShowHideSideBars.html deleted file mode 100644 index d39e28fa2e7b..000000000000 --- a/python/edu/resources/tips/ShowHideSideBars.html +++ /dev/null @@ -1,14 +0,0 @@ - - - - - -

- If you need more workspace, you can hide the tool windows bars: - click in the lower left corner.

-

- If necessary, you can show the tool window buttons just for a moment. To do that, press the key Alt (for Windows/*nix) or -Cmd (for Mac) twice and keep it down. - While the key is pressed, the tool window buttons are visible.

- - diff --git a/python/edu/resources/tips/ShowUsages.html b/python/edu/resources/tips/ShowUsages.html deleted file mode 100644 index 83e009ffab12..000000000000 --- a/python/edu/resources/tips/ShowUsages.html +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - -

You can bring forward the list of all usages of a class, method or variable across the whole - project, and quickly jump to the selected usage. To do that, place the caret at the symbol's name or at its usage - in code and press &shortcut:ShowUsages; (Edit | Find | Show Usages - in the main menu), scroll the list and click the desired usage.

-

- - - - - diff --git a/python/edu/resources/tips/SpeedSearch.html b/python/edu/resources/tips/SpeedSearch.html deleted file mode 100644 index 879615356dab..000000000000 --- a/python/edu/resources/tips/SpeedSearch.html +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - -

The speed search is available in all the tree views: just start typing and you'll quickly locate the necessary item.

-

- - - - - diff --git a/python/edu/resources/tips/SpeedSearchinLiveTemplates.html b/python/edu/resources/tips/SpeedSearchinLiveTemplates.html deleted file mode 100644 index c5b3f9ca3a54..000000000000 --- a/python/edu/resources/tips/SpeedSearchinLiveTemplates.html +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - -

In the Live Templates settings, use speed search to find templates with certain text in the template abbreviation, body or description.

-

Start typing the desired text, and the list of available templates will shrink to show matching templates only:

-

- - - diff --git a/python/edu/resources/tips/Spellchecker.html b/python/edu/resources/tips/Spellchecker.html deleted file mode 100644 index 7361ddf2aaaf..000000000000 --- a/python/edu/resources/tips/Spellchecker.html +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - -

Keep your source code typo-free with the help of the built-in Spellchecker.

- -

All texts, including comments, textual strings and literals, are inspected against the pre-defined dictionaries. -All typos are highlighted, which leaves you with the task of choosing the correct word, accepting the current spelling, or disabling inspection.

-

Use &shortcut:ShowIntentionActions; to see the list of available actions.

- - - - diff --git a/python/edu/resources/tips/SpellcheckerDictionaries.html b/python/edu/resources/tips/SpellcheckerDictionaries.html deleted file mode 100644 index c81027a013f0..000000000000 --- a/python/edu/resources/tips/SpellcheckerDictionaries.html +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - -

If you lack words in the pre-defined dictionaries, you can create your own ones. A custom dictionary is a mere -textual file with a .dic extension, with each word starting on a new line.

-

All you have to do is to point to the directories where your dictionaries are stored, in the -Spelling of the Settings dialog.

- - diff --git a/python/edu/resources/tips/Surround.html b/python/edu/resources/tips/Surround.html deleted file mode 100644 index a7b2478b56ef..000000000000 --- a/python/edu/resources/tips/Surround.html +++ /dev/null @@ -1,14 +0,0 @@ - - - - - -

- When you want to catch exceptions thrown by some code fragment, - select it in the editor, press &shortcut:SurroundWith; - (Code | Surround With) and choose try/except. - This will automatically generate the except clause.

-

- surround

- - diff --git a/python/edu/resources/tips/Switcher.html b/python/edu/resources/tips/Switcher.html deleted file mode 100644 index 270bd9b86574..000000000000 --- a/python/edu/resources/tips/Switcher.html +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - -

Use the Switcher (&shortcut:Switcher;) to switch between open files and tool windows. - Keeping Ctrl pressed, use the Up and Down arrow keys, - Tab or Shift+Tab, Alt for navigation; - use Delete or BackSpace to close editor tab or hide a tool window.

-

- - - \ No newline at end of file diff --git a/python/edu/resources/tips/TabInEditorClose.html b/python/edu/resources/tips/TabInEditorClose.html deleted file mode 100644 index dd3f371c0228..000000000000 --- a/python/edu/resources/tips/TabInEditorClose.html +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - -

Did you know that you can close tabs in the editor and the tool windows of &productName; without actually - using the context menu commands? - It is enough to point with your mouse cursor to a tab to be closed, and click the middle mouse button, or just - use the Shift+click combination.

- - - - diff --git a/python/edu/resources/tips/TabInLookups.html b/python/edu/resources/tips/TabInLookups.html deleted file mode 100644 index 328047399be6..000000000000 --- a/python/edu/resources/tips/TabInLookups.html +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - -

When using Code Completion, you can accept the currently highlighted selection in the popup list - with &shortcut:EditorChooseLookupItemReplace; key.

-

Unlike accepting with the &shortcut:EditorChooseLookupItem; key, the selected name will overwrite - the rest of the name to the right of the caret. This can be especially useful for replacing one method - or variable name with another.

- - - - - diff --git a/python/edu/resources/tips/TagNameCompletion.html b/python/edu/resources/tips/TagNameCompletion.html deleted file mode 100644 index cdce27443c63..000000000000 --- a/python/edu/resources/tips/TagNameCompletion.html +++ /dev/null @@ -1,17 +0,0 @@ - - - - - -

- A special variant of the Code Completion feature invoked by pressing &shortcut:CodeCompletion; twice allows you to - complete - XML tag names from namespaces not declared in the current file. - If the namespace is not declared yet the declaration is generated automatically. -

- -

- - - - \ No newline at end of file diff --git a/python/edu/resources/tips/Templates.html b/python/edu/resources/tips/Templates.html deleted file mode 100644 index 91bd658bff3f..000000000000 --- a/python/edu/resources/tips/Templates.html +++ /dev/null @@ -1,14 +0,0 @@ - - - - - -

- It's very easy to navigate between the Django templates and referencing views.

-

- To do that, use the icons and - in the left gutter of the editor.

-

-

- - diff --git a/python/edu/resources/tips/Terminal.html b/python/edu/resources/tips/Terminal.html deleted file mode 100644 index fcebc658521a..000000000000 --- a/python/edu/resources/tips/Terminal.html +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - -

You don't need to leave &productName; to work with your favorite shell. Just choose -Tools | Open Terminal on the main menu, -and enjoy using the embedded local terminal.

-

- - - diff --git a/python/edu/resources/tips/TerminalOpen.html b/python/edu/resources/tips/TerminalOpen.html deleted file mode 100755 index bb96ceebb64b..000000000000 --- a/python/edu/resources/tips/TerminalOpen.html +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - -

&productName; makes it possible to -launch the embedded local terminal using keyboard only. Press -&shortcut:ActivateTerminalToolWindow;, -and see the terminal running. -

- - diff --git a/python/edu/resources/tips/ToolWindowsQuickAccess.html b/python/edu/resources/tips/ToolWindowsQuickAccess.html deleted file mode 100644 index bf499d360dd1..000000000000 --- a/python/edu/resources/tips/ToolWindowsQuickAccess.html +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - -

You can gain quick access to the available tool windows: hover your mouse -pointer over icon in the lower left corner of the IDE window.

-

The list of tool windows shows up, leaving you with the task of selecting the desired one:

-

- - - diff --git a/python/edu/resources/tips/VcsQuickList.html b/python/edu/resources/tips/VcsQuickList.html deleted file mode 100644 index e7455bab492e..000000000000 --- a/python/edu/resources/tips/VcsQuickList.html +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - -

All your most indispensable VCS commands are just one-click away...

-

-Choose VCS | VCS Operations Popup -on the main menu, and get a popup with the VCS commands that are relevant to the current context: -

- -

- - - diff --git a/python/edu/resources/tips/Welcome.html b/python/edu/resources/tips/Welcome.html deleted file mode 100644 index 1be740b96e03..000000000000 --- a/python/edu/resources/tips/Welcome.html +++ /dev/null @@ -1,15 +0,0 @@ - - - - - -

Welcome to PyCharm &majorVersion;.&minorVersion;

-

- You can quickly get familiar with the main features of the IDE by reading these tips.

-

- You can try out the features described in the tips while this dialog stays open on the screen.

-

- If you close the dialog, you can always get back to it using - Help | Tip of the Day on the menu bar.

- - diff --git a/python/edu/resources/tips/WideScreen.html b/python/edu/resources/tips/WideScreen.html deleted file mode 100644 index 1ef170b896a4..000000000000 --- a/python/edu/resources/tips/WideScreen.html +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - -

Tune the &productName; tool windows layout to make better use of your screen.

-

Toggle between the vertical and side-by-side placement of the tool windows by -Ctrl+click (Windows/*nix) or Cmd+click (Mac) on the splitter:

- - -

- - - diff --git a/python/edu/resources/tips/WildcardsInNavigationPopups.html b/python/edu/resources/tips/WildcardsInNavigationPopups.html deleted file mode 100644 index 87958ee8ee10..000000000000 --- a/python/edu/resources/tips/WildcardsInNavigationPopups.html +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - -

For the pattern search in the Go to Class, - Go to Symbol and - Go to File pop-up frames, - use * and space symbols.

-

* stands for any symbol.

-

Space at the end means the end of a pattern, and the preceding string will be considered not just a prefix but a whole pattern. - The list of the suggested names will be reduced accordingly.

-

- - - - - diff --git a/python/edu/resources/tips/WordCompletion.html b/python/edu/resources/tips/WordCompletion.html deleted file mode 100644 index fd51de5e95a6..000000000000 --- a/python/edu/resources/tips/WordCompletion.html +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - -

Use Basic Completion - (&shortcut:CodeCompletion;) for completing words in text and comments in files of many different types.

-

All the words from the current file that start with the typed prefix will appear in the lookup list.

-

- - - - - diff --git a/python/edu/resources/tips/css/tips.css b/python/edu/resources/tips/css/tips.css deleted file mode 100644 index 1dea96fc5169..000000000000 --- a/python/edu/resources/tips/css/tips.css +++ /dev/null @@ -1,60 +0,0 @@ -body { - /*background: #ffffff;*/ - margin-left: 10px; - margin-right: 2px; - margin-bottom: 6px; -} -h1, p, ul { - font-family: 'MS Reference Sans Serif', verdana, arial, sans-serif; -} -.code, .code_emphasis, .code_keyword, pre, .shortcut { - font-family: 'Lucida Console', monospace; -} -h1, p, pre, ul { - font-size: 10px; - /*color: #3f3f3f;*/ -} -p, ul { - margin-top: 6px; -} -h1, p, ul { - margin-bottom: 0; -} -ul { - margin-left: 0; - padding-left: 14px; -} -h1, .image, pre { - margin-top: 10px; -} -.image, pre { - margin-bottom: 2px; -} -pre { - margin-right: 6px; - border-style: solid; - border-width: 1px; - border-color: #d0d0d0; - background-color: #fbfbfb; - padding-left: 10px; - padding-top: 6px; - padding-bottom: 6px; -} -.control, h1 { - font-weight: bold; -} -.control { - color: #808080; -} -.caret, .code_emphasis, .code_keyword, .emphasis, .shortcut { - color: #990000; -} -pre .keyword{ - color: #000080; -} -h1 .product { - color: #264db5; -} -h1 .version { - color: #f58220; -} \ No newline at end of file diff --git a/python/edu/resources/tips/css/tips_darcula.css b/python/edu/resources/tips/css/tips_darcula.css deleted file mode 100644 index 5524189d342f..000000000000 --- a/python/edu/resources/tips/css/tips_darcula.css +++ /dev/null @@ -1,75 +0,0 @@ -/* - * Copyright 2000-2013 JetBrains s.r.o. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -body { - margin-left: 10px; - margin-right: 2px; - margin-bottom: 6px; -} -h1, p, ul { - font-family: 'MS Reference Sans Serif', verdana, arial, sans-serif; -} -.code, .code_emphasis, .code_keyword, pre, .shortcut { - font-family: 'Lucida Console', monospace; -} -h1, p, pre, ul { - font-size: 10px; - /*color: #3f3f3f;*/ -} -p, ul { - margin-top: 6px; -} -h1, p, ul { - margin-bottom: 0; -} -ul { - margin-left: 0; - padding-left: 14px; -} -h1, .image, pre { - margin-top: 10px; -} -.image, pre { - margin-bottom: 2px; -} -pre { - margin-right: 6px; - border-style: solid; - border-width: 1px; - border-color: #d0d0d0; - background-color: #fbfbfb; - padding-left: 10px; - padding-top: 6px; - padding-bottom: 6px; -} -.control, h1 { - font-weight: bold; -} -.control { - color: #d19a67; -} -.caret, .code_emphasis, .code_keyword, .emphasis, .shortcut { - color: #cb7d4a; - font-weight: bold; -} -pre .keyword{ - color: #cb7832; -} -h1 .product { - color: #5275d0; -} -h1 .version { - color: #f58220; -} \ No newline at end of file diff --git a/python/edu/resources/tips/images/CodeCompletionInSearch.png b/python/edu/resources/tips/images/CodeCompletionInSearch.png deleted file mode 100644 index f4aa5e71bc48..000000000000 Binary files a/python/edu/resources/tips/images/CodeCompletionInSearch.png and /dev/null differ diff --git a/python/edu/resources/tips/images/CodeCompletionInSearch@2x.png b/python/edu/resources/tips/images/CodeCompletionInSearch@2x.png deleted file mode 100644 index ffdc6ecd1228..000000000000 Binary files a/python/edu/resources/tips/images/CodeCompletionInSearch@2x.png and /dev/null differ diff --git a/python/edu/resources/tips/images/CodeCompletionInSearch@2x_dark.png b/python/edu/resources/tips/images/CodeCompletionInSearch@2x_dark.png deleted file mode 100644 index 13a36f0b9cb0..000000000000 Binary files a/python/edu/resources/tips/images/CodeCompletionInSearch@2x_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/CodeCompletionInSearch_dark.png b/python/edu/resources/tips/images/CodeCompletionInSearch_dark.png deleted file mode 100644 index 69c9b5d8bca3..000000000000 Binary files a/python/edu/resources/tips/images/CodeCompletionInSearch_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/RunConfigFolder.png b/python/edu/resources/tips/images/RunConfigFolder.png deleted file mode 100644 index b9badc177a1f..000000000000 Binary files a/python/edu/resources/tips/images/RunConfigFolder.png and /dev/null differ diff --git a/python/edu/resources/tips/images/RunConfigFolder@2x.png b/python/edu/resources/tips/images/RunConfigFolder@2x.png deleted file mode 100644 index ae8a0ebe8992..000000000000 Binary files a/python/edu/resources/tips/images/RunConfigFolder@2x.png and /dev/null differ diff --git a/python/edu/resources/tips/images/RunConfigFolder@2x_dark.png b/python/edu/resources/tips/images/RunConfigFolder@2x_dark.png deleted file mode 100644 index 34bdb8694790..000000000000 Binary files a/python/edu/resources/tips/images/RunConfigFolder@2x_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/RunConfigFolder_dark.png b/python/edu/resources/tips/images/RunConfigFolder_dark.png deleted file mode 100644 index c1c4e99ed1a4..000000000000 Binary files a/python/edu/resources/tips/images/RunConfigFolder_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/SpeedSearchInLiveTemplates.png b/python/edu/resources/tips/images/SpeedSearchInLiveTemplates.png deleted file mode 100644 index 586a47de63de..000000000000 Binary files a/python/edu/resources/tips/images/SpeedSearchInLiveTemplates.png and /dev/null differ diff --git a/python/edu/resources/tips/images/SpeedSearchInLiveTemplates@2x.png b/python/edu/resources/tips/images/SpeedSearchInLiveTemplates@2x.png deleted file mode 100644 index ae951e8bf066..000000000000 Binary files a/python/edu/resources/tips/images/SpeedSearchInLiveTemplates@2x.png and /dev/null differ diff --git a/python/edu/resources/tips/images/SpeedSearchInLiveTemplates@2x_dark.png b/python/edu/resources/tips/images/SpeedSearchInLiveTemplates@2x_dark.png deleted file mode 100644 index 562e5c0fb3bf..000000000000 Binary files a/python/edu/resources/tips/images/SpeedSearchInLiveTemplates@2x_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/SpeedSearchInLiveTemplates_dark.png b/python/edu/resources/tips/images/SpeedSearchInLiveTemplates_dark.png deleted file mode 100644 index 5def14aa5f36..000000000000 Binary files a/python/edu/resources/tips/images/SpeedSearchInLiveTemplates_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/add_remote_interpreter.png b/python/edu/resources/tips/images/add_remote_interpreter.png deleted file mode 100644 index d9370e4468fb..000000000000 Binary files a/python/edu/resources/tips/images/add_remote_interpreter.png and /dev/null differ diff --git a/python/edu/resources/tips/images/add_remote_interpreter@2x.png b/python/edu/resources/tips/images/add_remote_interpreter@2x.png deleted file mode 100644 index 01712503c0ac..000000000000 Binary files a/python/edu/resources/tips/images/add_remote_interpreter@2x.png and /dev/null differ diff --git a/python/edu/resources/tips/images/add_remote_interpreter@2x_dark.png b/python/edu/resources/tips/images/add_remote_interpreter@2x_dark.png deleted file mode 100644 index f5758134e8cb..000000000000 Binary files a/python/edu/resources/tips/images/add_remote_interpreter@2x_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/add_remote_interpreter_dark.png b/python/edu/resources/tips/images/add_remote_interpreter_dark.png deleted file mode 100644 index 81177f5dd4d6..000000000000 Binary files a/python/edu/resources/tips/images/add_remote_interpreter_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/annotationShowDiff.png b/python/edu/resources/tips/images/annotationShowDiff.png deleted file mode 100644 index f31b70798265..000000000000 Binary files a/python/edu/resources/tips/images/annotationShowDiff.png and /dev/null differ diff --git a/python/edu/resources/tips/images/annotationShowDiff@2x.png b/python/edu/resources/tips/images/annotationShowDiff@2x.png deleted file mode 100644 index 22cd9dc11b73..000000000000 Binary files a/python/edu/resources/tips/images/annotationShowDiff@2x.png and /dev/null differ diff --git a/python/edu/resources/tips/images/annotationShowDiff@2x_dark.png b/python/edu/resources/tips/images/annotationShowDiff@2x_dark.png deleted file mode 100644 index ebe7bd7d8702..000000000000 Binary files a/python/edu/resources/tips/images/annotationShowDiff@2x_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/annotationShowDiff_dark.png b/python/edu/resources/tips/images/annotationShowDiff_dark.png deleted file mode 100644 index f91539d14c9f..000000000000 Binary files a/python/edu/resources/tips/images/annotationShowDiff_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/breakpoint_speedmenu.png b/python/edu/resources/tips/images/breakpoint_speedmenu.png deleted file mode 100644 index 51c8cdedf4ef..000000000000 Binary files a/python/edu/resources/tips/images/breakpoint_speedmenu.png and /dev/null differ diff --git a/python/edu/resources/tips/images/breakpoint_speedmenu@2x.png b/python/edu/resources/tips/images/breakpoint_speedmenu@2x.png deleted file mode 100644 index cb0eb1b1bec2..000000000000 Binary files a/python/edu/resources/tips/images/breakpoint_speedmenu@2x.png and /dev/null differ diff --git a/python/edu/resources/tips/images/breakpoint_speedmenu@2x_dark.png b/python/edu/resources/tips/images/breakpoint_speedmenu@2x_dark.png deleted file mode 100644 index c384649ddc14..000000000000 Binary files a/python/edu/resources/tips/images/breakpoint_speedmenu@2x_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/breakpoint_speedmenu@_dark.png b/python/edu/resources/tips/images/breakpoint_speedmenu@_dark.png deleted file mode 100644 index f51e9a5c1ecf..000000000000 Binary files a/python/edu/resources/tips/images/breakpoint_speedmenu@_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/browse_remote_hosts.png b/python/edu/resources/tips/images/browse_remote_hosts.png deleted file mode 100644 index fc79b19fe0e3..000000000000 Binary files a/python/edu/resources/tips/images/browse_remote_hosts.png and /dev/null differ diff --git a/python/edu/resources/tips/images/builtInServer.png b/python/edu/resources/tips/images/builtInServer.png deleted file mode 100644 index 068f8228cad4..000000000000 Binary files a/python/edu/resources/tips/images/builtInServer.png and /dev/null differ diff --git a/python/edu/resources/tips/images/builtInServer@2x.png b/python/edu/resources/tips/images/builtInServer@2x.png deleted file mode 100644 index 09b46ff0b969..000000000000 Binary files a/python/edu/resources/tips/images/builtInServer@2x.png and /dev/null differ diff --git a/python/edu/resources/tips/images/builtInServer@2x_dark.png b/python/edu/resources/tips/images/builtInServer@2x_dark.png deleted file mode 100644 index 215fd3e55f1d..000000000000 Binary files a/python/edu/resources/tips/images/builtInServer@2x_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/builtInServer@_dark.png b/python/edu/resources/tips/images/builtInServer@_dark.png deleted file mode 100644 index 4e3d5a403df4..000000000000 Binary files a/python/edu/resources/tips/images/builtInServer@_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/bullet.png b/python/edu/resources/tips/images/bullet.png deleted file mode 100644 index bc9f6a70cbde..000000000000 Binary files a/python/edu/resources/tips/images/bullet.png and /dev/null differ diff --git a/python/edu/resources/tips/images/camel_completion.png b/python/edu/resources/tips/images/camel_completion.png deleted file mode 100644 index 45c166b31404..000000000000 Binary files a/python/edu/resources/tips/images/camel_completion.png and /dev/null differ diff --git a/python/edu/resources/tips/images/camel_completion@2x.png b/python/edu/resources/tips/images/camel_completion@2x.png deleted file mode 100644 index 55fb7a737d37..000000000000 Binary files a/python/edu/resources/tips/images/camel_completion@2x.png and /dev/null differ diff --git a/python/edu/resources/tips/images/camel_completion@2x_dark.png b/python/edu/resources/tips/images/camel_completion@2x_dark.png deleted file mode 100644 index 1c9f53aa8521..000000000000 Binary files a/python/edu/resources/tips/images/camel_completion@2x_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/camel_completion_dark.png b/python/edu/resources/tips/images/camel_completion_dark.png deleted file mode 100644 index d4ea6e880fbb..000000000000 Binary files a/python/edu/resources/tips/images/camel_completion_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/camel_goto.png b/python/edu/resources/tips/images/camel_goto.png deleted file mode 100644 index 28405e5da141..000000000000 Binary files a/python/edu/resources/tips/images/camel_goto.png and /dev/null differ diff --git a/python/edu/resources/tips/images/camel_goto@2x.png b/python/edu/resources/tips/images/camel_goto@2x.png deleted file mode 100644 index 31f2be46dbd6..000000000000 Binary files a/python/edu/resources/tips/images/camel_goto@2x.png and /dev/null differ diff --git a/python/edu/resources/tips/images/camel_goto@2x_dark.png b/python/edu/resources/tips/images/camel_goto@2x_dark.png deleted file mode 100644 index 3ed950fa449b..000000000000 Binary files a/python/edu/resources/tips/images/camel_goto@2x_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/camel_goto_dark.png b/python/edu/resources/tips/images/camel_goto_dark.png deleted file mode 100644 index 0871187f8043..000000000000 Binary files a/python/edu/resources/tips/images/camel_goto_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/changeLookupSorting.png b/python/edu/resources/tips/images/changeLookupSorting.png deleted file mode 100644 index 63155a3eebc7..000000000000 Binary files a/python/edu/resources/tips/images/changeLookupSorting.png and /dev/null differ diff --git a/python/edu/resources/tips/images/changeLookupSorting@2x.png b/python/edu/resources/tips/images/changeLookupSorting@2x.png deleted file mode 100644 index 5fd6b02d25f0..000000000000 Binary files a/python/edu/resources/tips/images/changeLookupSorting@2x.png and /dev/null differ diff --git a/python/edu/resources/tips/images/changeLookupSorting@2x_dark.png b/python/edu/resources/tips/images/changeLookupSorting@2x_dark.png deleted file mode 100644 index e87e55ee1579..000000000000 Binary files a/python/edu/resources/tips/images/changeLookupSorting@2x_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/changeLookupSorting_dark.png b/python/edu/resources/tips/images/changeLookupSorting_dark.png deleted file mode 100644 index 4e7f0df5a4c8..000000000000 Binary files a/python/edu/resources/tips/images/changeLookupSorting_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/checkRegExp.png b/python/edu/resources/tips/images/checkRegExp.png deleted file mode 100644 index 8d74fbe8716b..000000000000 Binary files a/python/edu/resources/tips/images/checkRegExp.png and /dev/null differ diff --git a/python/edu/resources/tips/images/checkRegExp@2x.png b/python/edu/resources/tips/images/checkRegExp@2x.png deleted file mode 100644 index 2a20810d1f9f..000000000000 Binary files a/python/edu/resources/tips/images/checkRegExp@2x.png and /dev/null differ diff --git a/python/edu/resources/tips/images/checkRegExp@2x_dark.png b/python/edu/resources/tips/images/checkRegExp@2x_dark.png deleted file mode 100644 index 26dcf18e1628..000000000000 Binary files a/python/edu/resources/tips/images/checkRegExp@2x_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/checkRegExp_dark.png b/python/edu/resources/tips/images/checkRegExp_dark.png deleted file mode 100644 index 909fc3d43a75..000000000000 Binary files a/python/edu/resources/tips/images/checkRegExp_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/class_name_completion.png b/python/edu/resources/tips/images/class_name_completion.png deleted file mode 100644 index 5c517e0de148..000000000000 Binary files a/python/edu/resources/tips/images/class_name_completion.png and /dev/null differ diff --git a/python/edu/resources/tips/images/class_name_completion@2x.png b/python/edu/resources/tips/images/class_name_completion@2x.png deleted file mode 100644 index 394a97748df3..000000000000 Binary files a/python/edu/resources/tips/images/class_name_completion@2x.png and /dev/null differ diff --git a/python/edu/resources/tips/images/class_name_completion@2x_dark.png b/python/edu/resources/tips/images/class_name_completion@2x_dark.png deleted file mode 100644 index e6bbe34db2b0..000000000000 Binary files a/python/edu/resources/tips/images/class_name_completion@2x_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/class_name_completion_dark.png b/python/edu/resources/tips/images/class_name_completion_dark.png deleted file mode 100644 index 6f8793338c64..000000000000 Binary files a/python/edu/resources/tips/images/class_name_completion_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/close1.png b/python/edu/resources/tips/images/close1.png deleted file mode 100644 index c09b94d4e608..000000000000 Binary files a/python/edu/resources/tips/images/close1.png and /dev/null differ diff --git a/python/edu/resources/tips/images/close_others.png b/python/edu/resources/tips/images/close_others.png deleted file mode 100644 index 9c860503f631..000000000000 Binary files a/python/edu/resources/tips/images/close_others.png and /dev/null differ diff --git a/python/edu/resources/tips/images/close_others@2x.png b/python/edu/resources/tips/images/close_others@2x.png deleted file mode 100644 index 2b1654bdb890..000000000000 Binary files a/python/edu/resources/tips/images/close_others@2x.png and /dev/null differ diff --git a/python/edu/resources/tips/images/close_others@2x_dark.png b/python/edu/resources/tips/images/close_others@2x_dark.png deleted file mode 100644 index f4a8ecebbb59..000000000000 Binary files a/python/edu/resources/tips/images/close_others@2x_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/close_others_dark.png b/python/edu/resources/tips/images/close_others_dark.png deleted file mode 100644 index 903575f4c5de..000000000000 Binary files a/python/edu/resources/tips/images/close_others_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/code_completion.png b/python/edu/resources/tips/images/code_completion.png deleted file mode 100644 index cd51006c5dad..000000000000 Binary files a/python/edu/resources/tips/images/code_completion.png and /dev/null differ diff --git a/python/edu/resources/tips/images/code_completion@2x.png b/python/edu/resources/tips/images/code_completion@2x.png deleted file mode 100644 index 933f30e2939b..000000000000 Binary files a/python/edu/resources/tips/images/code_completion@2x.png and /dev/null differ diff --git a/python/edu/resources/tips/images/code_completion@2x_dark.png b/python/edu/resources/tips/images/code_completion@2x_dark.png deleted file mode 100644 index c1c078ec50cb..000000000000 Binary files a/python/edu/resources/tips/images/code_completion@2x_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/code_completion_dark.png b/python/edu/resources/tips/images/code_completion_dark.png deleted file mode 100644 index e932b9a4d9b8..000000000000 Binary files a/python/edu/resources/tips/images/code_completion_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/code_completion_middle.png b/python/edu/resources/tips/images/code_completion_middle.png deleted file mode 100644 index 7dd4008426c1..000000000000 Binary files a/python/edu/resources/tips/images/code_completion_middle.png and /dev/null differ diff --git a/python/edu/resources/tips/images/code_completion_middle@2x.png b/python/edu/resources/tips/images/code_completion_middle@2x.png deleted file mode 100644 index 4df16b9eb020..000000000000 Binary files a/python/edu/resources/tips/images/code_completion_middle@2x.png and /dev/null differ diff --git a/python/edu/resources/tips/images/code_completion_middle@2x_dark.png b/python/edu/resources/tips/images/code_completion_middle@2x_dark.png deleted file mode 100644 index 2a72b63ef76e..000000000000 Binary files a/python/edu/resources/tips/images/code_completion_middle@2x_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/code_completion_middle_dark.png b/python/edu/resources/tips/images/code_completion_middle_dark.png deleted file mode 100644 index 392db57c3ff2..000000000000 Binary files a/python/edu/resources/tips/images/code_completion_middle_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/code_completion_no_shift.png b/python/edu/resources/tips/images/code_completion_no_shift.png deleted file mode 100644 index 0907cb0d9096..000000000000 Binary files a/python/edu/resources/tips/images/code_completion_no_shift.png and /dev/null differ diff --git a/python/edu/resources/tips/images/code_completion_no_shift@2x.png b/python/edu/resources/tips/images/code_completion_no_shift@2x.png deleted file mode 100644 index 7680b7c895d8..000000000000 Binary files a/python/edu/resources/tips/images/code_completion_no_shift@2x.png and /dev/null differ diff --git a/python/edu/resources/tips/images/code_completion_no_shift@2x_dark.png b/python/edu/resources/tips/images/code_completion_no_shift@2x_dark.png deleted file mode 100644 index e1d5fa996600..000000000000 Binary files a/python/edu/resources/tips/images/code_completion_no_shift@2x_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/code_completion_no_shift_dark.png b/python/edu/resources/tips/images/code_completion_no_shift_dark.png deleted file mode 100644 index 3394c0e1b272..000000000000 Binary files a/python/edu/resources/tips/images/code_completion_no_shift_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/coloredFiles.png b/python/edu/resources/tips/images/coloredFiles.png deleted file mode 100644 index b68571305ded..000000000000 Binary files a/python/edu/resources/tips/images/coloredFiles.png and /dev/null differ diff --git a/python/edu/resources/tips/images/coloredFiles@2x.png b/python/edu/resources/tips/images/coloredFiles@2x.png deleted file mode 100644 index f26012847bdf..000000000000 Binary files a/python/edu/resources/tips/images/coloredFiles@2x.png and /dev/null differ diff --git a/python/edu/resources/tips/images/coloredFiles@2x_dark.png b/python/edu/resources/tips/images/coloredFiles@2x_dark.png deleted file mode 100644 index 3691b6d759e7..000000000000 Binary files a/python/edu/resources/tips/images/coloredFiles@2x_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/coloredFiles_dark.png b/python/edu/resources/tips/images/coloredFiles_dark.png deleted file mode 100644 index 45b3d008288f..000000000000 Binary files a/python/edu/resources/tips/images/coloredFiles_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/columnSelection.png b/python/edu/resources/tips/images/columnSelection.png deleted file mode 100644 index 2e3b62c77199..000000000000 Binary files a/python/edu/resources/tips/images/columnSelection.png and /dev/null differ diff --git a/python/edu/resources/tips/images/columnSelection@2x.png b/python/edu/resources/tips/images/columnSelection@2x.png deleted file mode 100644 index 56fbe0c8bab6..000000000000 Binary files a/python/edu/resources/tips/images/columnSelection@2x.png and /dev/null differ diff --git a/python/edu/resources/tips/images/columnSelection@2x_dark.png b/python/edu/resources/tips/images/columnSelection@2x_dark.png deleted file mode 100644 index 0e8c967186ef..000000000000 Binary files a/python/edu/resources/tips/images/columnSelection@2x_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/columnSelection_dark.png b/python/edu/resources/tips/images/columnSelection_dark.png deleted file mode 100644 index a676d7e74311..000000000000 Binary files a/python/edu/resources/tips/images/columnSelection_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/completion_in_html.png b/python/edu/resources/tips/images/completion_in_html.png deleted file mode 100644 index 9c20bb436faf..000000000000 Binary files a/python/edu/resources/tips/images/completion_in_html.png and /dev/null differ diff --git a/python/edu/resources/tips/images/completion_in_html2.png b/python/edu/resources/tips/images/completion_in_html2.png deleted file mode 100644 index b51fb2c76303..000000000000 Binary files a/python/edu/resources/tips/images/completion_in_html2.png and /dev/null differ diff --git a/python/edu/resources/tips/images/completion_in_html2@2x.png b/python/edu/resources/tips/images/completion_in_html2@2x.png deleted file mode 100644 index 748e6678fb80..000000000000 Binary files a/python/edu/resources/tips/images/completion_in_html2@2x.png and /dev/null differ diff --git a/python/edu/resources/tips/images/completion_in_html2@2x_dark.png b/python/edu/resources/tips/images/completion_in_html2@2x_dark.png deleted file mode 100644 index cb619b32d763..000000000000 Binary files a/python/edu/resources/tips/images/completion_in_html2@2x_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/completion_in_html2_dark.png b/python/edu/resources/tips/images/completion_in_html2_dark.png deleted file mode 100644 index 306428233ccf..000000000000 Binary files a/python/edu/resources/tips/images/completion_in_html2_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/completion_in_html@2x.png b/python/edu/resources/tips/images/completion_in_html@2x.png deleted file mode 100644 index 6a62d727ee18..000000000000 Binary files a/python/edu/resources/tips/images/completion_in_html@2x.png and /dev/null differ diff --git a/python/edu/resources/tips/images/completion_in_html@2x_dark.png b/python/edu/resources/tips/images/completion_in_html@2x_dark.png deleted file mode 100644 index ffbf46694702..000000000000 Binary files a/python/edu/resources/tips/images/completion_in_html@2x_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/completion_in_html_dark.png b/python/edu/resources/tips/images/completion_in_html_dark.png deleted file mode 100644 index f845b3ca343e..000000000000 Binary files a/python/edu/resources/tips/images/completion_in_html_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/cssColor.png b/python/edu/resources/tips/images/cssColor.png deleted file mode 100644 index a6bdd6e6539a..000000000000 Binary files a/python/edu/resources/tips/images/cssColor.png and /dev/null differ diff --git a/python/edu/resources/tips/images/cssColor@2x.png b/python/edu/resources/tips/images/cssColor@2x.png deleted file mode 100644 index e0f272336d87..000000000000 Binary files a/python/edu/resources/tips/images/cssColor@2x.png and /dev/null differ diff --git a/python/edu/resources/tips/images/cssColor@2x_dark.png b/python/edu/resources/tips/images/cssColor@2x_dark.png deleted file mode 100644 index 8ff841ee6518..000000000000 Binary files a/python/edu/resources/tips/images/cssColor@2x_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/cssColor_dark.png b/python/edu/resources/tips/images/cssColor_dark.png deleted file mode 100644 index e37bb9a94361..000000000000 Binary files a/python/edu/resources/tips/images/cssColor_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/ctrl_click.png b/python/edu/resources/tips/images/ctrl_click.png deleted file mode 100644 index fd35a0329fea..000000000000 Binary files a/python/edu/resources/tips/images/ctrl_click.png and /dev/null differ diff --git a/python/edu/resources/tips/images/ctrl_click@2x.png b/python/edu/resources/tips/images/ctrl_click@2x.png deleted file mode 100644 index 7ce99f948362..000000000000 Binary files a/python/edu/resources/tips/images/ctrl_click@2x.png and /dev/null differ diff --git a/python/edu/resources/tips/images/ctrl_click@2x_dark.png b/python/edu/resources/tips/images/ctrl_click@2x_dark.png deleted file mode 100644 index 09f5b045dd53..000000000000 Binary files a/python/edu/resources/tips/images/ctrl_click@2x_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/ctrl_click_dark.png b/python/edu/resources/tips/images/ctrl_click_dark.png deleted file mode 100644 index dc331f7dd952..000000000000 Binary files a/python/edu/resources/tips/images/ctrl_click_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/ctrl_shift_i.png b/python/edu/resources/tips/images/ctrl_shift_i.png deleted file mode 100644 index fbb8786d0a8d..000000000000 Binary files a/python/edu/resources/tips/images/ctrl_shift_i.png and /dev/null differ diff --git a/python/edu/resources/tips/images/ctrl_shift_i@2x.png b/python/edu/resources/tips/images/ctrl_shift_i@2x.png deleted file mode 100644 index 6bb2978dd797..000000000000 Binary files a/python/edu/resources/tips/images/ctrl_shift_i@2x.png and /dev/null differ diff --git a/python/edu/resources/tips/images/ctrl_shift_i@2x_dark.png b/python/edu/resources/tips/images/ctrl_shift_i@2x_dark.png deleted file mode 100644 index 3e29df03f92b..000000000000 Binary files a/python/edu/resources/tips/images/ctrl_shift_i@2x_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/ctrl_shift_i_dark.png b/python/edu/resources/tips/images/ctrl_shift_i_dark.png deleted file mode 100644 index 61201ff0d5da..000000000000 Binary files a/python/edu/resources/tips/images/ctrl_shift_i_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/ctrl_shift_in_lookup.png b/python/edu/resources/tips/images/ctrl_shift_in_lookup.png deleted file mode 100644 index 073b31b4b15c..000000000000 Binary files a/python/edu/resources/tips/images/ctrl_shift_in_lookup.png and /dev/null differ diff --git a/python/edu/resources/tips/images/ctrl_shift_in_lookup@2x.png b/python/edu/resources/tips/images/ctrl_shift_in_lookup@2x.png deleted file mode 100644 index ee49d459fcab..000000000000 Binary files a/python/edu/resources/tips/images/ctrl_shift_in_lookup@2x.png and /dev/null differ diff --git a/python/edu/resources/tips/images/ctrl_shift_in_lookup@2x_dark.png b/python/edu/resources/tips/images/ctrl_shift_in_lookup@2x_dark.png deleted file mode 100644 index 5730d9058dc9..000000000000 Binary files a/python/edu/resources/tips/images/ctrl_shift_in_lookup@2x_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/ctrl_shift_in_lookup_dark.png b/python/edu/resources/tips/images/ctrl_shift_in_lookup_dark.png deleted file mode 100644 index 2ab9f9f93ebe..000000000000 Binary files a/python/edu/resources/tips/images/ctrl_shift_in_lookup_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/default_template_language.png b/python/edu/resources/tips/images/default_template_language.png deleted file mode 100644 index 9e46fb11450f..000000000000 Binary files a/python/edu/resources/tips/images/default_template_language.png and /dev/null differ diff --git a/python/edu/resources/tips/images/default_template_language@2x.png b/python/edu/resources/tips/images/default_template_language@2x.png deleted file mode 100644 index dddd008123e7..000000000000 Binary files a/python/edu/resources/tips/images/default_template_language@2x.png and /dev/null differ diff --git a/python/edu/resources/tips/images/default_template_language@2x_dark.png b/python/edu/resources/tips/images/default_template_language@2x_dark.png deleted file mode 100644 index fa48561f94ec..000000000000 Binary files a/python/edu/resources/tips/images/default_template_language@2x_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/default_template_language_dark.png b/python/edu/resources/tips/images/default_template_language_dark.png deleted file mode 100644 index 486b30703799..000000000000 Binary files a/python/edu/resources/tips/images/default_template_language_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/deployment.png b/python/edu/resources/tips/images/deployment.png deleted file mode 100644 index f104afa208b5..000000000000 Binary files a/python/edu/resources/tips/images/deployment.png and /dev/null differ diff --git a/python/edu/resources/tips/images/deployment@2x.png b/python/edu/resources/tips/images/deployment@2x.png deleted file mode 100644 index af593c25b0e0..000000000000 Binary files a/python/edu/resources/tips/images/deployment@2x.png and /dev/null differ diff --git a/python/edu/resources/tips/images/deployment@2x_dark.png b/python/edu/resources/tips/images/deployment@2x_dark.png deleted file mode 100644 index ec478c090d29..000000000000 Binary files a/python/edu/resources/tips/images/deployment@2x_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/deployment_dark.png b/python/edu/resources/tips/images/deployment_dark.png deleted file mode 100644 index 6ed4686a0f70..000000000000 Binary files a/python/edu/resources/tips/images/deployment_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/dragToOpen.png b/python/edu/resources/tips/images/dragToOpen.png deleted file mode 100644 index 30f564789e09..000000000000 Binary files a/python/edu/resources/tips/images/dragToOpen.png and /dev/null differ diff --git a/python/edu/resources/tips/images/dragToOpen@2x.png b/python/edu/resources/tips/images/dragToOpen@2x.png deleted file mode 100644 index 039e85b28a86..000000000000 Binary files a/python/edu/resources/tips/images/dragToOpen@2x.png and /dev/null differ diff --git a/python/edu/resources/tips/images/dragToOpen@2x_dark.png b/python/edu/resources/tips/images/dragToOpen@2x_dark.png deleted file mode 100644 index 55e3a479e795..000000000000 Binary files a/python/edu/resources/tips/images/dragToOpen@2x_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/dragToOpen_dark.png b/python/edu/resources/tips/images/dragToOpen_dark.png deleted file mode 100644 index 666446e5e761..000000000000 Binary files a/python/edu/resources/tips/images/dragToOpen_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/editregexp.png b/python/edu/resources/tips/images/editregexp.png deleted file mode 100644 index ccb059c5932a..000000000000 Binary files a/python/edu/resources/tips/images/editregexp.png and /dev/null differ diff --git a/python/edu/resources/tips/images/editregexp@2x.png b/python/edu/resources/tips/images/editregexp@2x.png deleted file mode 100644 index 1d80b7ad272e..000000000000 Binary files a/python/edu/resources/tips/images/editregexp@2x.png and /dev/null differ diff --git a/python/edu/resources/tips/images/editregexp@2x_dark.png b/python/edu/resources/tips/images/editregexp@2x_dark.png deleted file mode 100644 index b2fb91911468..000000000000 Binary files a/python/edu/resources/tips/images/editregexp@2x_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/editregexp_dark.png b/python/edu/resources/tips/images/editregexp_dark.png deleted file mode 100644 index 37a44fc8bf72..000000000000 Binary files a/python/edu/resources/tips/images/editregexp_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/emmet.png b/python/edu/resources/tips/images/emmet.png deleted file mode 100644 index 6c616f5376f5..000000000000 Binary files a/python/edu/resources/tips/images/emmet.png and /dev/null differ diff --git a/python/edu/resources/tips/images/emmet@2x.png b/python/edu/resources/tips/images/emmet@2x.png deleted file mode 100644 index 2c5d963fa8b9..000000000000 Binary files a/python/edu/resources/tips/images/emmet@2x.png and /dev/null differ diff --git a/python/edu/resources/tips/images/emmet@2x_dark.png b/python/edu/resources/tips/images/emmet@2x_dark.png deleted file mode 100644 index 37f6952953d8..000000000000 Binary files a/python/edu/resources/tips/images/emmet@2x_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/emmet_dark.png b/python/edu/resources/tips/images/emmet_dark.png deleted file mode 100644 index 671bcd3aec36..000000000000 Binary files a/python/edu/resources/tips/images/emmet_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/enterDirectory.png b/python/edu/resources/tips/images/enterDirectory.png deleted file mode 100644 index f5a882e53e6d..000000000000 Binary files a/python/edu/resources/tips/images/enterDirectory.png and /dev/null differ diff --git a/python/edu/resources/tips/images/enterDirectory@2x.png b/python/edu/resources/tips/images/enterDirectory@2x.png deleted file mode 100644 index bfbadea02f63..000000000000 Binary files a/python/edu/resources/tips/images/enterDirectory@2x.png and /dev/null differ diff --git a/python/edu/resources/tips/images/enterDirectory@2x_dark.png b/python/edu/resources/tips/images/enterDirectory@2x_dark.png deleted file mode 100644 index b4e271b043bd..000000000000 Binary files a/python/edu/resources/tips/images/enterDirectory@2x_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/enterDirectory_dark.png b/python/edu/resources/tips/images/enterDirectory_dark.png deleted file mode 100644 index 1facfef51c3c..000000000000 Binary files a/python/edu/resources/tips/images/enterDirectory_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/extract_variable_1.png b/python/edu/resources/tips/images/extract_variable_1.png deleted file mode 100644 index 60e5d66a66ff..000000000000 Binary files a/python/edu/resources/tips/images/extract_variable_1.png and /dev/null differ diff --git a/python/edu/resources/tips/images/extract_variable_1@2x.png b/python/edu/resources/tips/images/extract_variable_1@2x.png deleted file mode 100644 index b468e5f964af..000000000000 Binary files a/python/edu/resources/tips/images/extract_variable_1@2x.png and /dev/null differ diff --git a/python/edu/resources/tips/images/extract_variable_1@2x_dark.png b/python/edu/resources/tips/images/extract_variable_1@2x_dark.png deleted file mode 100644 index dbc02dbce181..000000000000 Binary files a/python/edu/resources/tips/images/extract_variable_1@2x_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/extract_variable_1_dark.png b/python/edu/resources/tips/images/extract_variable_1_dark.png deleted file mode 100644 index 70647667d289..000000000000 Binary files a/python/edu/resources/tips/images/extract_variable_1_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/extract_variable_2.png b/python/edu/resources/tips/images/extract_variable_2.png deleted file mode 100644 index 4e3b767db005..000000000000 Binary files a/python/edu/resources/tips/images/extract_variable_2.png and /dev/null differ diff --git a/python/edu/resources/tips/images/extract_variable_2@2x.png b/python/edu/resources/tips/images/extract_variable_2@2x.png deleted file mode 100644 index 49cdf5237c0f..000000000000 Binary files a/python/edu/resources/tips/images/extract_variable_2@2x.png and /dev/null differ diff --git a/python/edu/resources/tips/images/extract_variable_2@2x_dark.png b/python/edu/resources/tips/images/extract_variable_2@2x_dark.png deleted file mode 100644 index 120e9a5ace28..000000000000 Binary files a/python/edu/resources/tips/images/extract_variable_2@2x_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/extract_variable_2_dark.png b/python/edu/resources/tips/images/extract_variable_2_dark.png deleted file mode 100644 index 07e67b75cd86..000000000000 Binary files a/python/edu/resources/tips/images/extract_variable_2_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/gotoFileLineNumber.png b/python/edu/resources/tips/images/gotoFileLineNumber.png deleted file mode 100644 index 3d4f72a847cc..000000000000 Binary files a/python/edu/resources/tips/images/gotoFileLineNumber.png and /dev/null differ diff --git a/python/edu/resources/tips/images/gotoFileLineNumber@2x.png b/python/edu/resources/tips/images/gotoFileLineNumber@2x.png deleted file mode 100644 index 5727edb925e0..000000000000 Binary files a/python/edu/resources/tips/images/gotoFileLineNumber@2x.png and /dev/null differ diff --git a/python/edu/resources/tips/images/gotoFileLineNumber@2x_dark.png b/python/edu/resources/tips/images/gotoFileLineNumber@2x_dark.png deleted file mode 100644 index 5bd7da5a480e..000000000000 Binary files a/python/edu/resources/tips/images/gotoFileLineNumber@2x_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/gotoFileLineNumber_dark.png b/python/edu/resources/tips/images/gotoFileLineNumber_dark.png deleted file mode 100644 index 52c9137e1205..000000000000 Binary files a/python/edu/resources/tips/images/gotoFileLineNumber_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/goto_class.png b/python/edu/resources/tips/images/goto_class.png deleted file mode 100644 index 8eb339e8ff8d..000000000000 Binary files a/python/edu/resources/tips/images/goto_class.png and /dev/null differ diff --git a/python/edu/resources/tips/images/goto_class@2x.png b/python/edu/resources/tips/images/goto_class@2x.png deleted file mode 100644 index e7fd228b3e25..000000000000 Binary files a/python/edu/resources/tips/images/goto_class@2x.png and /dev/null differ diff --git a/python/edu/resources/tips/images/goto_class@2x_dark.png b/python/edu/resources/tips/images/goto_class@2x_dark.png deleted file mode 100644 index 5c524ba1e61e..000000000000 Binary files a/python/edu/resources/tips/images/goto_class@2x_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/goto_class_dark.png b/python/edu/resources/tips/images/goto_class_dark.png deleted file mode 100644 index 6a9b461d86f7..000000000000 Binary files a/python/edu/resources/tips/images/goto_class_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/goto_symbol.png b/python/edu/resources/tips/images/goto_symbol.png deleted file mode 100644 index d10fdc33878f..000000000000 Binary files a/python/edu/resources/tips/images/goto_symbol.png and /dev/null differ diff --git a/python/edu/resources/tips/images/goto_symbol@2x.png b/python/edu/resources/tips/images/goto_symbol@2x.png deleted file mode 100644 index 86bae1245f3c..000000000000 Binary files a/python/edu/resources/tips/images/goto_symbol@2x.png and /dev/null differ diff --git a/python/edu/resources/tips/images/goto_symbol@2x_dark.png b/python/edu/resources/tips/images/goto_symbol@2x_dark.png deleted file mode 100644 index 03bf40eeff8b..000000000000 Binary files a/python/edu/resources/tips/images/goto_symbol@2x_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/goto_symbol_dark.png b/python/edu/resources/tips/images/goto_symbol_dark.png deleted file mode 100644 index 201ec6956816..000000000000 Binary files a/python/edu/resources/tips/images/goto_symbol_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/goto_template_icon.png b/python/edu/resources/tips/images/goto_template_icon.png deleted file mode 100644 index 9a6f4f26cf19..000000000000 Binary files a/python/edu/resources/tips/images/goto_template_icon.png and /dev/null differ diff --git a/python/edu/resources/tips/images/goto_template_icon@2x.png b/python/edu/resources/tips/images/goto_template_icon@2x.png deleted file mode 100644 index 28f1ef8593c0..000000000000 Binary files a/python/edu/resources/tips/images/goto_template_icon@2x.png and /dev/null differ diff --git a/python/edu/resources/tips/images/goto_template_icon@2x_dark.png b/python/edu/resources/tips/images/goto_template_icon@2x_dark.png deleted file mode 100644 index b9f13e1db3ce..000000000000 Binary files a/python/edu/resources/tips/images/goto_template_icon@2x_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/goto_template_icon_dark.png b/python/edu/resources/tips/images/goto_template_icon_dark.png deleted file mode 100644 index 5e91cc9e8b48..000000000000 Binary files a/python/edu/resources/tips/images/goto_template_icon_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/goto_view.png b/python/edu/resources/tips/images/goto_view.png deleted file mode 100644 index 66fe57144daa..000000000000 Binary files a/python/edu/resources/tips/images/goto_view.png and /dev/null differ diff --git a/python/edu/resources/tips/images/goto_view@2x.png b/python/edu/resources/tips/images/goto_view@2x.png deleted file mode 100644 index 8d7d74b867f5..000000000000 Binary files a/python/edu/resources/tips/images/goto_view@2x.png and /dev/null differ diff --git a/python/edu/resources/tips/images/goto_view@2x_dark.png b/python/edu/resources/tips/images/goto_view@2x_dark.png deleted file mode 100644 index 11d399b65041..000000000000 Binary files a/python/edu/resources/tips/images/goto_view@2x_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/goto_view_dark.png b/python/edu/resources/tips/images/goto_view_dark.png deleted file mode 100644 index df77bd4b745f..000000000000 Binary files a/python/edu/resources/tips/images/goto_view_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/goto_view_icon.png b/python/edu/resources/tips/images/goto_view_icon.png deleted file mode 100644 index 4f7dab95b0aa..000000000000 Binary files a/python/edu/resources/tips/images/goto_view_icon.png and /dev/null differ diff --git a/python/edu/resources/tips/images/goto_view_icon@2x.png b/python/edu/resources/tips/images/goto_view_icon@2x.png deleted file mode 100644 index 579d967dd721..000000000000 Binary files a/python/edu/resources/tips/images/goto_view_icon@2x.png and /dev/null differ diff --git a/python/edu/resources/tips/images/goto_view_icon@2x_dark.png b/python/edu/resources/tips/images/goto_view_icon@2x_dark.png deleted file mode 100644 index 9a9c9255aeb1..000000000000 Binary files a/python/edu/resources/tips/images/goto_view_icon@2x_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/goto_view_icon_dark.png b/python/edu/resources/tips/images/goto_view_icon_dark.png deleted file mode 100644 index dd6a508261ed..000000000000 Binary files a/python/edu/resources/tips/images/goto_view_icon_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/hierarchy_browser.png b/python/edu/resources/tips/images/hierarchy_browser.png deleted file mode 100644 index 05bbb92f486a..000000000000 Binary files a/python/edu/resources/tips/images/hierarchy_browser.png and /dev/null differ diff --git a/python/edu/resources/tips/images/hierarchy_browser@2x.png b/python/edu/resources/tips/images/hierarchy_browser@2x.png deleted file mode 100644 index a2f4cd29410e..000000000000 Binary files a/python/edu/resources/tips/images/hierarchy_browser@2x.png and /dev/null differ diff --git a/python/edu/resources/tips/images/hierarchy_browser@2x_dark.png b/python/edu/resources/tips/images/hierarchy_browser@2x_dark.png deleted file mode 100644 index 4b120e8f7ff6..000000000000 Binary files a/python/edu/resources/tips/images/hierarchy_browser@2x_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/hierarchy_browser_dark.png b/python/edu/resources/tips/images/hierarchy_browser_dark.png deleted file mode 100644 index d52835cbd23f..000000000000 Binary files a/python/edu/resources/tips/images/hierarchy_browser_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/image_completion.png b/python/edu/resources/tips/images/image_completion.png deleted file mode 100644 index 56a3599aac4e..000000000000 Binary files a/python/edu/resources/tips/images/image_completion.png and /dev/null differ diff --git a/python/edu/resources/tips/images/image_completion@2x.png b/python/edu/resources/tips/images/image_completion@2x.png deleted file mode 100644 index 2d96d83c224a..000000000000 Binary files a/python/edu/resources/tips/images/image_completion@2x.png and /dev/null differ diff --git a/python/edu/resources/tips/images/image_completion@2x_dark.png b/python/edu/resources/tips/images/image_completion@2x_dark.png deleted file mode 100644 index 99f6e96a7775..000000000000 Binary files a/python/edu/resources/tips/images/image_completion@2x_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/image_completion_dark.png b/python/edu/resources/tips/images/image_completion_dark.png deleted file mode 100644 index 3b396c908758..000000000000 Binary files a/python/edu/resources/tips/images/image_completion_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/image_lookup.png b/python/edu/resources/tips/images/image_lookup.png deleted file mode 100644 index cdff22d10bee..000000000000 Binary files a/python/edu/resources/tips/images/image_lookup.png and /dev/null differ diff --git a/python/edu/resources/tips/images/image_lookup@2x.png b/python/edu/resources/tips/images/image_lookup@2x.png deleted file mode 100644 index 05075dd8ed47..000000000000 Binary files a/python/edu/resources/tips/images/image_lookup@2x.png and /dev/null differ diff --git a/python/edu/resources/tips/images/image_lookup@2x_dark.png b/python/edu/resources/tips/images/image_lookup@2x_dark.png deleted file mode 100644 index 6ac2a465fc40..000000000000 Binary files a/python/edu/resources/tips/images/image_lookup@2x_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/image_lookup_dark.png b/python/edu/resources/tips/images/image_lookup_dark.png deleted file mode 100644 index 75af27a9d2e3..000000000000 Binary files a/python/edu/resources/tips/images/image_lookup_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/issueNavigation.png b/python/edu/resources/tips/images/issueNavigation.png deleted file mode 100644 index 1fe942275cae..000000000000 Binary files a/python/edu/resources/tips/images/issueNavigation.png and /dev/null differ diff --git a/python/edu/resources/tips/images/issueNavigation1.png b/python/edu/resources/tips/images/issueNavigation1.png deleted file mode 100644 index bc5c7bb84454..000000000000 Binary files a/python/edu/resources/tips/images/issueNavigation1.png and /dev/null differ diff --git a/python/edu/resources/tips/images/issueNavigation1@2x.png b/python/edu/resources/tips/images/issueNavigation1@2x.png deleted file mode 100644 index 31b4d3f9b114..000000000000 Binary files a/python/edu/resources/tips/images/issueNavigation1@2x.png and /dev/null differ diff --git a/python/edu/resources/tips/images/issueNavigation1@2x_dark.png b/python/edu/resources/tips/images/issueNavigation1@2x_dark.png deleted file mode 100644 index 9a654a24f8f0..000000000000 Binary files a/python/edu/resources/tips/images/issueNavigation1@2x_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/issueNavigation1_dark.png b/python/edu/resources/tips/images/issueNavigation1_dark.png deleted file mode 100644 index fa1cdc666dca..000000000000 Binary files a/python/edu/resources/tips/images/issueNavigation1_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/issueNavigation@2x.png b/python/edu/resources/tips/images/issueNavigation@2x.png deleted file mode 100644 index 835c9dba3bab..000000000000 Binary files a/python/edu/resources/tips/images/issueNavigation@2x.png and /dev/null differ diff --git a/python/edu/resources/tips/images/issueNavigation@2x_dark.png b/python/edu/resources/tips/images/issueNavigation@2x_dark.png deleted file mode 100644 index 47e4270ab066..000000000000 Binary files a/python/edu/resources/tips/images/issueNavigation@2x_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/issueNavigation_dark.png b/python/edu/resources/tips/images/issueNavigation_dark.png deleted file mode 100644 index 4085ed8913df..000000000000 Binary files a/python/edu/resources/tips/images/issueNavigation_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/jumplist.png b/python/edu/resources/tips/images/jumplist.png deleted file mode 100644 index 6a195bcdadb0..000000000000 Binary files a/python/edu/resources/tips/images/jumplist.png and /dev/null differ diff --git a/python/edu/resources/tips/images/jumplist@2x.png b/python/edu/resources/tips/images/jumplist@2x.png deleted file mode 100644 index a3b8d7e182fe..000000000000 Binary files a/python/edu/resources/tips/images/jumplist@2x.png and /dev/null differ diff --git a/python/edu/resources/tips/images/jumplist@2x_dark.png b/python/edu/resources/tips/images/jumplist@2x_dark.png deleted file mode 100644 index b9b279e38813..000000000000 Binary files a/python/edu/resources/tips/images/jumplist@2x_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/jumplist_dark.png b/python/edu/resources/tips/images/jumplist_dark.png deleted file mode 100644 index 3f0e90659c80..000000000000 Binary files a/python/edu/resources/tips/images/jumplist_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/launch_console_in_debugger.png b/python/edu/resources/tips/images/launch_console_in_debugger.png deleted file mode 100644 index 77250807b2ff..000000000000 Binary files a/python/edu/resources/tips/images/launch_console_in_debugger.png and /dev/null differ diff --git a/python/edu/resources/tips/images/launch_console_in_debugger@2x.png b/python/edu/resources/tips/images/launch_console_in_debugger@2x.png deleted file mode 100644 index 468c49c70e05..000000000000 Binary files a/python/edu/resources/tips/images/launch_console_in_debugger@2x.png and /dev/null differ diff --git a/python/edu/resources/tips/images/launch_console_in_debugger@2x_dark.png b/python/edu/resources/tips/images/launch_console_in_debugger@2x_dark.png deleted file mode 100644 index 5f5381c8936d..000000000000 Binary files a/python/edu/resources/tips/images/launch_console_in_debugger@2x_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/launch_console_in_debugger_dark.png b/python/edu/resources/tips/images/launch_console_in_debugger_dark.png deleted file mode 100644 index 9fa62e0b9bb0..000000000000 Binary files a/python/edu/resources/tips/images/launch_console_in_debugger_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/line_separator.png b/python/edu/resources/tips/images/line_separator.png deleted file mode 100644 index 61d20d18f3d7..000000000000 Binary files a/python/edu/resources/tips/images/line_separator.png and /dev/null differ diff --git a/python/edu/resources/tips/images/line_separator@2x.png b/python/edu/resources/tips/images/line_separator@2x.png deleted file mode 100644 index bf67e11e42e8..000000000000 Binary files a/python/edu/resources/tips/images/line_separator@2x.png and /dev/null differ diff --git a/python/edu/resources/tips/images/line_separator@2x_dark.png b/python/edu/resources/tips/images/line_separator@2x_dark.png deleted file mode 100644 index eb6f8ea3111f..000000000000 Binary files a/python/edu/resources/tips/images/line_separator@2x_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/line_separator_dark.png b/python/edu/resources/tips/images/line_separator_dark.png deleted file mode 100644 index 3d8b1a68ee53..000000000000 Binary files a/python/edu/resources/tips/images/line_separator_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/line_separator_folder.png b/python/edu/resources/tips/images/line_separator_folder.png deleted file mode 100644 index 4ae8dc021f66..000000000000 Binary files a/python/edu/resources/tips/images/line_separator_folder.png and /dev/null differ diff --git a/python/edu/resources/tips/images/line_separator_folder@2x.png b/python/edu/resources/tips/images/line_separator_folder@2x.png deleted file mode 100644 index 782b58b8ad0d..000000000000 Binary files a/python/edu/resources/tips/images/line_separator_folder@2x.png and /dev/null differ diff --git a/python/edu/resources/tips/images/line_separator_folder@2x_dark.png b/python/edu/resources/tips/images/line_separator_folder@2x_dark.png deleted file mode 100644 index d8ab14857a9b..000000000000 Binary files a/python/edu/resources/tips/images/line_separator_folder@2x_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/line_separator_folder_dark.png b/python/edu/resources/tips/images/line_separator_folder_dark.png deleted file mode 100644 index c02c201218a2..000000000000 Binary files a/python/edu/resources/tips/images/line_separator_folder_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/live_templates_1.png b/python/edu/resources/tips/images/live_templates_1.png deleted file mode 100644 index b0fc1051a752..000000000000 Binary files a/python/edu/resources/tips/images/live_templates_1.png and /dev/null differ diff --git a/python/edu/resources/tips/images/live_templates_1@2x.png b/python/edu/resources/tips/images/live_templates_1@2x.png deleted file mode 100644 index ec456208d61d..000000000000 Binary files a/python/edu/resources/tips/images/live_templates_1@2x.png and /dev/null differ diff --git a/python/edu/resources/tips/images/live_templates_1@2x_dark.png b/python/edu/resources/tips/images/live_templates_1@2x_dark.png deleted file mode 100644 index c4dd574ab50e..000000000000 Binary files a/python/edu/resources/tips/images/live_templates_1@2x_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/live_templates_1_dark.png b/python/edu/resources/tips/images/live_templates_1_dark.png deleted file mode 100644 index 8e3da85d2b62..000000000000 Binary files a/python/edu/resources/tips/images/live_templates_1_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/live_templates_2.png b/python/edu/resources/tips/images/live_templates_2.png deleted file mode 100644 index 2ed16fb57791..000000000000 Binary files a/python/edu/resources/tips/images/live_templates_2.png and /dev/null differ diff --git a/python/edu/resources/tips/images/live_templates_2@2x.png b/python/edu/resources/tips/images/live_templates_2@2x.png deleted file mode 100644 index 54e6b059cd03..000000000000 Binary files a/python/edu/resources/tips/images/live_templates_2@2x.png and /dev/null differ diff --git a/python/edu/resources/tips/images/live_templates_2@2x_dark.png b/python/edu/resources/tips/images/live_templates_2@2x_dark.png deleted file mode 100644 index 89fbb741fc1a..000000000000 Binary files a/python/edu/resources/tips/images/live_templates_2@2x_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/live_templates_2_dark.png b/python/edu/resources/tips/images/live_templates_2_dark.png deleted file mode 100644 index 3431fdedf244..000000000000 Binary files a/python/edu/resources/tips/images/live_templates_2_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/lower_left.png b/python/edu/resources/tips/images/lower_left.png deleted file mode 100644 index 771913eec97e..000000000000 Binary files a/python/edu/resources/tips/images/lower_left.png and /dev/null differ diff --git a/python/edu/resources/tips/images/lower_left@2x.png b/python/edu/resources/tips/images/lower_left@2x.png deleted file mode 100644 index 2839f4099299..000000000000 Binary files a/python/edu/resources/tips/images/lower_left@2x.png and /dev/null differ diff --git a/python/edu/resources/tips/images/lower_left@2x_dark.png b/python/edu/resources/tips/images/lower_left@2x_dark.png deleted file mode 100644 index 2c2a582a1db7..000000000000 Binary files a/python/edu/resources/tips/images/lower_left@2x_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/lower_left_dark.png b/python/edu/resources/tips/images/lower_left_dark.png deleted file mode 100644 index 19996d76492c..000000000000 Binary files a/python/edu/resources/tips/images/lower_left_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/managepy.png b/python/edu/resources/tips/images/managepy.png deleted file mode 100644 index 6212233b8f49..000000000000 Binary files a/python/edu/resources/tips/images/managepy.png and /dev/null differ diff --git a/python/edu/resources/tips/images/managepy@2x.png b/python/edu/resources/tips/images/managepy@2x.png deleted file mode 100644 index c29d6b71ef79..000000000000 Binary files a/python/edu/resources/tips/images/managepy@2x.png and /dev/null differ diff --git a/python/edu/resources/tips/images/managepy@2x_dark.png b/python/edu/resources/tips/images/managepy@2x_dark.png deleted file mode 100644 index d87785601ced..000000000000 Binary files a/python/edu/resources/tips/images/managepy@2x_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/managepy_dark.png b/python/edu/resources/tips/images/managepy_dark.png deleted file mode 100644 index 9228a0d1c056..000000000000 Binary files a/python/edu/resources/tips/images/managepy_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/method_separator.png b/python/edu/resources/tips/images/method_separator.png deleted file mode 100644 index e458b8246566..000000000000 Binary files a/python/edu/resources/tips/images/method_separator.png and /dev/null differ diff --git a/python/edu/resources/tips/images/method_separator@2x.png b/python/edu/resources/tips/images/method_separator@2x.png deleted file mode 100644 index d7221f809988..000000000000 Binary files a/python/edu/resources/tips/images/method_separator@2x.png and /dev/null differ diff --git a/python/edu/resources/tips/images/method_separator@2x_dark.png b/python/edu/resources/tips/images/method_separator@2x_dark.png deleted file mode 100644 index 9bd4e5d20b7c..000000000000 Binary files a/python/edu/resources/tips/images/method_separator@2x_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/method_separator_dark.png b/python/edu/resources/tips/images/method_separator_dark.png deleted file mode 100644 index eed48d258960..000000000000 Binary files a/python/edu/resources/tips/images/method_separator_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/move_to_changelist.png b/python/edu/resources/tips/images/move_to_changelist.png deleted file mode 100644 index e5e95ff23a65..000000000000 Binary files a/python/edu/resources/tips/images/move_to_changelist.png and /dev/null differ diff --git a/python/edu/resources/tips/images/move_to_changelist@2x.png b/python/edu/resources/tips/images/move_to_changelist@2x.png deleted file mode 100644 index 893f9a9ce930..000000000000 Binary files a/python/edu/resources/tips/images/move_to_changelist@2x.png and /dev/null differ diff --git a/python/edu/resources/tips/images/move_to_changelist@2x_dark.png b/python/edu/resources/tips/images/move_to_changelist@2x_dark.png deleted file mode 100644 index 389c34e906e4..000000000000 Binary files a/python/edu/resources/tips/images/move_to_changelist@2x_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/move_to_changelist_dark.png b/python/edu/resources/tips/images/move_to_changelist_dark.png deleted file mode 100644 index 057bad2eb926..000000000000 Binary files a/python/edu/resources/tips/images/move_to_changelist_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/move_up_down_witharrows_down.png b/python/edu/resources/tips/images/move_up_down_witharrows_down.png deleted file mode 100644 index cb9469f63e18..000000000000 Binary files a/python/edu/resources/tips/images/move_up_down_witharrows_down.png and /dev/null differ diff --git a/python/edu/resources/tips/images/move_up_down_witharrows_down@2x.png b/python/edu/resources/tips/images/move_up_down_witharrows_down@2x.png deleted file mode 100644 index 1d689d73d905..000000000000 Binary files a/python/edu/resources/tips/images/move_up_down_witharrows_down@2x.png and /dev/null differ diff --git a/python/edu/resources/tips/images/move_up_down_witharrows_down@2x_dark.png b/python/edu/resources/tips/images/move_up_down_witharrows_down@2x_dark.png deleted file mode 100644 index bb935b007863..000000000000 Binary files a/python/edu/resources/tips/images/move_up_down_witharrows_down@2x_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/move_up_down_witharrows_down_dark.png b/python/edu/resources/tips/images/move_up_down_witharrows_down_dark.png deleted file mode 100644 index 2346d8cfe482..000000000000 Binary files a/python/edu/resources/tips/images/move_up_down_witharrows_down_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/move_up_down_witharrows_initial.png b/python/edu/resources/tips/images/move_up_down_witharrows_initial.png deleted file mode 100644 index 82fd7469e1d2..000000000000 Binary files a/python/edu/resources/tips/images/move_up_down_witharrows_initial.png and /dev/null differ diff --git a/python/edu/resources/tips/images/move_up_down_witharrows_initial@2x.png b/python/edu/resources/tips/images/move_up_down_witharrows_initial@2x.png deleted file mode 100644 index bd1792c520a4..000000000000 Binary files a/python/edu/resources/tips/images/move_up_down_witharrows_initial@2x.png and /dev/null differ diff --git a/python/edu/resources/tips/images/move_up_down_witharrows_initial@2x_dark.png b/python/edu/resources/tips/images/move_up_down_witharrows_initial@2x_dark.png deleted file mode 100644 index a476ac334c70..000000000000 Binary files a/python/edu/resources/tips/images/move_up_down_witharrows_initial@2x_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/move_up_down_witharrows_initial_dark.png b/python/edu/resources/tips/images/move_up_down_witharrows_initial_dark.png deleted file mode 100644 index 8b84ae8430a7..000000000000 Binary files a/python/edu/resources/tips/images/move_up_down_witharrows_initial_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/move_up_down_witharrows_up.png b/python/edu/resources/tips/images/move_up_down_witharrows_up.png deleted file mode 100644 index e19c67b445ea..000000000000 Binary files a/python/edu/resources/tips/images/move_up_down_witharrows_up.png and /dev/null differ diff --git a/python/edu/resources/tips/images/move_up_down_witharrows_up@2x.png b/python/edu/resources/tips/images/move_up_down_witharrows_up@2x.png deleted file mode 100644 index d0008e29dcb2..000000000000 Binary files a/python/edu/resources/tips/images/move_up_down_witharrows_up@2x.png and /dev/null differ diff --git a/python/edu/resources/tips/images/move_up_down_witharrows_up@2x_dark.png b/python/edu/resources/tips/images/move_up_down_witharrows_up@2x_dark.png deleted file mode 100644 index 124866ed802c..000000000000 Binary files a/python/edu/resources/tips/images/move_up_down_witharrows_up@2x_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/move_up_down_witharrows_up_dark.png b/python/edu/resources/tips/images/move_up_down_witharrows_up_dark.png deleted file mode 100644 index 7251cb33ac08..000000000000 Binary files a/python/edu/resources/tips/images/move_up_down_witharrows_up_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/multicursor1@2x.png b/python/edu/resources/tips/images/multicursor1@2x.png deleted file mode 100755 index 29208468a665..000000000000 Binary files a/python/edu/resources/tips/images/multicursor1@2x.png and /dev/null differ diff --git a/python/edu/resources/tips/images/multicursor1@2x_dark.png b/python/edu/resources/tips/images/multicursor1@2x_dark.png deleted file mode 100755 index 04dbef34c971..000000000000 Binary files a/python/edu/resources/tips/images/multicursor1@2x_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/multicursor@2x.png b/python/edu/resources/tips/images/multicursor@2x.png deleted file mode 100755 index d771d0a9aa0e..000000000000 Binary files a/python/edu/resources/tips/images/multicursor@2x.png and /dev/null differ diff --git a/python/edu/resources/tips/images/multicursor@2x_dark.png b/python/edu/resources/tips/images/multicursor@2x_dark.png deleted file mode 100755 index dd93320f7b39..000000000000 Binary files a/python/edu/resources/tips/images/multicursor@2x_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/navigateToFilePath.png b/python/edu/resources/tips/images/navigateToFilePath.png deleted file mode 100644 index ae4b78955a49..000000000000 Binary files a/python/edu/resources/tips/images/navigateToFilePath.png and /dev/null differ diff --git a/python/edu/resources/tips/images/navigateToFilePath@2x.png b/python/edu/resources/tips/images/navigateToFilePath@2x.png deleted file mode 100644 index 077f1831b68b..000000000000 Binary files a/python/edu/resources/tips/images/navigateToFilePath@2x.png and /dev/null differ diff --git a/python/edu/resources/tips/images/navigateToFilePath@2x_dark.png b/python/edu/resources/tips/images/navigateToFilePath@2x_dark.png deleted file mode 100644 index a73df98e5da1..000000000000 Binary files a/python/edu/resources/tips/images/navigateToFilePath@2x_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/navigateToFilePath_dark.png b/python/edu/resources/tips/images/navigateToFilePath_dark.png deleted file mode 100644 index 756020ec39ab..000000000000 Binary files a/python/edu/resources/tips/images/navigateToFilePath_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/navigationbar.png b/python/edu/resources/tips/images/navigationbar.png deleted file mode 100644 index ba8c14720723..000000000000 Binary files a/python/edu/resources/tips/images/navigationbar.png and /dev/null differ diff --git a/python/edu/resources/tips/images/navigationbar@2x.png b/python/edu/resources/tips/images/navigationbar@2x.png deleted file mode 100644 index fc2bcd07f705..000000000000 Binary files a/python/edu/resources/tips/images/navigationbar@2x.png and /dev/null differ diff --git a/python/edu/resources/tips/images/navigationbar@2x_dark.png b/python/edu/resources/tips/images/navigationbar@2x_dark.png deleted file mode 100644 index 5b69d321540a..000000000000 Binary files a/python/edu/resources/tips/images/navigationbar@2x_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/navigationbar_dark.png b/python/edu/resources/tips/images/navigationbar_dark.png deleted file mode 100644 index 03c5f6fe2522..000000000000 Binary files a/python/edu/resources/tips/images/navigationbar_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/override_methods.png b/python/edu/resources/tips/images/override_methods.png deleted file mode 100644 index 2234f7fa98b6..000000000000 Binary files a/python/edu/resources/tips/images/override_methods.png and /dev/null differ diff --git a/python/edu/resources/tips/images/override_methods@2x.png b/python/edu/resources/tips/images/override_methods@2x.png deleted file mode 100644 index 94a83071e0f9..000000000000 Binary files a/python/edu/resources/tips/images/override_methods@2x.png and /dev/null differ diff --git a/python/edu/resources/tips/images/override_methods@2x_dark.png b/python/edu/resources/tips/images/override_methods@2x_dark.png deleted file mode 100644 index 789ac6ce95ca..000000000000 Binary files a/python/edu/resources/tips/images/override_methods@2x_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/override_methods_dark.png b/python/edu/resources/tips/images/override_methods_dark.png deleted file mode 100644 index 3d32dc7b142a..000000000000 Binary files a/python/edu/resources/tips/images/override_methods_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/param_info.png b/python/edu/resources/tips/images/param_info.png deleted file mode 100644 index b0b39e4998c1..000000000000 Binary files a/python/edu/resources/tips/images/param_info.png and /dev/null differ diff --git a/python/edu/resources/tips/images/param_info@2x.png b/python/edu/resources/tips/images/param_info@2x.png deleted file mode 100644 index 6e63f83dba6a..000000000000 Binary files a/python/edu/resources/tips/images/param_info@2x.png and /dev/null differ diff --git a/python/edu/resources/tips/images/param_info@2x_dark.png b/python/edu/resources/tips/images/param_info@2x_dark.png deleted file mode 100644 index b65141148638..000000000000 Binary files a/python/edu/resources/tips/images/param_info@2x_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/param_info_dark.png b/python/edu/resources/tips/images/param_info_dark.png deleted file mode 100644 index dcf76512342e..000000000000 Binary files a/python/edu/resources/tips/images/param_info_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/pyColoredFiles.png b/python/edu/resources/tips/images/pyColoredFiles.png deleted file mode 100644 index b2c7ef9ff282..000000000000 Binary files a/python/edu/resources/tips/images/pyColoredFiles.png and /dev/null differ diff --git a/python/edu/resources/tips/images/pyColoredFiles@2x.png b/python/edu/resources/tips/images/pyColoredFiles@2x.png deleted file mode 100644 index 3274e2ffaa8c..000000000000 Binary files a/python/edu/resources/tips/images/pyColoredFiles@2x.png and /dev/null differ diff --git a/python/edu/resources/tips/images/pyColoredFiles@2x_dark.png b/python/edu/resources/tips/images/pyColoredFiles@2x_dark.png deleted file mode 100644 index 69e38f9ecac3..000000000000 Binary files a/python/edu/resources/tips/images/pyColoredFiles@2x_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/pyColoredFiles_dark.png b/python/edu/resources/tips/images/pyColoredFiles_dark.png deleted file mode 100644 index 61e0cc1bcf70..000000000000 Binary files a/python/edu/resources/tips/images/pyColoredFiles_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/pyconsole.png b/python/edu/resources/tips/images/pyconsole.png deleted file mode 100644 index b319f10d9386..000000000000 Binary files a/python/edu/resources/tips/images/pyconsole.png and /dev/null differ diff --git a/python/edu/resources/tips/images/pyconsole@2x.png b/python/edu/resources/tips/images/pyconsole@2x.png deleted file mode 100644 index caf7b5c979a7..000000000000 Binary files a/python/edu/resources/tips/images/pyconsole@2x.png and /dev/null differ diff --git a/python/edu/resources/tips/images/pyconsole@2x_dark.png b/python/edu/resources/tips/images/pyconsole@2x_dark.png deleted file mode 100644 index b05cee2f17a0..000000000000 Binary files a/python/edu/resources/tips/images/pyconsole@2x_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/pyconsole_dark.png b/python/edu/resources/tips/images/pyconsole_dark.png deleted file mode 100644 index 8748fe1e59f5..000000000000 Binary files a/python/edu/resources/tips/images/pyconsole_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/qdoc_live_template@2x-3.png b/python/edu/resources/tips/images/qdoc_live_template@2x-3.png deleted file mode 100755 index ae79e7e1bb6d..000000000000 Binary files a/python/edu/resources/tips/images/qdoc_live_template@2x-3.png and /dev/null differ diff --git a/python/edu/resources/tips/images/qdoc_live_template@2x_dark-3.png b/python/edu/resources/tips/images/qdoc_live_template@2x_dark-3.png deleted file mode 100755 index 6b077c641d17..000000000000 Binary files a/python/edu/resources/tips/images/qdoc_live_template@2x_dark-3.png and /dev/null differ diff --git a/python/edu/resources/tips/images/quick_fix_options.png b/python/edu/resources/tips/images/quick_fix_options.png deleted file mode 100644 index 418a2524380a..000000000000 Binary files a/python/edu/resources/tips/images/quick_fix_options.png and /dev/null differ diff --git a/python/edu/resources/tips/images/quick_fix_options@2x.png b/python/edu/resources/tips/images/quick_fix_options@2x.png deleted file mode 100644 index 21e63469db24..000000000000 Binary files a/python/edu/resources/tips/images/quick_fix_options@2x.png and /dev/null differ diff --git a/python/edu/resources/tips/images/quick_fix_options@2x_dark.png b/python/edu/resources/tips/images/quick_fix_options@2x_dark.png deleted file mode 100644 index aaf91a613d20..000000000000 Binary files a/python/edu/resources/tips/images/quick_fix_options@2x_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/quick_fix_options_dark.png b/python/edu/resources/tips/images/quick_fix_options_dark.png deleted file mode 100644 index 8a80f476646e..000000000000 Binary files a/python/edu/resources/tips/images/quick_fix_options_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/quick_javadoc.png b/python/edu/resources/tips/images/quick_javadoc.png deleted file mode 100644 index b19982d2f483..000000000000 Binary files a/python/edu/resources/tips/images/quick_javadoc.png and /dev/null differ diff --git a/python/edu/resources/tips/images/quick_javadoc@2x.png b/python/edu/resources/tips/images/quick_javadoc@2x.png deleted file mode 100644 index abbfebcc3056..000000000000 Binary files a/python/edu/resources/tips/images/quick_javadoc@2x.png and /dev/null differ diff --git a/python/edu/resources/tips/images/quick_javadoc@2x_dark.png b/python/edu/resources/tips/images/quick_javadoc@2x_dark.png deleted file mode 100644 index 8f971f517d76..000000000000 Binary files a/python/edu/resources/tips/images/quick_javadoc@2x_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/quick_javadoc_dark.png b/python/edu/resources/tips/images/quick_javadoc_dark.png deleted file mode 100644 index 7f482d4ec962..000000000000 Binary files a/python/edu/resources/tips/images/quick_javadoc_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/quick_javadoc_in_lookups.png b/python/edu/resources/tips/images/quick_javadoc_in_lookups.png deleted file mode 100644 index f346e103dd45..000000000000 Binary files a/python/edu/resources/tips/images/quick_javadoc_in_lookups.png and /dev/null differ diff --git a/python/edu/resources/tips/images/quick_javadoc_in_lookups@2x.png b/python/edu/resources/tips/images/quick_javadoc_in_lookups@2x.png deleted file mode 100644 index d782d4a39982..000000000000 Binary files a/python/edu/resources/tips/images/quick_javadoc_in_lookups@2x.png and /dev/null differ diff --git a/python/edu/resources/tips/images/quick_javadoc_in_lookups@2x_dark.png b/python/edu/resources/tips/images/quick_javadoc_in_lookups@2x_dark.png deleted file mode 100644 index 5af062aa49f4..000000000000 Binary files a/python/edu/resources/tips/images/quick_javadoc_in_lookups@2x_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/quick_javadoc_in_lookups_dark.png b/python/edu/resources/tips/images/quick_javadoc_in_lookups_dark.png deleted file mode 100644 index e1e954f4f153..000000000000 Binary files a/python/edu/resources/tips/images/quick_javadoc_in_lookups_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/quick_switch_scheme.png b/python/edu/resources/tips/images/quick_switch_scheme.png deleted file mode 100644 index b1f99b5c42cd..000000000000 Binary files a/python/edu/resources/tips/images/quick_switch_scheme.png and /dev/null differ diff --git a/python/edu/resources/tips/images/quick_switch_scheme@2x.png b/python/edu/resources/tips/images/quick_switch_scheme@2x.png deleted file mode 100644 index 7a9a3435eb45..000000000000 Binary files a/python/edu/resources/tips/images/quick_switch_scheme@2x.png and /dev/null differ diff --git a/python/edu/resources/tips/images/quick_switch_scheme@2x_dark.png b/python/edu/resources/tips/images/quick_switch_scheme@2x_dark.png deleted file mode 100644 index ee68d67abe07..000000000000 Binary files a/python/edu/resources/tips/images/quick_switch_scheme@2x_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/quick_switch_scheme_dark.png b/python/edu/resources/tips/images/quick_switch_scheme_dark.png deleted file mode 100644 index 0ab7af56669a..000000000000 Binary files a/python/edu/resources/tips/images/quick_switch_scheme_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/recentSearch.png b/python/edu/resources/tips/images/recentSearch.png deleted file mode 100644 index 18949394e842..000000000000 Binary files a/python/edu/resources/tips/images/recentSearch.png and /dev/null differ diff --git a/python/edu/resources/tips/images/recentSearch@2x.png b/python/edu/resources/tips/images/recentSearch@2x.png deleted file mode 100644 index b39244becd4c..000000000000 Binary files a/python/edu/resources/tips/images/recentSearch@2x.png and /dev/null differ diff --git a/python/edu/resources/tips/images/recentSearch@2x_dark.png b/python/edu/resources/tips/images/recentSearch@2x_dark.png deleted file mode 100644 index 15e255f1aeaf..000000000000 Binary files a/python/edu/resources/tips/images/recentSearch@2x_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/recentSearch_dark.png b/python/edu/resources/tips/images/recentSearch_dark.png deleted file mode 100644 index 2c2acc561757..000000000000 Binary files a/python/edu/resources/tips/images/recentSearch_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/recent_changes.png b/python/edu/resources/tips/images/recent_changes.png deleted file mode 100644 index 27470ca76575..000000000000 Binary files a/python/edu/resources/tips/images/recent_changes.png and /dev/null differ diff --git a/python/edu/resources/tips/images/recent_changes@2x.png b/python/edu/resources/tips/images/recent_changes@2x.png deleted file mode 100644 index 60d873c6de79..000000000000 Binary files a/python/edu/resources/tips/images/recent_changes@2x.png and /dev/null differ diff --git a/python/edu/resources/tips/images/recent_changes@2x_dark.png b/python/edu/resources/tips/images/recent_changes@2x_dark.png deleted file mode 100644 index bf0463e9382c..000000000000 Binary files a/python/edu/resources/tips/images/recent_changes@2x_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/recent_changes_dark.png b/python/edu/resources/tips/images/recent_changes_dark.png deleted file mode 100644 index a3abbdecb4f2..000000000000 Binary files a/python/edu/resources/tips/images/recent_changes_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/recent_files_1.png b/python/edu/resources/tips/images/recent_files_1.png deleted file mode 100644 index c10b423146b6..000000000000 Binary files a/python/edu/resources/tips/images/recent_files_1.png and /dev/null differ diff --git a/python/edu/resources/tips/images/recent_files_1@2x.png b/python/edu/resources/tips/images/recent_files_1@2x.png deleted file mode 100644 index 634f836858b3..000000000000 Binary files a/python/edu/resources/tips/images/recent_files_1@2x.png and /dev/null differ diff --git a/python/edu/resources/tips/images/recent_files_1@2x_dark.png b/python/edu/resources/tips/images/recent_files_1@2x_dark.png deleted file mode 100644 index 59ae46a98d76..000000000000 Binary files a/python/edu/resources/tips/images/recent_files_1@2x_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/recent_files_1_dark.png b/python/edu/resources/tips/images/recent_files_1_dark.png deleted file mode 100644 index 125776961430..000000000000 Binary files a/python/edu/resources/tips/images/recent_files_1_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/recent_files_2.png b/python/edu/resources/tips/images/recent_files_2.png deleted file mode 100644 index 05698c860336..000000000000 Binary files a/python/edu/resources/tips/images/recent_files_2.png and /dev/null differ diff --git a/python/edu/resources/tips/images/recent_files_2@2x.png b/python/edu/resources/tips/images/recent_files_2@2x.png deleted file mode 100644 index 7df083acf60f..000000000000 Binary files a/python/edu/resources/tips/images/recent_files_2@2x.png and /dev/null differ diff --git a/python/edu/resources/tips/images/recent_files_2@2x_dark.png b/python/edu/resources/tips/images/recent_files_2@2x_dark.png deleted file mode 100644 index f66da1b31829..000000000000 Binary files a/python/edu/resources/tips/images/recent_files_2@2x_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/recent_files_2_dark.png b/python/edu/resources/tips/images/recent_files_2_dark.png deleted file mode 100644 index 99cdf79f99b6..000000000000 Binary files a/python/edu/resources/tips/images/recent_files_2_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/refactor_this.png b/python/edu/resources/tips/images/refactor_this.png deleted file mode 100644 index 1a5fc4982ccb..000000000000 Binary files a/python/edu/resources/tips/images/refactor_this.png and /dev/null differ diff --git a/python/edu/resources/tips/images/refactor_this@2x.png b/python/edu/resources/tips/images/refactor_this@2x.png deleted file mode 100644 index 698889b05840..000000000000 Binary files a/python/edu/resources/tips/images/refactor_this@2x.png and /dev/null differ diff --git a/python/edu/resources/tips/images/refactor_this@2x_dark.png b/python/edu/resources/tips/images/refactor_this@2x_dark.png deleted file mode 100644 index 78c122a1da71..000000000000 Binary files a/python/edu/resources/tips/images/refactor_this@2x_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/refactor_this_dark.png b/python/edu/resources/tips/images/refactor_this_dark.png deleted file mode 100644 index a832560c85ae..000000000000 Binary files a/python/edu/resources/tips/images/refactor_this_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/rename.png b/python/edu/resources/tips/images/rename.png deleted file mode 100644 index 35d533501f73..000000000000 Binary files a/python/edu/resources/tips/images/rename.png and /dev/null differ diff --git a/python/edu/resources/tips/images/rename@2x.png b/python/edu/resources/tips/images/rename@2x.png deleted file mode 100644 index 26b49a49eb82..000000000000 Binary files a/python/edu/resources/tips/images/rename@2x.png and /dev/null differ diff --git a/python/edu/resources/tips/images/rename@2x_dark.png b/python/edu/resources/tips/images/rename@2x_dark.png deleted file mode 100644 index 7bda59490aa9..000000000000 Binary files a/python/edu/resources/tips/images/rename@2x_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/rename_dark.png b/python/edu/resources/tips/images/rename_dark.png deleted file mode 100644 index c5f96c32554d..000000000000 Binary files a/python/edu/resources/tips/images/rename_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/reopen.png b/python/edu/resources/tips/images/reopen.png deleted file mode 100644 index 3cdb2df84786..000000000000 Binary files a/python/edu/resources/tips/images/reopen.png and /dev/null differ diff --git a/python/edu/resources/tips/images/reopen@2x.png b/python/edu/resources/tips/images/reopen@2x.png deleted file mode 100644 index a0b61f58ea37..000000000000 Binary files a/python/edu/resources/tips/images/reopen@2x.png and /dev/null differ diff --git a/python/edu/resources/tips/images/reopen@2x_dark.png b/python/edu/resources/tips/images/reopen@2x_dark.png deleted file mode 100644 index ed33d6e49c84..000000000000 Binary files a/python/edu/resources/tips/images/reopen@2x_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/reopen_dark.png b/python/edu/resources/tips/images/reopen_dark.png deleted file mode 100644 index af7ba67c534c..000000000000 Binary files a/python/edu/resources/tips/images/reopen_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/searchEverywhere.png b/python/edu/resources/tips/images/searchEverywhere.png deleted file mode 100644 index 639f100b5192..000000000000 Binary files a/python/edu/resources/tips/images/searchEverywhere.png and /dev/null differ diff --git a/python/edu/resources/tips/images/searchEverywhere@2x.png b/python/edu/resources/tips/images/searchEverywhere@2x.png deleted file mode 100644 index 9ef380cc5b45..000000000000 Binary files a/python/edu/resources/tips/images/searchEverywhere@2x.png and /dev/null differ diff --git a/python/edu/resources/tips/images/searchEverywhere@2x_dark.png b/python/edu/resources/tips/images/searchEverywhere@2x_dark.png deleted file mode 100644 index 2f6fa5607082..000000000000 Binary files a/python/edu/resources/tips/images/searchEverywhere@2x_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/searchEverywhere_dark.png b/python/edu/resources/tips/images/searchEverywhere_dark.png deleted file mode 100644 index c71501aa9e67..000000000000 Binary files a/python/edu/resources/tips/images/searchEverywhere_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/searchEverywhere_lense.png b/python/edu/resources/tips/images/searchEverywhere_lense.png deleted file mode 100644 index d855d22809ba..000000000000 Binary files a/python/edu/resources/tips/images/searchEverywhere_lense.png and /dev/null differ diff --git a/python/edu/resources/tips/images/searchEverywhere_lense@2x.png b/python/edu/resources/tips/images/searchEverywhere_lense@2x.png deleted file mode 100644 index 5255eca01461..000000000000 Binary files a/python/edu/resources/tips/images/searchEverywhere_lense@2x.png and /dev/null differ diff --git a/python/edu/resources/tips/images/searchEverywhere_lense@2x_dark.png b/python/edu/resources/tips/images/searchEverywhere_lense@2x_dark.png deleted file mode 100644 index 680c00233e8a..000000000000 Binary files a/python/edu/resources/tips/images/searchEverywhere_lense@2x_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/searchEverywhere_lense_dark.png b/python/edu/resources/tips/images/searchEverywhere_lense_dark.png deleted file mode 100644 index 1157f40e4f8a..000000000000 Binary files a/python/edu/resources/tips/images/searchEverywhere_lense_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/search_settings.png b/python/edu/resources/tips/images/search_settings.png deleted file mode 100644 index 31796e24f576..000000000000 Binary files a/python/edu/resources/tips/images/search_settings.png and /dev/null differ diff --git a/python/edu/resources/tips/images/search_settings@2x.png b/python/edu/resources/tips/images/search_settings@2x.png deleted file mode 100644 index 14212d48cd5f..000000000000 Binary files a/python/edu/resources/tips/images/search_settings@2x.png and /dev/null differ diff --git a/python/edu/resources/tips/images/search_settings@2x_dark.png b/python/edu/resources/tips/images/search_settings@2x_dark.png deleted file mode 100644 index 10a33a2676dd..000000000000 Binary files a/python/edu/resources/tips/images/search_settings@2x_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/search_settings_dark.png b/python/edu/resources/tips/images/search_settings_dark.png deleted file mode 100644 index 32a05bc600c9..000000000000 Binary files a/python/edu/resources/tips/images/search_settings_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/select_in.png b/python/edu/resources/tips/images/select_in.png deleted file mode 100644 index 782ccc2629c1..000000000000 Binary files a/python/edu/resources/tips/images/select_in.png and /dev/null differ diff --git a/python/edu/resources/tips/images/select_in@2x.png b/python/edu/resources/tips/images/select_in@2x.png deleted file mode 100644 index 68aec61d7934..000000000000 Binary files a/python/edu/resources/tips/images/select_in@2x.png and /dev/null differ diff --git a/python/edu/resources/tips/images/select_in@2x_dark.png b/python/edu/resources/tips/images/select_in@2x_dark.png deleted file mode 100644 index 993408d31af3..000000000000 Binary files a/python/edu/resources/tips/images/select_in@2x_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/select_in_dark.png b/python/edu/resources/tips/images/select_in_dark.png deleted file mode 100644 index 8ead24652cc9..000000000000 Binary files a/python/edu/resources/tips/images/select_in_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/select_tasks.png b/python/edu/resources/tips/images/select_tasks.png deleted file mode 100644 index 1c9aa8993ff3..000000000000 Binary files a/python/edu/resources/tips/images/select_tasks.png and /dev/null differ diff --git a/python/edu/resources/tips/images/select_tasks@2x.png b/python/edu/resources/tips/images/select_tasks@2x.png deleted file mode 100644 index 58a42c001b1d..000000000000 Binary files a/python/edu/resources/tips/images/select_tasks@2x.png and /dev/null differ diff --git a/python/edu/resources/tips/images/select_tasks@2x_dark.png b/python/edu/resources/tips/images/select_tasks@2x_dark.png deleted file mode 100644 index 59272a32576a..000000000000 Binary files a/python/edu/resources/tips/images/select_tasks@2x_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/select_tasks_dark.png b/python/edu/resources/tips/images/select_tasks_dark.png deleted file mode 100644 index 7d001529e458..000000000000 Binary files a/python/edu/resources/tips/images/select_tasks_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/showToolWindows.png b/python/edu/resources/tips/images/showToolWindows.png deleted file mode 100644 index 2a925b29c213..000000000000 Binary files a/python/edu/resources/tips/images/showToolWindows.png and /dev/null differ diff --git a/python/edu/resources/tips/images/showToolWindows@2x.png b/python/edu/resources/tips/images/showToolWindows@2x.png deleted file mode 100644 index db1071b866cd..000000000000 Binary files a/python/edu/resources/tips/images/showToolWindows@2x.png and /dev/null differ diff --git a/python/edu/resources/tips/images/showToolWindows@2x_dark.png b/python/edu/resources/tips/images/showToolWindows@2x_dark.png deleted file mode 100644 index 06c387852f1c..000000000000 Binary files a/python/edu/resources/tips/images/showToolWindows@2x_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/showToolWindows_dark.png b/python/edu/resources/tips/images/showToolWindows_dark.png deleted file mode 100644 index 471d3b721af3..000000000000 Binary files a/python/edu/resources/tips/images/showToolWindows_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/showUsages.png b/python/edu/resources/tips/images/showUsages.png deleted file mode 100644 index 196992b8c639..000000000000 Binary files a/python/edu/resources/tips/images/showUsages.png and /dev/null differ diff --git a/python/edu/resources/tips/images/showUsages@2x.png b/python/edu/resources/tips/images/showUsages@2x.png deleted file mode 100644 index 694a59cb2339..000000000000 Binary files a/python/edu/resources/tips/images/showUsages@2x.png and /dev/null differ diff --git a/python/edu/resources/tips/images/showUsages@2x_dark.png b/python/edu/resources/tips/images/showUsages@2x_dark.png deleted file mode 100644 index b0abb99e23be..000000000000 Binary files a/python/edu/resources/tips/images/showUsages@2x_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/showUsages_dark.png b/python/edu/resources/tips/images/showUsages_dark.png deleted file mode 100644 index b6ebb3e27c8a..000000000000 Binary files a/python/edu/resources/tips/images/showUsages_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/show_applied_styles.png b/python/edu/resources/tips/images/show_applied_styles.png deleted file mode 100644 index 1f6988b933a8..000000000000 Binary files a/python/edu/resources/tips/images/show_applied_styles.png and /dev/null differ diff --git a/python/edu/resources/tips/images/show_applied_styles@2x.png b/python/edu/resources/tips/images/show_applied_styles@2x.png deleted file mode 100644 index e0720cb54e71..000000000000 Binary files a/python/edu/resources/tips/images/show_applied_styles@2x.png and /dev/null differ diff --git a/python/edu/resources/tips/images/show_applied_styles@2x_dark.png b/python/edu/resources/tips/images/show_applied_styles@2x_dark.png deleted file mode 100644 index 8fa79d6e0ba0..000000000000 Binary files a/python/edu/resources/tips/images/show_applied_styles@2x_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/show_applied_styles_dark.png b/python/edu/resources/tips/images/show_applied_styles_dark.png deleted file mode 100644 index f403cd166cb2..000000000000 Binary files a/python/edu/resources/tips/images/show_applied_styles_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/show_hide_tool_window_bars.png b/python/edu/resources/tips/images/show_hide_tool_window_bars.png deleted file mode 100644 index bf752ceb6d93..000000000000 Binary files a/python/edu/resources/tips/images/show_hide_tool_window_bars.png and /dev/null differ diff --git a/python/edu/resources/tips/images/show_hide_tool_window_bars@2x.png b/python/edu/resources/tips/images/show_hide_tool_window_bars@2x.png deleted file mode 100644 index 994df8775783..000000000000 Binary files a/python/edu/resources/tips/images/show_hide_tool_window_bars@2x.png and /dev/null differ diff --git a/python/edu/resources/tips/images/show_hide_tool_window_bars@2x_dark.png b/python/edu/resources/tips/images/show_hide_tool_window_bars@2x_dark.png deleted file mode 100644 index 822975130fcc..000000000000 Binary files a/python/edu/resources/tips/images/show_hide_tool_window_bars@2x_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/show_hide_tool_window_bars_dark.png b/python/edu/resources/tips/images/show_hide_tool_window_bars_dark.png deleted file mode 100644 index 083029cb687e..000000000000 Binary files a/python/edu/resources/tips/images/show_hide_tool_window_bars_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/sidebyside.png b/python/edu/resources/tips/images/sidebyside.png deleted file mode 100644 index 8d004bc81c3a..000000000000 Binary files a/python/edu/resources/tips/images/sidebyside.png and /dev/null differ diff --git a/python/edu/resources/tips/images/sidebyside@2x.png b/python/edu/resources/tips/images/sidebyside@2x.png deleted file mode 100644 index 9cf631a6b302..000000000000 Binary files a/python/edu/resources/tips/images/sidebyside@2x.png and /dev/null differ diff --git a/python/edu/resources/tips/images/sidebyside@2x_dark.png b/python/edu/resources/tips/images/sidebyside@2x_dark.png deleted file mode 100644 index c64e919e14de..000000000000 Binary files a/python/edu/resources/tips/images/sidebyside@2x_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/sidebyside_dark.png b/python/edu/resources/tips/images/sidebyside_dark.png deleted file mode 100644 index c55c6e3ff9a6..000000000000 Binary files a/python/edu/resources/tips/images/sidebyside_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/speed_search.png b/python/edu/resources/tips/images/speed_search.png deleted file mode 100644 index 2e58d3300b31..000000000000 Binary files a/python/edu/resources/tips/images/speed_search.png and /dev/null differ diff --git a/python/edu/resources/tips/images/speed_search@2x.png b/python/edu/resources/tips/images/speed_search@2x.png deleted file mode 100644 index 60b5f2e4c87b..000000000000 Binary files a/python/edu/resources/tips/images/speed_search@2x.png and /dev/null differ diff --git a/python/edu/resources/tips/images/speed_search@2x_dark.png b/python/edu/resources/tips/images/speed_search@2x_dark.png deleted file mode 100644 index 112b38107a58..000000000000 Binary files a/python/edu/resources/tips/images/speed_search@2x_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/speed_search_dark.png b/python/edu/resources/tips/images/speed_search_dark.png deleted file mode 100644 index 86642ce0e899..000000000000 Binary files a/python/edu/resources/tips/images/speed_search_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/switcher.png b/python/edu/resources/tips/images/switcher.png deleted file mode 100644 index 2a4cbcdd1e04..000000000000 Binary files a/python/edu/resources/tips/images/switcher.png and /dev/null differ diff --git a/python/edu/resources/tips/images/switcher@2x.png b/python/edu/resources/tips/images/switcher@2x.png deleted file mode 100644 index 1fb023f79dd0..000000000000 Binary files a/python/edu/resources/tips/images/switcher@2x.png and /dev/null differ diff --git a/python/edu/resources/tips/images/switcher@2x_dark.png b/python/edu/resources/tips/images/switcher@2x_dark.png deleted file mode 100644 index b36a0e6c0daf..000000000000 Binary files a/python/edu/resources/tips/images/switcher@2x_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/switcher_dark.png b/python/edu/resources/tips/images/switcher_dark.png deleted file mode 100644 index 0549a5a147be..000000000000 Binary files a/python/edu/resources/tips/images/switcher_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/tagNameCompletion.png b/python/edu/resources/tips/images/tagNameCompletion.png deleted file mode 100644 index e711aa8c0093..000000000000 Binary files a/python/edu/resources/tips/images/tagNameCompletion.png and /dev/null differ diff --git a/python/edu/resources/tips/images/tagNameCompletion@2x.png b/python/edu/resources/tips/images/tagNameCompletion@2x.png deleted file mode 100644 index 2942719bedb8..000000000000 Binary files a/python/edu/resources/tips/images/tagNameCompletion@2x.png and /dev/null differ diff --git a/python/edu/resources/tips/images/tagNameCompletion@2x_dark.png b/python/edu/resources/tips/images/tagNameCompletion@2x_dark.png deleted file mode 100644 index 71bd316fe677..000000000000 Binary files a/python/edu/resources/tips/images/tagNameCompletion@2x_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/tagNameCompletion_dark.png b/python/edu/resources/tips/images/tagNameCompletion_dark.png deleted file mode 100644 index 1e6971d5cb6e..000000000000 Binary files a/python/edu/resources/tips/images/tagNameCompletion_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/terminal.png b/python/edu/resources/tips/images/terminal.png deleted file mode 100644 index f71774350ae8..000000000000 Binary files a/python/edu/resources/tips/images/terminal.png and /dev/null differ diff --git a/python/edu/resources/tips/images/terminal@2x.png b/python/edu/resources/tips/images/terminal@2x.png deleted file mode 100644 index 2d75b4fcb1d5..000000000000 Binary files a/python/edu/resources/tips/images/terminal@2x.png and /dev/null differ diff --git a/python/edu/resources/tips/images/terminal@2x_dark.png b/python/edu/resources/tips/images/terminal@2x_dark.png deleted file mode 100644 index 9cdd82ef538b..000000000000 Binary files a/python/edu/resources/tips/images/terminal@2x_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/terminal_dark.png b/python/edu/resources/tips/images/terminal_dark.png deleted file mode 100644 index 54ae051d777b..000000000000 Binary files a/python/edu/resources/tips/images/terminal_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/todo_preview.png b/python/edu/resources/tips/images/todo_preview.png deleted file mode 100644 index 8475624cfa8b..000000000000 Binary files a/python/edu/resources/tips/images/todo_preview.png and /dev/null differ diff --git a/python/edu/resources/tips/images/todo_preview@2x.png b/python/edu/resources/tips/images/todo_preview@2x.png deleted file mode 100644 index 9962b2b0e0fc..000000000000 Binary files a/python/edu/resources/tips/images/todo_preview@2x.png and /dev/null differ diff --git a/python/edu/resources/tips/images/todo_preview@2x_dark.png b/python/edu/resources/tips/images/todo_preview@2x_dark.png deleted file mode 100644 index 6caef92066ef..000000000000 Binary files a/python/edu/resources/tips/images/todo_preview@2x_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/todo_preview_dark.png b/python/edu/resources/tips/images/todo_preview_dark.png deleted file mode 100644 index a0c50ebbd9a8..000000000000 Binary files a/python/edu/resources/tips/images/todo_preview_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/todo_scopes.png b/python/edu/resources/tips/images/todo_scopes.png deleted file mode 100644 index 8121347bd5c1..000000000000 Binary files a/python/edu/resources/tips/images/todo_scopes.png and /dev/null differ diff --git a/python/edu/resources/tips/images/todo_scopes@2x.png b/python/edu/resources/tips/images/todo_scopes@2x.png deleted file mode 100644 index e395360dd5e8..000000000000 Binary files a/python/edu/resources/tips/images/todo_scopes@2x.png and /dev/null differ diff --git a/python/edu/resources/tips/images/todo_scopes@2x_dark.png b/python/edu/resources/tips/images/todo_scopes@2x_dark.png deleted file mode 100644 index ec8a30107d12..000000000000 Binary files a/python/edu/resources/tips/images/todo_scopes@2x_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/todo_scopes_dark.png b/python/edu/resources/tips/images/todo_scopes_dark.png deleted file mode 100644 index 2a2a056f756d..000000000000 Binary files a/python/edu/resources/tips/images/todo_scopes_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/try_except.png b/python/edu/resources/tips/images/try_except.png deleted file mode 100644 index 918275f1b883..000000000000 Binary files a/python/edu/resources/tips/images/try_except.png and /dev/null differ diff --git a/python/edu/resources/tips/images/try_except@2x.png b/python/edu/resources/tips/images/try_except@2x.png deleted file mode 100644 index 6336bbcb3f62..000000000000 Binary files a/python/edu/resources/tips/images/try_except@2x.png and /dev/null differ diff --git a/python/edu/resources/tips/images/try_except@2x_dark.png b/python/edu/resources/tips/images/try_except@2x_dark.png deleted file mode 100644 index 32f100a97b39..000000000000 Binary files a/python/edu/resources/tips/images/try_except@2x_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/try_except_dark.png b/python/edu/resources/tips/images/try_except_dark.png deleted file mode 100644 index 5c12670caaf5..000000000000 Binary files a/python/edu/resources/tips/images/try_except_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/vcsQuickList.png b/python/edu/resources/tips/images/vcsQuickList.png deleted file mode 100644 index 61209a6428fd..000000000000 Binary files a/python/edu/resources/tips/images/vcsQuickList.png and /dev/null differ diff --git a/python/edu/resources/tips/images/vcsQuickList@2x.png b/python/edu/resources/tips/images/vcsQuickList@2x.png deleted file mode 100644 index e4735101dc8a..000000000000 Binary files a/python/edu/resources/tips/images/vcsQuickList@2x.png and /dev/null differ diff --git a/python/edu/resources/tips/images/vcsQuickList@2x_dark.png b/python/edu/resources/tips/images/vcsQuickList@2x_dark.png deleted file mode 100644 index 074919081f65..000000000000 Binary files a/python/edu/resources/tips/images/vcsQuickList@2x_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/vcsQuickList_dark.png b/python/edu/resources/tips/images/vcsQuickList_dark.png deleted file mode 100644 index 0c8cbe495068..000000000000 Binary files a/python/edu/resources/tips/images/vcsQuickList_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/wildcard_goto.png b/python/edu/resources/tips/images/wildcard_goto.png deleted file mode 100644 index 3486682a805d..000000000000 Binary files a/python/edu/resources/tips/images/wildcard_goto.png and /dev/null differ diff --git a/python/edu/resources/tips/images/wildcard_goto@2x.png b/python/edu/resources/tips/images/wildcard_goto@2x.png deleted file mode 100644 index 557f5b22be48..000000000000 Binary files a/python/edu/resources/tips/images/wildcard_goto@2x.png and /dev/null differ diff --git a/python/edu/resources/tips/images/wildcard_goto@2x_dark.png b/python/edu/resources/tips/images/wildcard_goto@2x_dark.png deleted file mode 100644 index 06d01e57548b..000000000000 Binary files a/python/edu/resources/tips/images/wildcard_goto@2x_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/wildcard_goto_dark.png b/python/edu/resources/tips/images/wildcard_goto_dark.png deleted file mode 100644 index 1f7340e1691f..000000000000 Binary files a/python/edu/resources/tips/images/wildcard_goto_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/word_completion.png b/python/edu/resources/tips/images/word_completion.png deleted file mode 100644 index ae32b93e7030..000000000000 Binary files a/python/edu/resources/tips/images/word_completion.png and /dev/null differ diff --git a/python/edu/resources/tips/images/word_completion@2x.png b/python/edu/resources/tips/images/word_completion@2x.png deleted file mode 100644 index 2bfed89e18b6..000000000000 Binary files a/python/edu/resources/tips/images/word_completion@2x.png and /dev/null differ diff --git a/python/edu/resources/tips/images/word_completion@2x_dark.png b/python/edu/resources/tips/images/word_completion@2x_dark.png deleted file mode 100644 index bcdc5582f8e0..000000000000 Binary files a/python/edu/resources/tips/images/word_completion@2x_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/images/word_completion_dark.png b/python/edu/resources/tips/images/word_completion_dark.png deleted file mode 100644 index 199bcfbd3d6f..000000000000 Binary files a/python/edu/resources/tips/images/word_completion_dark.png and /dev/null differ diff --git a/python/edu/resources/tips/moveFileToChangelist.html b/python/edu/resources/tips/moveFileToChangelist.html deleted file mode 100644 index 7ec305ed0a19..000000000000 --- a/python/edu/resources/tips/moveFileToChangelist.html +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - -

-You can move any file to a changelist of your choice. To do that, just choose -Move to Changelist on the file context menu in the Changes tool window: -

- -

- - - diff --git a/python/edu/src/META-INF/IdeTipsAndTricks.xml b/python/edu/src/META-INF/IdeTipsAndTricks.xml deleted file mode 100644 index e920175552b6..000000000000 --- a/python/edu/src/META-INF/IdeTipsAndTricks.xml +++ /dev/null @@ -1,118 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/python/edu/src/META-INF/PyCharmEduPlugin.xml b/python/edu/src/META-INF/PyCharmEduPlugin.xml index b5f2a6c919c3..9adf03dfd9c8 100644 --- a/python/edu/src/META-INF/PyCharmEduPlugin.xml +++ b/python/edu/src/META-INF/PyCharmEduPlugin.xml @@ -1,5 +1,36 @@ - + - + + + com.jetbrains.python.edu.PyCharmEduInitialConfigurator$First + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/python/edu/src/META-INF/edu/LangActions.xml b/python/edu/src/META-INF/edu/LangActions.xml deleted file mode 100644 index 5c302e406f9b..000000000000 --- a/python/edu/src/META-INF/edu/LangActions.xml +++ /dev/null @@ -1,849 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/python/edu/src/META-INF/edu/LangExtensionPoints.xml b/python/edu/src/META-INF/edu/LangExtensionPoints.xml deleted file mode 100644 index 9ba562882fd2..000000000000 --- a/python/edu/src/META-INF/edu/LangExtensionPoints.xml +++ /dev/null @@ -1,808 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/python/edu/src/META-INF/edu/LangExtensions.xml b/python/edu/src/META-INF/edu/LangExtensions.xml deleted file mode 100644 index aac825b8273d..000000000000 --- a/python/edu/src/META-INF/edu/LangExtensions.xml +++ /dev/null @@ -1,883 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - com.intellij.codeInsight.intention.impl.EditFoldingOptionsAction - - - com.intellij.codeInsight.intention.impl.QuickEditAction - Language Injection - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/python/edu/src/META-INF/edu/LocalHistoryExtensions.xml b/python/edu/src/META-INF/edu/LocalHistoryExtensions.xml deleted file mode 100644 index 91ddc802e7e0..000000000000 --- a/python/edu/src/META-INF/edu/LocalHistoryExtensions.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/python/edu/src/META-INF/edu/PlatformActions.xml b/python/edu/src/META-INF/edu/PlatformActions.xml deleted file mode 100644 index 818ebf051c44..000000000000 --- a/python/edu/src/META-INF/edu/PlatformActions.xml +++ /dev/null @@ -1,661 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/python/edu/src/META-INF/edu/PlatformExtensionPoints.xml b/python/edu/src/META-INF/edu/PlatformExtensionPoints.xml deleted file mode 100644 index e8a45edbf138..000000000000 --- a/python/edu/src/META-INF/edu/PlatformExtensionPoints.xml +++ /dev/null @@ -1,235 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/python/edu/src/META-INF/edu/PlatformExtensions.xml b/python/edu/src/META-INF/edu/PlatformExtensions.xml deleted file mode 100644 index 9c30e9f44663..000000000000 --- a/python/edu/src/META-INF/edu/PlatformExtensions.xml +++ /dev/null @@ -1,324 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/python/edu/src/META-INF/edu/PlatformLangActionManager.xml b/python/edu/src/META-INF/edu/PlatformLangActionManager.xml deleted file mode 100644 index e2577b975587..000000000000 --- a/python/edu/src/META-INF/edu/PlatformLangActionManager.xml +++ /dev/null @@ -1,51 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/python/edu/src/META-INF/edu/PlatformLangPlugin.xml b/python/edu/src/META-INF/edu/PlatformLangPlugin.xml deleted file mode 100644 index 3801717a47cc..000000000000 --- a/python/edu/src/META-INF/edu/PlatformLangPlugin.xml +++ /dev/null @@ -1,105 +0,0 @@ - - com.intellij - IDEA CORE - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/python/edu/src/META-INF/edu/PlatformLangXmlPlugin.xml b/python/edu/src/META-INF/edu/PlatformLangXmlPlugin.xml deleted file mode 100644 index ea71eefd66d9..000000000000 --- a/python/edu/src/META-INF/edu/PlatformLangXmlPlugin.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/python/edu/src/META-INF/edu/PlatformPlugin.xml b/python/edu/src/META-INF/edu/PlatformPlugin.xml deleted file mode 100644 index 160e04a0e89d..000000000000 --- a/python/edu/src/META-INF/edu/PlatformPlugin.xml +++ /dev/null @@ -1,55 +0,0 @@ - - com.intellij - IDEA CORE - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/python/edu/src/META-INF/edu/VcsActions.xml b/python/edu/src/META-INF/edu/VcsActions.xml deleted file mode 100644 index 447f6d90d153..000000000000 --- a/python/edu/src/META-INF/edu/VcsActions.xml +++ /dev/null @@ -1,276 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/python/edu/src/META-INF/edu/VcsExtensionPoints.xml b/python/edu/src/META-INF/edu/VcsExtensionPoints.xml deleted file mode 100644 index defeb7de5f76..000000000000 --- a/python/edu/src/META-INF/edu/VcsExtensionPoints.xml +++ /dev/null @@ -1,63 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/python/edu/src/META-INF/edu/VcsExtensions.xml b/python/edu/src/META-INF/edu/VcsExtensions.xml deleted file mode 100644 index a05f28107034..000000000000 --- a/python/edu/src/META-INF/edu/VcsExtensions.xml +++ /dev/null @@ -1,64 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/python/edu/src/META-INF/edu/xdebugger.xml b/python/edu/src/META-INF/edu/xdebugger.xml deleted file mode 100644 index 4b03978f9473..000000000000 --- a/python/edu/src/META-INF/edu/xdebugger.xml +++ /dev/null @@ -1,42 +0,0 @@ - - - - com.intellij.xdebugger.XDebuggerManager - com.intellij.xdebugger.impl.XDebuggerManagerImpl - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/python/edu/src/META-INF/mime.types b/python/edu/src/META-INF/mime.types deleted file mode 100644 index 699aa1b3058b..000000000000 --- a/python/edu/src/META-INF/mime.types +++ /dev/null @@ -1,89 +0,0 @@ - text/html html htm shtml - text/css css - text/xml xml - image/gif gif - image/jpeg jpeg jpg - application/javascript js - application/atom+xml atom - application/rss+xml rss - - text/mathml mml - text/plain txt - text/vnd.sun.j2me.app-descriptor jad - text/vnd.wap.wml wml - text/x-component htc - - image/png png - image/tiff tif tiff - image/vnd.wap.wbmp wbmp - image/x-icon ico - image/x-jng jng - image/x-ms-bmp bmp - image/svg+xml svg svgz - image/webp webp - - application/font-woff woff - application/java-archive jar war ear - application/json json - application/mac-binhex40 hqx - application/msword doc - application/pdf pdf - application/postscript ps eps ai - application/rtf rtf - application/vnd.apple.mpegurl m3u8 - application/vnd.ms-excel xls - application/vnd.ms-fontobject eot - application/vnd.ms-powerpoint ppt - application/vnd.wap.wmlc wmlc - application/vnd.google-earth.kml+xml kml - application/vnd.google-earth.kmz kmz - application/x-7z-compressed 7z - application/x-cocoa cco - application/x-java-archive-diff jardiff - application/x-java-jnlp-file jnlp - application/x-makeself run - application/x-perl pl pm - application/x-pilot prc pdb - application/x-rar-compressed rar - application/x-redhat-package-manager rpm - application/x-sea sea - application/x-shockwave-flash swf - application/x-stuffit sit - application/x-tcl tcl tk - application/x-x509-ca-cert der pem crt - application/x-xpinstall xpi - application/xhtml+xml xhtml - application/xspf+xml xspf - application/zip zip - - application/octet-stream bin exe dll - application/octet-stream deb - application/octet-stream dmg - application/octet-stream iso img - application/octet-stream msi msp msm - - application/vnd.openxmlformats-officedocument.wordprocessingml.document docx - application/vnd.openxmlformats-officedocument.spreadsheetml.sheet xlsx - application/vnd.openxmlformats-officedocument.presentationml.presentation pptx - - audio/midi mid midi kar - audio/mpeg mp3 - audio/ogg ogg - audio/x-m4a m4a - audio/x-realaudio ra - - video/3gpp 3gpp 3gp - video/mp2t ts - video/mp4 mp4 - video/mpeg mpeg mpg - video/quicktime mov - video/webm webm - video/x-flv flv - video/x-m4v m4v - video/x-mng mng - video/x-ms-asf asx asf - video/x-ms-wmv wmv - video/x-msvideo avi - -application/x-chrome-extension crx -application/dart dart \ No newline at end of file diff --git a/python/edu/src/META-INF/pycharm-edu.xml b/python/edu/src/META-INF/pycharm-edu.xml deleted file mode 100644 index c6440406816b..000000000000 --- a/python/edu/src/META-INF/pycharm-edu.xml +++ /dev/null @@ -1,113 +0,0 @@ - - - - - - - - - - - - - - com.jetbrains.python.PyCharmInitialConfigurator - - - - - - com.intellij.internal.statistic.updater.SendStatisticsProjectComponent - - - com.jetbrains.python.PyModuleListener - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/python/edu/src/META-INF/python-edu.xml b/python/edu/src/META-INF/python-edu.xml deleted file mode 100644 index 076114142803..000000000000 --- a/python/edu/src/META-INF/python-edu.xml +++ /dev/null @@ -1,706 +0,0 @@ - - - - com.jetbrains.python.PyBundle - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - com.jetbrains.python.codeInsight.intentions.PyConvertMethodToPropertyIntention - Python - - - - com.jetbrains.python.codeInsight.intentions.ImportToImportFromIntention - Python - - - - com.jetbrains.python.codeInsight.intentions.PyConvertStaticMethodToFunctionIntention - Python - - - - com.jetbrains.python.codeInsight.intentions.SpecifyTypeInDocstringIntention - Python - - - - com.jetbrains.python.codeInsight.intentions.SpecifyTypeInPy3AnnotationsIntention - Python - - - - com.jetbrains.python.codeInsight.intentions.TypeAssertionIntention - Python - - - - com.jetbrains.python.codeInsight.intentions.ImportFromToImportIntention - Python - - - - com.jetbrains.python.codeInsight.intentions.ImportToggleAliasIntention - Python - - - - com.jetbrains.python.codeInsight.intentions.PySplitIfIntention - Python - - - - com.jetbrains.python.codeInsight.intentions.PyNegateComparisonIntention - Python - - - - com.jetbrains.python.codeInsight.intentions.PyStringConcatenationToFormatIntention - Python - - - - com.jetbrains.python.codeInsight.intentions.ConvertFormatOperatorToMethodIntention - Python - - - - com.jetbrains.python.codeInsight.intentions.PyFlipComparisonIntention - Python - - - - com.jetbrains.python.codeInsight.intentions.PyDemorganIntention - Python - - - - com.jetbrains.python.codeInsight.intentions.ReplaceListComprehensionWithForIntention - Python - - - - com.jetbrains.python.codeInsight.intentions.PyJoinIfIntention - Python - - - - com.jetbrains.python.codeInsight.intentions.PyDictConstructorToLiteralFormIntention - Python - - - - com.jetbrains.python.codeInsight.intentions.PyDictLiteralFormToConstructorIntention - Python - - - - com.jetbrains.python.codeInsight.intentions.PyQuotedStringIntention - Python - - - - com.jetbrains.python.codeInsight.intentions.PyConvertLambdaToFunctionIntention - Python - - - - com.jetbrains.python.codeInsight.intentions.ConvertVariadicParamIntention - Python - - - - com.jetbrains.python.codeInsight.intentions.PyConvertTripleQuotedStringIntention - Python - - - - com.jetbrains.python.codeInsight.intentions.PyTransformConditionalExpressionIntention - Python - - - - com.jetbrains.python.codeInsight.intentions.PyGenerateDocstringIntention - Python - - - - com.jetbrains.python.codeInsight.intentions.PyYieldFromIntention - Python - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - com.jetbrains.python.PythonPsiManager - - - - - - - com.jetbrains.python.console.PythonConsoleToolWindow - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - com.jetbrains.python.testing.VFSTestFrameworkListener - - - - \ No newline at end of file diff --git a/python/edu/src/com/jetbrains/python/edu/PyCharmEduInitialConfigurator.java b/python/edu/src/com/jetbrains/python/edu/PyCharmEduInitialConfigurator.java new file mode 100644 index 000000000000..451c5193645e --- /dev/null +++ b/python/edu/src/com/jetbrains/python/edu/PyCharmEduInitialConfigurator.java @@ -0,0 +1,247 @@ +/* + * Copyright 2000-2013 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.jetbrains.python.edu; + +import com.intellij.application.options.InitialConfigurationDialog; +import com.intellij.codeInsight.CodeInsightSettings; +import com.intellij.codeInsight.intention.IntentionActionBean; +import com.intellij.codeInsight.intention.IntentionManager; +import com.intellij.ide.AppLifecycleListener; +import com.intellij.ide.GeneralSettings; +import com.intellij.ide.RecentProjectsManagerBase; +import com.intellij.ide.SelectInTarget; +import com.intellij.ide.ui.UISettings; +import com.intellij.ide.util.PropertiesComponent; +import com.intellij.ide.util.TipDialog; +import com.intellij.notification.EventLog; +import com.intellij.openapi.application.ApplicationManager; +import com.intellij.openapi.application.ModalityState; +import com.intellij.openapi.editor.ex.EditorSettingsExternalizable; +import com.intellij.openapi.extensions.Extensions; +import com.intellij.openapi.extensions.ExtensionsArea; +import com.intellij.openapi.fileChooser.impl.FileChooserUtil; +import com.intellij.openapi.fileTypes.FileTypeManager; +import com.intellij.openapi.keymap.Keymap; +import com.intellij.openapi.keymap.ex.KeymapManagerEx; +import com.intellij.openapi.keymap.impl.KeymapImpl; +import com.intellij.openapi.project.Project; +import com.intellij.openapi.project.ProjectManager; +import com.intellij.openapi.project.ProjectManagerAdapter; +import com.intellij.openapi.project.ex.ProjectManagerEx; +import com.intellij.openapi.util.Disposer; +import com.intellij.openapi.util.Ref; +import com.intellij.openapi.vfs.VfsUtil; +import com.intellij.openapi.wm.ToolWindowEP; +import com.intellij.openapi.wm.ToolWindowId; +import com.intellij.openapi.wm.WindowManager; +import com.intellij.platform.DirectoryProjectConfigurator; +import com.intellij.platform.PlatformProjectViewOpener; +import com.intellij.psi.codeStyle.CodeStyleSettings; +import com.intellij.psi.codeStyle.CodeStyleSettingsManager; +import com.intellij.util.Alarm; +import com.intellij.util.containers.ContainerUtil; +import com.intellij.util.messages.MessageBus; +import com.jetbrains.python.PythonLanguage; +import com.jetbrains.python.codeInsight.PyCodeInsightSettings; +import org.jetbrains.annotations.NonNls; +import org.jetbrains.annotations.NotNull; + +import javax.swing.*; +import java.util.Set; + +/** + * @author traff + */ +@SuppressWarnings({"UtilityClassWithoutPrivateConstructor", "UtilityClassWithPublicConstructor"}) +public class PyCharmEduInitialConfigurator { + @NonNls private static final String DISPLAYED_PROPERTY = "PyCharm.initialConfigurationShown"; + + @NonNls private static final String CONFIGURED = "PyCharm.InitialConfiguration"; + + + public static class First { + + public First() { + patchRootAreaExtensions(); + } + } + + /** + * @noinspection UnusedParameters + */ + public PyCharmEduInitialConfigurator(MessageBus bus, + UISettings uiSettings, + CodeInsightSettings codeInsightSettings, + final PropertiesComponent propertiesComponent, + FileTypeManager fileTypeManager, + final ProjectManagerEx projectManager, + RecentProjectsManagerBase recentProjectsManager) { + if (!propertiesComponent.getBoolean(CONFIGURED, false)) { + propertiesComponent.setValue(CONFIGURED, "true"); + recentProjectsManager.loadState(new RecentProjectsManagerBase.State()); + propertiesComponent.setValue("toolwindow.stripes.buttons.info.shown", "true"); + UISettings.getInstance().HIDE_TOOL_STRIPES = false; + uiSettings.SHOW_MEMORY_INDICATOR = false; + uiSettings.SHOW_DIRECTORY_FOR_NON_UNIQUE_FILENAMES = true; + codeInsightSettings.REFORMAT_ON_PASTE = CodeInsightSettings.NO_REFORMAT; + + EditorSettingsExternalizable.getInstance().setVirtualSpace(false); + final CodeStyleSettings settings = CodeStyleSettingsManager.getInstance().getCurrentSettings(); + settings.ALIGN_MULTILINE_PARAMETERS_IN_CALLS = true; + settings.getCommonSettings(PythonLanguage.getInstance()).ALIGN_MULTILINE_PARAMETERS_IN_CALLS = true; + UISettings.getInstance().SHOW_DIRECTORY_FOR_NON_UNIQUE_FILENAMES = true; + UISettings.getInstance().SHOW_MEMORY_INDICATOR = false; + final String ignoredFilesList = fileTypeManager.getIgnoredFilesList(); + ApplicationManager.getApplication().invokeLater(new Runnable() { + @Override + public void run() { + ApplicationManager.getApplication().runWriteAction(new Runnable() { + @Override + public void run() { + FileTypeManager.getInstance().setIgnoredFilesList(ignoredFilesList + ";*$py.class"); + } + }); + } + }); + PyCodeInsightSettings.getInstance().SHOW_IMPORT_POPUP = false; + } + bus.connect().subscribe(AppLifecycleListener.TOPIC, new AppLifecycleListener.Adapter() { + @Override + public void appFrameCreated(String[] commandLineArgs, @NotNull Ref willOpenProject) { + if (!propertiesComponent.isValueSet(DISPLAYED_PROPERTY)) { + GeneralSettings.getInstance().setShowTipsOnStartup(false); + showInitialConfigurationDialog(); + propertiesComponent.setValue(DISPLAYED_PROPERTY, "true"); + } + } + + @Override + public void appStarting(Project projectFromCommandLine) { + patchKeymap(); + } + }); + bus.connect().subscribe(ProjectManager.TOPIC, new ProjectManagerAdapter() { + @Override + public void projectOpened(final Project project) { + if (project.isDefault()) return; + if (FileChooserUtil.getLastOpenedFile(project) == null) { + FileChooserUtil.setLastOpenedFile(project, VfsUtil.getUserHomeDir()); + } + + patchProjectAreaExtensions(project); + + //StartupManager.getInstance(project).runWhenProjectIsInitialized(new DumbAwareRunnable() { + // @Override + // public void run() { + // if (project.isDisposed()) return; + // + // ToolWindowManager.getInstance(project).invokeLater(new Runnable() { + // int count = 0; + // public void run() { + // if (project.isDisposed()) return; + // if (count ++ < 3) { + // ToolWindowManager.getInstance(project).invokeLater(this); + // return; + // } + // if (!propertiesComponent.isValueSet(INIT_DB_DIALOG_DISPLAYED)) { + // ToolWindow toolWindow = DatabaseView.getDatabaseToolWindow(project); + // if (toolWindow.getType() != ToolWindowType.SLIDING) { + // toolWindow.activate(null); + // } + // propertiesComponent.setValue(INIT_DB_DIALOG_DISPLAYED, "true"); + // onFirstProjectOpened(project); + // } + // } + // }); + // } + //}); + } + }); + } + + private static void onFirstProjectOpened(@NotNull final Project project) { + // show python console + + + GeneralSettings.getInstance().setShowTipsOnStartup(true); + + // show tips once + final Alarm alarm = new Alarm(project); + alarm.addRequest(new Runnable() { + @Override + public void run() { + Disposer.dispose(alarm); + TipDialog.createForProject(project).show(); + } + }, 2000, ModalityState.NON_MODAL); + } + + private static void patchRootAreaExtensions() { + ExtensionsArea rootArea = Extensions.getArea(null); + + for (ToolWindowEP ep : Extensions.getExtensions(ToolWindowEP.EP_NAME)) { + if (ToolWindowId.FAVORITES_VIEW.equals(ep.id) || ToolWindowId.TODO_VIEW.equals(ep.id) || EventLog.LOG_TOOL_WINDOW_ID.equals(ep.id)) { + rootArea.getExtensionPoint(ToolWindowEP.EP_NAME).unregisterExtension(ep); + } + } + + for (DirectoryProjectConfigurator ep : Extensions.getExtensions(DirectoryProjectConfigurator.EP_NAME)) { + if (ep instanceof PlatformProjectViewOpener) { + rootArea.getExtensionPoint(DirectoryProjectConfigurator.EP_NAME).unregisterExtension(ep); + } + } + + for (IntentionActionBean ep : Extensions.getExtensions(IntentionManager.EP_INTENTION_ACTIONS)) { + if ("org.intellij.lang.regexp.intention.CheckRegExpIntentionAction".equals(ep.className)) { + rootArea.getExtensionPoint(IntentionManager.EP_INTENTION_ACTIONS).unregisterExtension(ep); + } + } + } + + private static void patchProjectAreaExtensions(@NotNull final Project project) { + for (SelectInTarget target : Extensions.getExtensions(SelectInTarget.EP_NAME, project)) { + if (ToolWindowId.FAVORITES_VIEW.equals(target.getToolWindowId())) { + Extensions.getArea(project).getExtensionPoint(SelectInTarget.EP_NAME).unregisterExtension(target); + } + } + } + + private static void patchKeymap() { + Set droppedActions = ContainerUtil.newHashSet( + "AddToFavoritesPopup", "RemoveFromFavorites", + "DatabaseView.ImportDataSources", + "CompileDirty", "Compile", + // hidden + "AddNewFavoritesList", "EditFavorites", "RemoveFromFavorites", "RenameFavoritesList", "RemoveFavoritesList"); + KeymapManagerEx keymapManager = KeymapManagerEx.getInstanceEx(); + + + for (Keymap keymap : keymapManager.getAllKeymaps()) { + if (keymap.canModify()) continue; + + KeymapImpl keymapImpl = (KeymapImpl)keymap; + + for (String id : keymapImpl.getOwnActionIds()) { + if (droppedActions.contains(id)) keymapImpl.clearOwnActionsId(id); + } + } + } + + private static void showInitialConfigurationDialog() { + final JFrame frame = WindowManager.getInstance().findVisibleFrame(); + new InitialConfigurationDialog(frame, "Python").show(); + } +}