229 ) |
229 ) |
230 ) and ericApp().getObject("EricServer").isServerConnected(): |
230 ) and ericApp().getObject("EricServer").isServerConnected(): |
231 # TODO change this once server environment definitions are supported |
231 # TODO change this once server environment definitions are supported |
232 startRemote = True |
232 startRemote = True |
233 venvName = self.debugServer.getEricServerEnvironmentString() |
233 venvName = self.debugServer.getEricServerEnvironmentString() |
234 interpreter = "" |
234 interpreter = "" # use the interpreter of the server |
235 else: |
235 else: |
236 if not venvName: |
236 if not venvName: |
237 venvName = Preferences.getDebugger("Python3VirtualEnv") |
237 venvName = Preferences.getDebugger("Python3VirtualEnv") |
238 if venvName == self.debugServer.getProjectEnvironmentString(): |
238 if venvName == self.debugServer.getProjectEnvironmentString(): |
239 project = ericApp().getObject("Project") |
239 project = ericApp().getObject("Project") |
499 @type bool (optional) |
499 @type bool (optional) |
500 @return client process object, a flag to indicate a network connection |
500 @return client process object, a flag to indicate a network connection |
501 and the name of the interpreter in case of a local execution |
501 and the name of the interpreter in case of a local execution |
502 @rtype tuple of (QProcess, bool, str) |
502 @rtype tuple of (QProcess, bool, str) |
503 """ |
503 """ |
504 # TODO: 'startRemoteForProject()' - implement the 'startRemote' logic like |
|
505 # for 'startRemote'. |
|
506 global origPathEnv |
504 global origPathEnv |
507 |
505 |
508 project = ericApp().getObject("Project") |
506 project = ericApp().getObject("Project") |
509 if not project.isDebugPropertiesLoaded(): |
507 if not project.isDebugPropertiesLoaded(): |
510 return None, self.__isNetworked, "" |
508 return None, self.__isNetworked, "" |
523 "--call-trace-optimization" |
521 "--call-trace-optimization" |
524 if Preferences.getDebugger("PythonCallTraceOptimization") |
522 if Preferences.getDebugger("PythonCallTraceOptimization") |
525 else "" |
523 else "" |
526 ) |
524 ) |
527 |
525 |
528 if venvName and venvName != self.debugServer.getProjectEnvironmentString(): |
526 if ( |
529 venvManager = ericApp().getObject("VirtualEnvManager") |
527 startRemote is True |
530 interpreter = venvManager.getVirtualenvInterpreter(venvName) |
528 or ( |
531 execPath = venvManager.getVirtualenvExecPath(venvName) |
529 startRemote is None |
|
530 and ( |
|
531 venvName == self.debugServer.getEricServerEnvironmentString() |
|
532 or self.__ericServerDebugging |
|
533 ) |
|
534 ) |
|
535 ) and ericApp().getObject("EricServer").isServerConnected(): |
|
536 # TODO change this once server environment definitions are supported |
|
537 startRemote = True |
|
538 venvName = self.debugServer.getEricServerEnvironmentString() |
|
539 interpreter = "" # use the interpreter of the server |
532 else: |
540 else: |
533 venvName = project.getProjectVenv() |
541 if venvName and venvName != self.debugServer.getProjectEnvironmentString(): |
534 execPath = project.getProjectExecPath() |
542 venvManager = ericApp().getObject("VirtualEnvManager") |
535 interpreter = project.getProjectInterpreter() |
543 interpreter = venvManager.getVirtualenvInterpreter(venvName) |
536 if interpreter == "": |
544 execPath = venvManager.getVirtualenvExecPath(venvName) |
537 EricMessageBox.critical( |
545 else: |
538 None, |
546 venvName = project.getProjectVenv() |
539 self.tr("Start Debugger"), |
547 execPath = project.getProjectExecPath() |
540 self.tr("""<p>No suitable Python3 environment configured.</p>"""), |
548 interpreter = project.getProjectInterpreter() |
541 ) |
549 if interpreter == "": |
542 return None, self.__isNetworked, "" |
550 EricMessageBox.critical( |
|
551 None, |
|
552 self.tr("Start Debugger"), |
|
553 self.tr("""<p>No suitable Python3 environment configured.</p>"""), |
|
554 ) |
|
555 return None, self.__isNetworked, "" |
543 |
556 |
544 self.__inShutdown = False |
557 self.__inShutdown = False |
545 |
558 |
546 self.__ericServerDebugging = False |
559 self.__ericServerDebugging = False |
547 |
560 |
601 else: |
614 else: |
602 # remote shell command is missing |
615 # remote shell command is missing |
603 return None, self.__isNetworked, "" |
616 return None, self.__isNetworked, "" |
604 |
617 |
605 # TODO: add server debugging for projects |
618 # TODO: add server debugging for projects |
|
619 elif startRemote and self.__ericServerDebuggerInterface is not None: |
|
620 # debugging via an eric-ide server |
|
621 self.translate = self.__ericServerTranslation |
|
622 self.__ericServerDebugging = True |
|
623 |
|
624 args = [] |
|
625 if noencoding: |
|
626 args.append(noencoding) |
|
627 if multiprocessEnabled: |
|
628 args.append(multiprocessEnabled) |
|
629 if callTraceOptimization: |
|
630 args.append(callTraceOptimization) |
|
631 self.__ericServerDebuggerInterface.startClient( |
|
632 interpreter, |
|
633 originalPathString, |
|
634 args, |
|
635 workingDir=workingDir, |
|
636 ) |
|
637 self.__startedVenv = venvName |
|
638 |
|
639 return None, self.__isNetworked, "" |
606 |
640 |
607 else: |
641 else: |
608 # local debugging code below |
642 # local debugging code below |
609 debugClient = project.getDebugProperty("DEBUGCLIENT") |
643 debugClient = project.getDebugProperty("DEBUGCLIENT") |
610 if not bool(debugClient) or not os.path.exists(debugClient): |
644 if not bool(debugClient) or not os.path.exists(debugClient): |