Merge remote-tracking branch 'origin/master'
@@ -1,6 +1,6 @@
|
||||
; Installer images
|
||||
!define IMAGES_LOCATION ${BASE_DIR}\python\build\resources
|
||||
!define LICENSE_FILE ${BASE_DIR}\python\license\PyCharm_Preview_License
|
||||
!define PRODUCT_PROPERTIES_FILE ${BASE_DIR}\out\pycharm\layout\bin\idea.properties
|
||||
!define IMAGES_LOCATION ${BASE_DIR}\python\community\build\resources
|
||||
;!define LICENSE_FILE ${BASE_DIR}\python\license\PyCharm_Preview_License
|
||||
!define PRODUCT_PROPERTIES_FILE ${BASE_DIR}\out\pycharmCE\layout\bin\idea.properties
|
||||
!define PRODUCT_VM_OPTIONS_NAME pycharm.exe.vmoptions
|
||||
!define PRODUCT_VM_OPTIONS_FILE ${BASE_DIR}\out\pycharm\win\bin\${PRODUCT_VM_OPTIONS_NAME}
|
||||
!define PRODUCT_VM_OPTIONS_FILE ${BASE_DIR}\out\pycharmCE\win\bin\${PRODUCT_VM_OPTIONS_NAME}
|
||||
|
||||
@@ -33,6 +33,7 @@ private List pycharmImplementationModules() { //modules to put into pycharm.ja
|
||||
|
||||
class Paths {
|
||||
final sandbox
|
||||
final sandboxCE
|
||||
final distAll
|
||||
final distWin
|
||||
final distMac
|
||||
@@ -43,6 +44,7 @@ class Paths {
|
||||
|
||||
def Paths(String home) {
|
||||
sandbox = "$home/out/pycharm"
|
||||
sandboxCE = "$home/out/pycharmCE"
|
||||
|
||||
distAll = "$sandbox/layout"
|
||||
distWin = "$sandbox/win"
|
||||
@@ -165,13 +167,17 @@ private communityEdition(Set usedJars) {
|
||||
s.setBinding(binding)
|
||||
|
||||
s.layoutCommunity("${paths.sandbox}/classes/production", usedJars)
|
||||
signExe("${paths.sandboxCE}/win/bin/pycharm.exe")
|
||||
buildNSIS(["${paths.sandboxCE}/layout", "${paths.sandboxCE}/win"],
|
||||
"$pythonCommunityHome/build/strings.nsi", "$pythonCommunityHome/build/paths.nsi",
|
||||
"pycharm", false, true, system_selector)
|
||||
|
||||
// todo: get rid of copying
|
||||
//ant.copy(file: "$paths.artifacts/ideaIC-${buildNumber}.mac.zip", tofile: "$paths.artifacts/ideaIC-${buildNumber}.sit")
|
||||
//def extraArgs = ["build.number": "IC-$buildNumber"]
|
||||
//signMacZip("idea", extraArgs)
|
||||
//notifyArtifactBuilt("$paths.artifacts/ideaIC-${buildNumber}.sit")
|
||||
//buildDmg("idea", getDmgImage(true), extraArgs)
|
||||
//ant.copy(file: "${paths.sandboxCE}/artifacts/ideaIC-${buildNumber}.mac.zip", tofile: "$paths.artifacts/ideaIC-${buildNumber}.sit")
|
||||
def extraArgs = ["build.number": "PC-$buildNumber"]
|
||||
signMacZip("pycharm", extraArgs)
|
||||
notifyArtifactBuilt("$paths.artifacts/ideaIC-${buildNumber}.sit")
|
||||
buildDmg("pycharm", "${home}/python/build/DMG_background.png", extraArgs)
|
||||
//ant.delete(file: "$paths.artifacts/ideaIC-${buildNumber}.sit")
|
||||
}
|
||||
|
||||
|
||||
@@ -50,7 +50,7 @@ class Paths {
|
||||
distWin = "$sandbox/win"
|
||||
distMac = "$sandbox/mac"
|
||||
distUnix = "$sandbox/unix"
|
||||
artifacts = "$home/out/pycharmCE/artifacts"
|
||||
artifacts = "$sandbox/artifacts"
|
||||
|
||||
ideaSystem = "$sandbox/system"
|
||||
ideaConfig = "$sandbox/config"
|
||||
@@ -380,7 +380,7 @@ private layoutMac(Map _args, String target) {
|
||||
}
|
||||
|
||||
Map args = new HashMap(_args)
|
||||
args.icns = "$home/python/resources/PyCharm.icns"
|
||||
args.icns = "$pythonCommunityHome/resources/PyCharmCore.icns"
|
||||
args.bundleIdentifier = "com.jetbrains.pycharm"
|
||||
args.platform_prefix = "Python"
|
||||
args.help_id = "PY"
|
||||
|
||||
|
After Width: | Height: | Size: 17 KiB |
|
After Width: | Height: | Size: 17 KiB |
@@ -1,9 +1,9 @@
|
||||
!define MANUFACTURER "JetBrains"
|
||||
!define MUI_PRODUCT "PyCharm"
|
||||
!define PRODUCT_FULL_NAME "JetBrains PyCharm"
|
||||
!define MUI_PRODUCT "PyCharm Community Edition"
|
||||
!define PRODUCT_FULL_NAME "JetBrains PyCharm Community Edition"
|
||||
!define PRODUCT_EXE_FILE "pycharm.exe"
|
||||
!define PRODUCT_ICON_FILE "pycharm_inst.ico"
|
||||
!define PRODUCT_UNINST_ICON_FILE "pycharm_uninst.ico"
|
||||
!define PRODUCT_ICON_FILE "PC_instCom.ico"
|
||||
!define PRODUCT_UNINST_ICON_FILE "PC_uninstCom.ico"
|
||||
!define PRODUCT_LOGO_FILE "logo.bmp"
|
||||
!define PRODUCT_HEADER_FILE "headerlogo.bmp"
|
||||
|
||||
|
||||
|
Before Width: | Height: | Size: 347 KiB After Width: | Height: | Size: 347 KiB |
|
After Width: | Height: | Size: 14 KiB |
|
After Width: | Height: | Size: 811 B |
|
After Width: | Height: | Size: 2.2 KiB |
@@ -4,7 +4,7 @@
|
||||
<build number="__BUILD_NUMBER__" date="__BUILD_DATE__"/>
|
||||
<logo url="/pycharm_core_logo.png" textcolor="ffffff" progressColor="ffaa16" progressY="230" progressTailIcon="/community_progress_tail.png"/>
|
||||
<about url="/pycharm_core_about.png" logoX="300" logoY="265" logoW="75" logoH="30" foreground="ffffff" linkColor="fca11a"/>
|
||||
<icon size32="/PyCharm_32.png" size16="/PyCharm_16.png" size32opaque="/PyCharm_32.png" size12="/PyCharm_13.png" ico="PyCharmCore.ico"/>
|
||||
<icon size32="/PyCharmCore32.png" size16="/PyCharmCore16.png" size32opaque="/PyCharmCore32.png" size12="/PyCharm_13.png" ico="PyCharmCore.ico"/>
|
||||
<package code="__PACKAGE_CODE__"/>
|
||||
<names product="PyCharm Core" fullname="PyCharm Core" script="charm"/>
|
||||
<install-over minbuild="0" maxbuild="0" version="1.x"/>
|
||||
|
||||
@@ -544,22 +544,16 @@ public class PyDebugProcess extends XDebugProcess implements IPyDebugProcess, Pr
|
||||
}
|
||||
|
||||
public void addExceptionBreakpoint(XBreakpoint<? extends ExceptionBreakpointProperties> breakpoint) {
|
||||
ExceptionBreakpointProperties properties = breakpoint.getProperties();
|
||||
if (properties == null) return;
|
||||
|
||||
myRegisteredExceptionBreakpoints.put(properties.getException(), breakpoint);
|
||||
myRegisteredExceptionBreakpoints.put(breakpoint.getProperties().getException(), breakpoint);
|
||||
if (isConnected()) {
|
||||
myDebugger.addExceptionBreakpoint(properties);
|
||||
myDebugger.addExceptionBreakpoint(breakpoint.getProperties());
|
||||
}
|
||||
}
|
||||
|
||||
public void removeExceptionBreakpoint(XBreakpoint<? extends ExceptionBreakpointProperties> breakpoint) {
|
||||
ExceptionBreakpointProperties properties = breakpoint.getProperties();
|
||||
if (properties == null) return;
|
||||
|
||||
myRegisteredExceptionBreakpoints.remove(properties.getException());
|
||||
myRegisteredExceptionBreakpoints.remove(breakpoint.getProperties().getException());
|
||||
if (isConnected()) {
|
||||
myDebugger.removeExceptionBreakpoint(properties);
|
||||
myDebugger.removeExceptionBreakpoint(breakpoint.getProperties());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -225,24 +225,18 @@ public class PyExceptionBreakpointType
|
||||
|
||||
@Override
|
||||
public void saveTo(@NotNull XBreakpoint<PyExceptionBreakpointProperties> breakpoint) {
|
||||
PyExceptionBreakpointProperties properties = breakpoint.getProperties();
|
||||
if (properties == null) return;
|
||||
|
||||
properties.setNotifyOnTerminate(myNotifyOnTerminateCheckBox.isSelected());
|
||||
breakpoint.getProperties().setNotifyOnTerminate(myNotifyOnTerminateCheckBox.isSelected());
|
||||
|
||||
properties.setNotifyAlways(myNotifyOnRaiseCheckBox.isSelected() && myAlwaysRadio.isSelected());
|
||||
properties.setNotifyOnlyOnFirst(myNotifyOnRaiseCheckBox.isSelected() && myOnlyOnFirstRadio.isSelected());
|
||||
breakpoint.getProperties().setNotifyAlways(myNotifyOnRaiseCheckBox.isSelected() && myAlwaysRadio.isSelected());
|
||||
breakpoint.getProperties().setNotifyOnlyOnFirst(myNotifyOnRaiseCheckBox.isSelected() && myOnlyOnFirstRadio.isSelected());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void loadFrom(@NotNull XBreakpoint<PyExceptionBreakpointProperties> breakpoint) {
|
||||
PyExceptionBreakpointProperties properties = breakpoint.getProperties();
|
||||
if (properties == null) return;
|
||||
|
||||
myNotifyOnTerminateCheckBox.setSelected(properties.isNotifyOnTerminate());
|
||||
myNotifyOnTerminateCheckBox.setSelected(breakpoint.getProperties().isNotifyOnTerminate());
|
||||
|
||||
boolean always = properties.isNotifyAlways();
|
||||
boolean onFirst = properties.isNotifyOnlyOnFirst();
|
||||
boolean always = breakpoint.getProperties().isNotifyAlways();
|
||||
boolean onFirst = breakpoint.getProperties().isNotifyOnlyOnFirst();
|
||||
|
||||
setNotifyOnRaiseSelected(always || onFirst);
|
||||
|
||||
|
||||
@@ -396,8 +396,11 @@ public class PyUnresolvedReferencesInspection extends PyInspection {
|
||||
}
|
||||
final PsiElement element = reference.getElement();
|
||||
final List<LocalQuickFix> actions = new ArrayList<LocalQuickFix>(2);
|
||||
if (ref_text.length() <= 0) return; // empty text, nothing to highlight
|
||||
final String refname = (element instanceof PyQualifiedExpression) ? ((PyQualifiedExpression)element).getReferencedName() : ref_text;
|
||||
// Empty text, nothing to highlight
|
||||
if (refname == null || refname.length() <= 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
final PyQualifiedName canonicalQName = getCanonicalName(reference, myTypeEvalContext);
|
||||
final String canonicalName = canonicalQName != null ? canonicalQName.toString() : null;
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
import foo.<EOLError descr="Identifier expected"></EOLError>
|
||||
@@ -294,6 +294,10 @@ public class PyUnresolvedReferencesInspectionTest extends PyTestCase {
|
||||
doTest();
|
||||
}
|
||||
|
||||
public void testNullReferenceInIncompleteImport() {
|
||||
doMultiFileTest("a.py");
|
||||
}
|
||||
|
||||
private void doTest() {
|
||||
myFixture.configureByFile(TEST_DIRECTORY + getTestName(true) + ".py");
|
||||
myFixture.enableInspections(PyUnresolvedReferencesInspection.class);
|
||||
|
||||