diff --git a/python/ide/src/META-INF/PyCharmCorePlugin.xml b/python/ide/src/META-INF/PyCharmCorePlugin.xml index 9808080f4da0..04ca94cc22ab 100644 --- a/python/ide/src/META-INF/PyCharmCorePlugin.xml +++ b/python/ide/src/META-INF/PyCharmCorePlugin.xml @@ -20,5 +20,6 @@ overrides="true"/> + diff --git a/python/src/com/jetbrains/python/PyCharmProfessionalAdvertiser.java b/python/src/com/jetbrains/python/PyCharmProfessionalAdvertiser.java index a3860a627ef9..1221d7f97f2b 100644 --- a/python/src/com/jetbrains/python/PyCharmProfessionalAdvertiser.java +++ b/python/src/com/jetbrains/python/PyCharmProfessionalAdvertiser.java @@ -40,27 +40,29 @@ public class PyCharmProfessionalAdvertiser implements Annotator { @Override public void annotate(@NotNull PsiElement element, @NotNull AnnotationHolder holder) { + if (element instanceof PyFile) { final PyFile pyFile = (PyFile)element; final Project project = element.getProject(); + if (getSettings(project).shown) { + return; + } + getSettings(project).shown = true; + final VirtualFile vFile = pyFile.getVirtualFile(); if (vFile != null && FileIndexFacade.getInstance(project).isInLibraryClasses(vFile)) { return; } - final Boolean showingFlag = project.getUserData(DONT_SHOW_BALLOON); - if (showingFlag != null && showingFlag.booleanValue()) { - return; - } if (!moduleUsesPythonSdk(pyFile)) { return; } if (PyCellUtil.hasCells(pyFile)) { - showInspectionAdvertisement(project, "code cells in editor"); + showInspectionAdvertisement(project, "code cells in the editor"); } if (containsImport(pyFile, "django")) { diff --git a/python/src/com/jetbrains/python/PyCharmProfessionalAdvertiserSettings.java b/python/src/com/jetbrains/python/PyCharmProfessionalAdvertiserSettings.java new file mode 100644 index 000000000000..7f09a927adc3 --- /dev/null +++ b/python/src/com/jetbrains/python/PyCharmProfessionalAdvertiserSettings.java @@ -0,0 +1,27 @@ +// Copyright 2000-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +package com.jetbrains.python; + +import com.intellij.openapi.components.PersistentStateComponent; +import com.intellij.openapi.components.State; +import com.intellij.util.xmlb.XmlSerializerUtil; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +/** + * @author traff + */ +@State(name = "PyCharmProfessionalAdvertiser") +public class PyCharmProfessionalAdvertiserSettings implements PersistentStateComponent { + public boolean shown = false; + + @Nullable + @Override + public PyCharmProfessionalAdvertiserSettings getState() { + return this; + } + + @Override + public void loadState(@NotNull PyCharmProfessionalAdvertiserSettings state) { + XmlSerializerUtil.copyBean(state, this); + } +}