From 6ea6af8f02327b62710c984322aa58aee7ddf663 Mon Sep 17 00:00:00 2001 From: Dmitry Trofimov Date: Thu, 15 Feb 2018 14:40:47 +0100 Subject: [PATCH] Show advertiser only once --- python/ide/src/META-INF/PyCharmCorePlugin.xml | 1 + .../python/PyCharmProfessionalAdvertiser.java | 12 +++++---- ...PyCharmProfessionalAdvertiserSettings.java | 27 +++++++++++++++++++ 3 files changed, 35 insertions(+), 5 deletions(-) create mode 100644 python/src/com/jetbrains/python/PyCharmProfessionalAdvertiserSettings.java 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); + } +}