package icons;

import com.intellij.openapi.util.IconLoader;

import javax.swing.*;

/**
 * NOTE THIS FILE IS AUTO-GENERATED
 * DO NOT EDIT IT BY HAND, run build/scripts/icons.gant instead
 */
public class PythonIcons {
  private static Icon load(String path) {
    return IconLoader.getIcon(path, PythonIcons.class);
  }

  
  public static class Pyqt {
    public static final Icon TsFile = load("/icons/com/jetbrains/pyqt/tsFile.png"); // 16x16
    public static final Icon UiForm = load("/icons/com/jetbrains/pyqt/uiForm.png"); // 16x16

  }
  
  public static class Python {
    
    public static class Buildout {
      public static final Icon Buildout = load("/icons/com/jetbrains/python/buildout/buildout.png"); // 16x16

    }
    
    public static class Debug {
      public static final Icon CommandLine = load("/icons/com/jetbrains/python/debug/commandLine.png"); // 16x16

    }
    public static final Icon Dotnet = load("/icons/com/jetbrains/python/dotnet.png"); // 16x16
    public static final Icon InterpreterGear = load("/icons/com/jetbrains/python/interpreterGear.png"); // 16x16
    public static final Icon Jython = load("/icons/com/jetbrains/python/jython.png"); // 16x16
    
    public static class Nodes {
      public static final Icon Cyan_dot = load("/icons/com/jetbrains/python/nodes/cyan-dot.png"); // 16x16
      public static final Icon Lock = load("/icons/com/jetbrains/python/nodes/lock.png"); // 16x16
      public static final Icon Red_inv_triangle = load("/icons/com/jetbrains/python/nodes/red-inv-triangle.png"); // 16x16

    }
    public static final Icon PropertyDeleter = load("/icons/com/jetbrains/python/propertyDeleter.png"); // 16x16
    public static final Icon PropertyGetter = load("/icons/com/jetbrains/python/propertyGetter.png"); // 16x16
    public static final Icon PropertySetter = load("/icons/com/jetbrains/python/propertySetter.png"); // 16x16
    public static final Icon Pypy = load("/icons/com/jetbrains/python/pypy.png"); // 16x16
    public static final Icon Python_logo = load("/icons/com/jetbrains/python/python-logo.png"); // 32x32
    public static final Icon Python = load("/icons/com/jetbrains/python/python.png"); // 16x16
    public static final Icon Python_24 = load("/icons/com/jetbrains/python/python_24.png"); // 24x24
    public static final Icon PythonClosed = load("/icons/com/jetbrains/python/pythonClosed.png"); // 16x16
    public static final Icon PythonConsole = load("/icons/com/jetbrains/python/pythonConsole.png"); // 16x16
    public static final Icon PythonConsoleToolWindow = load("/icons/com/jetbrains/python/pythonConsoleToolWindow.png"); // 13x13
    public static final Icon PythonTests = load("/icons/com/jetbrains/python/pythonTests.png"); // 16x16
    public static final Icon TemplateRoot = load("/icons/com/jetbrains/python/templateRoot.png"); // 16x16
    public static final Icon Virtualenv = load("/icons/com/jetbrains/python/virtualenv.png"); // 16x16

  }
}
