Sat, 13 Feb 2010 17:07:34 +0000
Added the auto fork options to the run dialog.
--- a/APIs/Python3/eric5.api Sat Feb 13 13:00:30 2010 +0000 +++ b/APIs/Python3/eric5.api Sat Feb 13 17:07:34 2010 +0000 @@ -575,7 +575,7 @@ eric5.Debugger.DebugServer.DebugServer.remoteLoad?4(fn, argv, wd, env, autoClearShell = True, tracePython = False, autoContinue = True, forProject = False, runInConsole = False, autoFork = False, forkChild = False) eric5.Debugger.DebugServer.DebugServer.remoteProfile?4(fn, argv, wd, env, autoClearShell = True, erase = False, forProject = False, runInConsole = False) eric5.Debugger.DebugServer.DebugServer.remoteRawInput?4(s) -eric5.Debugger.DebugServer.DebugServer.remoteRun?4(fn, argv, wd, env, autoClearShell = True, forProject = False, runInConsole = False) +eric5.Debugger.DebugServer.DebugServer.remoteRun?4(fn, argv, wd, env, autoClearShell = True, forProject = False, runInConsole = False, autoFork = False, forkChild = False) eric5.Debugger.DebugServer.DebugServer.remoteSetThread?4(tid) eric5.Debugger.DebugServer.DebugServer.remoteStatement?4(stmt) eric5.Debugger.DebugServer.DebugServer.remoteStep?4() @@ -644,7 +644,7 @@ eric5.Debugger.DebuggerInterfaceNone.DebuggerInterfaceNone.remoteLoad?4(fn, argv, wd, traceInterpreter = False, autoContinue = True, autoFork = False, forkChild = False) eric5.Debugger.DebuggerInterfaceNone.DebuggerInterfaceNone.remoteProfile?4(fn, argv, wd, erase = False) eric5.Debugger.DebuggerInterfaceNone.DebuggerInterfaceNone.remoteRawInput?4(s) -eric5.Debugger.DebuggerInterfaceNone.DebuggerInterfaceNone.remoteRun?4(fn, argv, wd) +eric5.Debugger.DebuggerInterfaceNone.DebuggerInterfaceNone.remoteRun?4(fn, argv, wd, autoFork = False, forkChild = False) eric5.Debugger.DebuggerInterfaceNone.DebuggerInterfaceNone.remoteSetThread?4(tid) eric5.Debugger.DebuggerInterfaceNone.DebuggerInterfaceNone.remoteStatement?4(stmt) eric5.Debugger.DebuggerInterfaceNone.DebuggerInterfaceNone.remoteStep?4() @@ -685,7 +685,7 @@ eric5.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.remoteLoad?4(fn, argv, wd, traceInterpreter = False, autoContinue = True, autoFork = False, forkChild = False) eric5.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.remoteProfile?4(fn, argv, wd, erase = False) eric5.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.remoteRawInput?4(s) -eric5.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.remoteRun?4(fn, argv, wd) +eric5.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.remoteRun?4(fn, argv, wd, autoFork = False, forkChild = False) eric5.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.remoteSetThread?4(tid) eric5.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.remoteStatement?4(stmt) eric5.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.remoteStep?4() @@ -726,7 +726,7 @@ eric5.Debugger.DebuggerInterfacePython3.DebuggerInterfacePython3.remoteLoad?4(fn, argv, wd, traceInterpreter = False, autoContinue = True, autoFork = False, forkChild = False) eric5.Debugger.DebuggerInterfacePython3.DebuggerInterfacePython3.remoteProfile?4(fn, argv, wd, erase = False) eric5.Debugger.DebuggerInterfacePython3.DebuggerInterfacePython3.remoteRawInput?4(s) -eric5.Debugger.DebuggerInterfacePython3.DebuggerInterfacePython3.remoteRun?4(fn, argv, wd) +eric5.Debugger.DebuggerInterfacePython3.DebuggerInterfacePython3.remoteRun?4(fn, argv, wd, autoFork = False, forkChild = False) eric5.Debugger.DebuggerInterfacePython3.DebuggerInterfacePython3.remoteSetThread?4(tid) eric5.Debugger.DebuggerInterfacePython3.DebuggerInterfacePython3.remoteStatement?4(stmt) eric5.Debugger.DebuggerInterfacePython3.DebuggerInterfacePython3.remoteStep?4() @@ -768,7 +768,7 @@ eric5.Debugger.DebuggerInterfaceRuby.DebuggerInterfaceRuby.remoteLoad?4(fn, argv, wd, traceInterpreter = False, autoContinue = True, autoFork = False, forkChild = False) eric5.Debugger.DebuggerInterfaceRuby.DebuggerInterfaceRuby.remoteProfile?4(fn, argv, wd, erase = False) eric5.Debugger.DebuggerInterfaceRuby.DebuggerInterfaceRuby.remoteRawInput?4(s) -eric5.Debugger.DebuggerInterfaceRuby.DebuggerInterfaceRuby.remoteRun?4(fn, argv, wd) +eric5.Debugger.DebuggerInterfaceRuby.DebuggerInterfaceRuby.remoteRun?4(fn, argv, wd, autoFork = False, forkChild = False) eric5.Debugger.DebuggerInterfaceRuby.DebuggerInterfaceRuby.remoteSetThread?4(tid) eric5.Debugger.DebuggerInterfaceRuby.DebuggerInterfaceRuby.remoteStatement?4(stmt) eric5.Debugger.DebuggerInterfaceRuby.DebuggerInterfaceRuby.remoteStep?4() @@ -808,6 +808,7 @@ eric5.Debugger.StartDialog.StartDialog.getData?4() eric5.Debugger.StartDialog.StartDialog.getDebugData?4() eric5.Debugger.StartDialog.StartDialog.getProfilingData?4() +eric5.Debugger.StartDialog.StartDialog.getRunData?4() eric5.Debugger.StartDialog.StartDialog.on_buttonBox_clicked?4(button) eric5.Debugger.StartDialog.StartDialog.on_dirButton_clicked?4() eric5.Debugger.StartDialog.StartDialog.on_modFuncCombo_editTextChanged?4()
--- a/Debugger/DebugServer.py Sat Feb 13 13:00:30 2010 +0000 +++ b/Debugger/DebugServer.py Sat Feb 13 17:07:34 2010 +0000 @@ -652,7 +652,8 @@ self.__restoreWatchpoints() def remoteRun(self, fn, argv, wd, env, autoClearShell = True, - forProject = False, runInConsole = False): + forProject = False, runInConsole = False, + autoFork = False, forkChild = False): """ Public method to load a new program to run. @@ -665,6 +666,8 @@ @keyparam forProject flag indicating a project related action (boolean) @keyparam runInConsole flag indicating to start the debugger in a console window (boolean) + @keyparam autoFork flag indicating the automatic fork mode (boolean) + @keyparam forkChild flag indicating to debug the child after forking (boolean) """ self.__autoClearShell = autoClearShell @@ -677,7 +680,7 @@ self.remoteEnvironment(env) - self.debuggerInterface.remoteRun(fn, argv, wd) + self.debuggerInterface.remoteRun(fn, argv, wd, autoFork, forkChild) self.debugging = False def remoteCoverage(self, fn, argv, wd, env, autoClearShell = True,
--- a/Debugger/DebugUI.py Sat Feb 13 13:00:30 2010 +0000 +++ b/Debugger/DebugUI.py Sat Feb 13 17:07:34 2010 +0000 @@ -1561,9 +1561,12 @@ cap = self.trUtf8("Run Script") dlg = StartDialog(cap, self.argvHistory, self.wdHistory, self.envHistory, self.exceptions, self.ui, 1, - autoClearShell = self.autoClearShell) + autoClearShell = self.autoClearShell, + autoFork = self.forkAutomatically, + forkChild = self.forkIntoChild) if dlg.exec_() == QDialog.Accepted: argv, wd, env, exceptions, clearShell, clearHistories, console = dlg.getData() + forkAutomatically, forkIntoChild = dlg.getRunData() if runProject: fn = self.project.getMainScript(1) @@ -1615,6 +1618,10 @@ # Save the run in console flag self.runInConsole = console + # Save the forking flags + self.forkAutomatically = forkAutomatically + self.forkIntoChild = forkIntoChild + # Hide all error highlights self.viewmanager.unhighlight() @@ -1626,7 +1633,8 @@ # Ask the client to open the new program. self.debugServer.remoteRun(fn, argv, wd, env, autoClearShell = self.autoClearShell, forProject = runProject, - runInConsole = console) + runInConsole = console, autoFork = forkAutomatically, + forkChild = forkIntoChild) self.stopAct.setEnabled(True) @@ -1793,20 +1801,25 @@ self.debugServer.remoteLoad(fn, argv, wd, env, autoClearShell = self.autoClearShell, tracePython = self.tracePython, autoContinue = self.autoContinue, forProject = forProject, - runInConsole = self.runInConsole) + runInConsole = self.runInConsole, autoFork = self.forkAutomatically, + forkChild = self.forkIntoChild) # Signal that we have started a debugging session self.emit(SIGNAL('debuggingStarted'), fn) + elif self.lastStartAction in [3, 4]: # Ask the client to run the new program. self.debugServer.remoteRun(fn, argv, wd, env, autoClearShell = self.autoClearShell, forProject = forProject, - runInConsole = self.runInConsole) + runInConsole = self.runInConsole, autoFork = self.forkAutomatically, + forkChild = self.forkIntoChild) + elif self.lastStartAction in [5, 6]: # Ask the client to coverage run the new program. self.debugServer.remoteCoverage(fn, argv, wd, env, autoClearShell = self.autoClearShell, erase = self.eraseCoverage, forProject = forProject, runInConsole = self.runInConsole) + elif self.lastStartAction in [7, 8]: # Ask the client to profile run the new program. self.debugServer.remoteProfile(fn, argv, wd, env,
--- a/Debugger/DebuggerInterfaceNone.py Sat Feb 13 13:00:30 2010 +0000 +++ b/Debugger/DebuggerInterfaceNone.py Sat Feb 13 17:07:34 2010 +0000 @@ -134,13 +134,15 @@ """ return - def remoteRun(self, fn, argv, wd): + def remoteRun(self, fn, argv, wd, autoFork = False, forkChild = False): """ Public method to load a new program to run. @param fn the filename to run (string) @param argv the commandline arguments to pass to the program (string) @param wd the working directory for the program (string) + @keyparam autoFork flag indicating the automatic fork mode (boolean) + @keyparam forkChild flag indicating to debug the child after forking (boolean) """ return
--- a/Debugger/DebuggerInterfacePython.py Sat Feb 13 13:00:30 2010 +0000 +++ b/Debugger/DebuggerInterfacePython.py Sat Feb 13 17:07:34 2010 +0000 @@ -437,16 +437,19 @@ (RequestLoad, wd, fn, str(Utilities.parseOptionString(argv)), traceInterpreter)) - def remoteRun(self, fn, argv, wd): + def remoteRun(self, fn, argv, wd, autoFork = False, forkChild = False): """ Public method to load a new program to run. @param fn the filename to run (string) @param argv the commandline arguments to pass to the program (string) @param wd the working directory for the program (string) + @keyparam autoFork flag indicating the automatic fork mode (boolean) + @keyparam forkChild flag indicating to debug the child after forking (boolean) """ wd = self.translate(wd, False) fn = self.translate(os.path.abspath(fn), False) + self.__sendCommand('%s%s\n' % (RequestForkMode, repr((autoFork, forkChild)))) self.__sendCommand('%s%s|%s|%s\n' % \ (RequestRun, wd, fn, str(Utilities.parseOptionString(argv))))
--- a/Debugger/DebuggerInterfacePython3.py Sat Feb 13 13:00:30 2010 +0000 +++ b/Debugger/DebuggerInterfacePython3.py Sat Feb 13 17:07:34 2010 +0000 @@ -436,16 +436,19 @@ (RequestLoad, wd, fn, str(Utilities.parseOptionString(argv)), traceInterpreter)) - def remoteRun(self, fn, argv, wd): + def remoteRun(self, fn, argv, wd, autoFork = False, forkChild = False): """ Public method to load a new program to run. @param fn the filename to run (string) @param argv the commandline arguments to pass to the program (string) @param wd the working directory for the program (string) + @keyparam autoFork flag indicating the automatic fork mode (boolean) + @keyparam forkChild flag indicating to debug the child after forking (boolean) """ wd = self.translate(wd, False) fn = self.translate(os.path.abspath(fn), False) + self.__sendCommand('%s%s\n' % (RequestForkMode, repr((autoFork, forkChild)))) self.__sendCommand('%s%s|%s|%s\n' % \ (RequestRun, wd, fn, str(Utilities.parseOptionString(argv))))
--- a/Debugger/DebuggerInterfaceRuby.py Sat Feb 13 13:00:30 2010 +0000 +++ b/Debugger/DebuggerInterfaceRuby.py Sat Feb 13 17:07:34 2010 +0000 @@ -413,13 +413,16 @@ (RequestLoad, wd, fn, str(Utilities.parseOptionString(argv)), traceInterpreter)) - def remoteRun(self, fn, argv, wd): + def remoteRun(self, fn, argv, wd, autoFork = False, forkChild = False): """ Public method to load a new program to run. @param fn the filename to run (string) @param argv the commandline arguments to pass to the program (string) @param wd the working directory for the program (string) + @keyparam autoFork flag indicating the automatic fork mode (boolean) (ignored) + @keyparam forkChild flag indicating to debug the child after forking + (boolean) (ignored) """ wd = self.translate(wd, False) fn = self.translate(os.path.abspath(fn), False)
--- a/Debugger/StartDialog.py Sat Feb 13 13:00:30 2010 +0000 +++ b/Debugger/StartDialog.py Sat Feb 13 17:07:34 2010 +0000 @@ -100,7 +100,11 @@ self.ui.forkModeCheckBox.setChecked(autoFork) self.ui.forkChildCheckBox.setChecked(forkChild) - if type == 3: # start coverage or profile dialog + if type == 1: # start run dialog + self.ui.forkModeCheckBox.setChecked(autoFork) + self.ui.forkChildCheckBox.setChecked(forkChild) + + if type == 3: # start coverage or profile dialog self.ui.eraseCheckBox.setChecked(True) self.__clearHistoryLists = False @@ -163,6 +167,18 @@ self.ui.forkModeCheckBox.isChecked(), self.ui.forkChildCheckBox.isChecked()) + def getRunData(self): + """ + Public method to retrieve the debug related data entered into this dialog. + + @return a tuple of a flag indicating, that the debugger should fork automatically + (boolean) and a flag indicating, that the debugger should debug the child + process after forking automatically (boolean) + """ + if self.type == 1: + return (self.ui.forkModeCheckBox.isChecked(), + self.ui.forkChildCheckBox.isChecked()) + def getCoverageData(self): """ Public method to retrieve the coverage related data entered into this dialog.
--- a/Debugger/StartRunDialog.ui Sat Feb 13 13:00:30 2010 +0000 +++ b/Debugger/StartRunDialog.ui Sat Feb 13 17:07:34 2010 +0000 @@ -1,216 +1,257 @@ -<ui version="4.0" > +<?xml version="1.0" encoding="UTF-8"?> +<ui version="4.0"> <class>StartRunDialog</class> - <widget class="QDialog" name="StartRunDialog" > - <property name="geometry" > + <widget class="QDialog" name="StartRunDialog"> + <property name="geometry"> <rect> <x>0</x> <y>0</y> <width>488</width> - <height>178</height> + <height>242</height> </rect> </property> - <property name="windowTitle" > + <property name="windowTitle"> <string>Start running</string> </property> - <property name="sizeGripEnabled" > + <property name="sizeGripEnabled"> <bool>true</bool> </property> - <layout class="QGridLayout" name="gridLayout" > - <item row="0" column="0" > - <widget class="QLabel" name="TextLabel1" > - <property name="text" > + <layout class="QGridLayout" name="gridLayout"> + <item row="0" column="0"> + <widget class="QLabel" name="TextLabel1"> + <property name="text"> <string>Command&line:</string> </property> - <property name="buddy" > + <property name="buddy"> <cstring>cmdlineCombo</cstring> </property> </widget> </item> - <item row="0" column="1" colspan="3" > - <widget class="QComboBox" name="cmdlineCombo" > - <property name="sizePolicy" > - <sizepolicy vsizetype="Fixed" hsizetype="Expanding" > + <item row="0" column="1" colspan="3"> + <widget class="QComboBox" name="cmdlineCombo"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Expanding" vsizetype="Fixed"> <horstretch>0</horstretch> <verstretch>0</verstretch> </sizepolicy> </property> - <property name="toolTip" > + <property name="toolTip"> <string>Enter the commandline parameters</string> </property> - <property name="whatsThis" > - <string><b>Commandline</b> -<p>Enter the commandline parameters in this field.</p></string> + <property name="whatsThis"> + <string><b>Commandline</b> +<p>Enter the commandline parameters in this field.</p></string> </property> - <property name="editable" > + <property name="editable"> <bool>true</bool> </property> - <property name="insertPolicy" > + <property name="insertPolicy"> <enum>QComboBox::InsertAtTop</enum> </property> - <property name="autoCompletion" > + <property name="autoCompletion"> <bool>true</bool> </property> - <property name="duplicatesEnabled" > + <property name="duplicatesEnabled"> <bool>false</bool> </property> </widget> </item> - <item row="1" column="0" > - <widget class="QLabel" name="TextLabel2" > - <property name="text" > + <item row="1" column="0"> + <widget class="QLabel" name="TextLabel2"> + <property name="text"> <string>&Working directory:</string> </property> - <property name="buddy" > + <property name="buddy"> <cstring>workdirCombo</cstring> </property> </widget> </item> - <item row="1" column="1" colspan="2" > - <widget class="QComboBox" name="workdirCombo" > - <property name="sizePolicy" > - <sizepolicy vsizetype="Fixed" hsizetype="Expanding" > + <item row="1" column="1" colspan="2"> + <widget class="QComboBox" name="workdirCombo"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Expanding" vsizetype="Fixed"> <horstretch>0</horstretch> <verstretch>0</verstretch> </sizepolicy> </property> - <property name="toolTip" > + <property name="toolTip"> <string>Enter the working directory</string> </property> - <property name="whatsThis" > - <string><b>Working directory</b> -<p>Enter the working directory of the application to be debugged. Leave it empty to set the working directory to the executable directory.</p></string> + <property name="whatsThis"> + <string><b>Working directory</b> +<p>Enter the working directory of the application to be debugged. Leave it empty to set the working directory to the executable directory.</p></string> </property> - <property name="editable" > + <property name="editable"> <bool>true</bool> </property> - <property name="insertPolicy" > + <property name="insertPolicy"> <enum>QComboBox::InsertAtTop</enum> </property> - <property name="autoCompletion" > + <property name="autoCompletion"> <bool>true</bool> </property> - <property name="duplicatesEnabled" > + <property name="duplicatesEnabled"> <bool>false</bool> </property> </widget> </item> - <item row="1" column="3" > - <widget class="QPushButton" name="dirButton" > - <property name="toolTip" > + <item row="1" column="3"> + <widget class="QPushButton" name="dirButton"> + <property name="toolTip"> <string>Select directory using a directory selection dialog</string> </property> - <property name="whatsThis" > - <string><b>Select directory</b> -<p>Select the working directory via a directory selection dialog.</p></string> + <property name="whatsThis"> + <string><b>Select directory</b> +<p>Select the working directory via a directory selection dialog.</p></string> </property> - <property name="text" > + <property name="text"> <string>...</string> </property> </widget> </item> - <item row="2" column="0" > - <widget class="QLabel" name="textLabel1" > - <property name="text" > + <item row="2" column="0"> + <widget class="QLabel" name="textLabel1"> + <property name="text"> <string>&Environment:</string> </property> - <property name="buddy" > + <property name="buddy"> <cstring>environmentCombo</cstring> </property> </widget> </item> - <item row="2" column="1" colspan="3" > - <widget class="QComboBox" name="environmentCombo" > - <property name="sizePolicy" > - <sizepolicy vsizetype="Fixed" hsizetype="Expanding" > + <item row="2" column="1" colspan="3"> + <widget class="QComboBox" name="environmentCombo"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Expanding" vsizetype="Fixed"> <horstretch>0</horstretch> <verstretch>0</verstretch> </sizepolicy> </property> - <property name="toolTip" > + <property name="toolTip"> <string>Enter the environment variables to be set.</string> </property> - <property name="whatsThis" > - <string><b>Environment</b> -<p>Enter the environment variables to be set for the program. The individual settings must be separated by whitespace and be given in the form 'var=value'. In order to add to an environment variable, enter it in the form 'var+=value'.</p> -<p>Example: var1=1 var2="hello world" var3+=":/tmp"</p></string> + <property name="whatsThis"> + <string><b>Environment</b> +<p>Enter the environment variables to be set for the program. The individual settings must be separated by whitespace and be given in the form 'var=value'. In order to add to an environment variable, enter it in the form 'var+=value'.</p> +<p>Example: var1=1 var2="hello world" var3+=":/tmp"</p></string> </property> - <property name="editable" > + <property name="editable"> <bool>true</bool> </property> - <property name="insertPolicy" > + <property name="insertPolicy"> <enum>QComboBox::InsertAtTop</enum> </property> - <property name="autoCompletion" > + <property name="autoCompletion"> <bool>true</bool> </property> - <property name="duplicatesEnabled" > + <property name="duplicatesEnabled"> <bool>false</bool> </property> </widget> </item> - <item row="3" column="0" colspan="2" > - <widget class="QCheckBox" name="exceptionCheckBox" > - <property name="toolTip" > + <item row="3" column="0" colspan="2"> + <widget class="QCheckBox" name="exceptionCheckBox"> + <property name="toolTip"> <string>Uncheck to disable exception reporting</string> </property> - <property name="whatsThis" > - <string><b>Report exceptions</b> -<p>Uncheck this in order to disable exception reporting.</p></string> + <property name="whatsThis"> + <string><b>Report exceptions</b> +<p>Uncheck this in order to disable exception reporting.</p></string> </property> - <property name="text" > + <property name="text"> <string>Report &exceptions</string> </property> - <property name="shortcut" > + <property name="shortcut"> <string>Alt+E</string> </property> - <property name="checked" > + <property name="checked"> + <bool>true</bool> + </property> + </widget> + </item> + <item row="3" column="2" colspan="2"> + <widget class="QCheckBox" name="clearShellCheckBox"> + <property name="toolTip"> + <string>Select to clear the display of the interpreter window</string> + </property> + <property name="whatsThis"> + <string><b>Clear interpreter window</b><p>This clears the display of the interpreter window before starting the debug client.</p></string> + </property> + <property name="text"> + <string>Clear &interpreter window</string> + </property> + <property name="checked"> <bool>true</bool> </property> </widget> </item> - <item row="3" column="2" colspan="2" > - <widget class="QCheckBox" name="clearShellCheckBox" > - <property name="toolTip" > - <string>Select to clear the display of the interpreter window</string> - </property> - <property name="whatsThis" > - <string><b>Clear interpreter window</b><p>This clears the display of the interpreter window before starting the debug client.</p></string> - </property> - <property name="text" > - <string>Clear &interpreter window</string> - </property> - <property name="checked" > - <bool>true</bool> - </property> - </widget> - </item> - <item row="4" column="0" colspan="2" > - <widget class="QCheckBox" name="consoleCheckBox" > - <property name="toolTip" > + <item row="4" column="0"> + <widget class="QCheckBox" name="consoleCheckBox"> + <property name="toolTip"> <string>Select to start the debugger in a console window</string> </property> - <property name="whatsThis" > - <string><b>Start in console</b> -<p>Select to start the debugger in a console window. The console command has to be configured on the Debugger-&gt;General page</p></string> + <property name="whatsThis"> + <string><b>Start in console</b> +<p>Select to start the debugger in a console window. The console command has to be configured on the Debugger-&gt;General page</p></string> </property> - <property name="text" > + <property name="text"> <string>Start in console</string> </property> </widget> </item> - <item row="5" column="0" colspan="4" > - <widget class="QDialogButtonBox" name="buttonBox" > - <property name="orientation" > + <item row="5" column="0" colspan="4"> + <widget class="QGroupBox" name="groupBox"> + <property name="title"> + <string>Forking</string> + </property> + <layout class="QHBoxLayout" name="horizontalLayout"> + <item> + <widget class="QCheckBox" name="forkModeCheckBox"> + <property name="toolTip"> + <string>Select to go through the fork without asking</string> + </property> + <property name="whatsThis"> + <string><b>Fork without pausing</b> +<p>Select to go through the fork without asking making the forking decision based on the Parent/Child selection.</p></string> + </property> + <property name="text"> + <string>Fork without pausing</string> + </property> + </widget> + </item> + <item> + <widget class="QCheckBox" name="forkChildCheckBox"> + <property name="enabled"> + <bool>false</bool> + </property> + <property name="toolTip"> + <string>Select to debug the child process after forking</string> + </property> + <property name="whatsThis"> + <string><b>Debug Child Process</b> +<p>Select to debug the child process after forking. If it is not selected, the parent process will be debugged. This has no effect, if forking without pausing is not selected.</p></string> + </property> + <property name="text"> + <string>Debug Child Process</string> + </property> + </widget> + </item> + </layout> + </widget> + </item> + <item row="6" column="0" colspan="4"> + <widget class="QDialogButtonBox" name="buttonBox"> + <property name="orientation"> <enum>Qt::Horizontal</enum> </property> - <property name="standardButtons" > + <property name="standardButtons"> <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set> </property> </widget> </item> </layout> </widget> - <layoutdefault spacing="6" margin="6" /> + <layoutdefault spacing="6" margin="6"/> <pixmapfunction>qPixmapFromMimeSource</pixmapfunction> <tabstops> <tabstop>cmdlineCombo</tabstop> @@ -220,6 +261,8 @@ <tabstop>exceptionCheckBox</tabstop> <tabstop>clearShellCheckBox</tabstop> <tabstop>consoleCheckBox</tabstop> + <tabstop>forkModeCheckBox</tabstop> + <tabstop>forkChildCheckBox</tabstop> <tabstop>buttonBox</tabstop> </tabstops> <resources/> @@ -230,11 +273,11 @@ <receiver>StartRunDialog</receiver> <slot>accept()</slot> <hints> - <hint type="sourcelabel" > - <x>31</x> - <y>131</y> + <hint type="sourcelabel"> + <x>35</x> + <y>237</y> </hint> - <hint type="destinationlabel" > + <hint type="destinationlabel"> <x>34</x> <y>150</y> </hint> @@ -246,15 +289,31 @@ <receiver>StartRunDialog</receiver> <slot>reject()</slot> <hints> - <hint type="sourcelabel" > - <x>150</x> - <y>135</y> + <hint type="sourcelabel"> + <x>154</x> + <y>237</y> </hint> - <hint type="destinationlabel" > + <hint type="destinationlabel"> <x>150</x> <y>148</y> </hint> </hints> </connection> + <connection> + <sender>forkModeCheckBox</sender> + <signal>toggled(bool)</signal> + <receiver>forkChildCheckBox</receiver> + <slot>setEnabled(bool)</slot> + <hints> + <hint type="sourcelabel"> + <x>121</x> + <y>190</y> + </hint> + <hint type="destinationlabel"> + <x>265</x> + <y>191</y> + </hint> + </hints> + </connection> </connections> </ui>
--- a/Documentation/Help/source.qhp Sat Feb 13 13:00:30 2010 +0000 +++ b/Documentation/Help/source.qhp Sat Feb 13 17:07:34 2010 +0000 @@ -1936,6 +1936,7 @@ <keyword name="StartDialog.getData" id="StartDialog.getData" ref="eric5.Debugger.StartDialog.html#StartDialog.getData" /> <keyword name="StartDialog.getDebugData" id="StartDialog.getDebugData" ref="eric5.Debugger.StartDialog.html#StartDialog.getDebugData" /> <keyword name="StartDialog.getProfilingData" id="StartDialog.getProfilingData" ref="eric5.Debugger.StartDialog.html#StartDialog.getProfilingData" /> + <keyword name="StartDialog.getRunData" id="StartDialog.getRunData" ref="eric5.Debugger.StartDialog.html#StartDialog.getRunData" /> <keyword name="StartDialog.on_buttonBox_clicked" id="StartDialog.on_buttonBox_clicked" ref="eric5.Debugger.StartDialog.html#StartDialog.on_buttonBox_clicked" /> <keyword name="StartDialog.on_dirButton_clicked" id="StartDialog.on_dirButton_clicked" ref="eric5.Debugger.StartDialog.html#StartDialog.on_dirButton_clicked" /> <keyword name="StartDialog.on_modFuncCombo_editTextChanged" id="StartDialog.on_modFuncCombo_editTextChanged" ref="eric5.Debugger.StartDialog.html#StartDialog.on_modFuncCombo_editTextChanged" />
--- a/Documentation/Source/eric5.Debugger.DebugServer.html Sat Feb 13 13:00:30 2010 +0000 +++ b/Documentation/Source/eric5.Debugger.DebugServer.html Sat Feb 13 17:07:34 2010 +0000 @@ -1410,7 +1410,7 @@ </dd> </dl><a NAME="DebugServer.remoteRun" ID="DebugServer.remoteRun"></a> <h4>DebugServer.remoteRun</h4> -<b>remoteRun</b>(<i>fn, argv, wd, env, autoClearShell = True, forProject = False, runInConsole = False</i>) +<b>remoteRun</b>(<i>fn, argv, wd, env, autoClearShell = True, forProject = False, runInConsole = False, autoFork = False, forkChild = False</i>) <p> Public method to load a new program to run. </p><dl> @@ -1437,6 +1437,12 @@ <dd> flag indicating to start the debugger in a console window (boolean) +</dd><dt><i>autoFork=</i></dt> +<dd> +flag indicating the automatic fork mode (boolean) +</dd><dt><i>forkChild=</i></dt> +<dd> +flag indicating to debug the child after forking (boolean) </dd> </dl><a NAME="DebugServer.remoteSetThread" ID="DebugServer.remoteSetThread"></a> <h4>DebugServer.remoteSetThread</h4>
--- a/Documentation/Source/eric5.Debugger.DebuggerInterfaceNone.html Sat Feb 13 13:00:30 2010 +0000 +++ b/Documentation/Source/eric5.Debugger.DebuggerInterfaceNone.html Sat Feb 13 17:07:34 2010 +0000 @@ -472,7 +472,7 @@ </dd> </dl><a NAME="DebuggerInterfaceNone.remoteRun" ID="DebuggerInterfaceNone.remoteRun"></a> <h4>DebuggerInterfaceNone.remoteRun</h4> -<b>remoteRun</b>(<i>fn, argv, wd</i>) +<b>remoteRun</b>(<i>fn, argv, wd, autoFork = False, forkChild = False</i>) <p> Public method to load a new program to run. </p><dl> @@ -485,6 +485,12 @@ </dd><dt><i>wd</i></dt> <dd> the working directory for the program (string) +</dd><dt><i>autoFork=</i></dt> +<dd> +flag indicating the automatic fork mode (boolean) +</dd><dt><i>forkChild=</i></dt> +<dd> +flag indicating to debug the child after forking (boolean) </dd> </dl><a NAME="DebuggerInterfaceNone.remoteSetThread" ID="DebuggerInterfaceNone.remoteSetThread"></a> <h4>DebuggerInterfaceNone.remoteSetThread</h4>
--- a/Documentation/Source/eric5.Debugger.DebuggerInterfacePython.html Sat Feb 13 13:00:30 2010 +0000 +++ b/Documentation/Source/eric5.Debugger.DebuggerInterfacePython.html Sat Feb 13 17:07:34 2010 +0000 @@ -569,7 +569,7 @@ </dd> </dl><a NAME="DebuggerInterfacePython.remoteRun" ID="DebuggerInterfacePython.remoteRun"></a> <h4>DebuggerInterfacePython.remoteRun</h4> -<b>remoteRun</b>(<i>fn, argv, wd</i>) +<b>remoteRun</b>(<i>fn, argv, wd, autoFork = False, forkChild = False</i>) <p> Public method to load a new program to run. </p><dl> @@ -582,6 +582,12 @@ </dd><dt><i>wd</i></dt> <dd> the working directory for the program (string) +</dd><dt><i>autoFork=</i></dt> +<dd> +flag indicating the automatic fork mode (boolean) +</dd><dt><i>forkChild=</i></dt> +<dd> +flag indicating to debug the child after forking (boolean) </dd> </dl><a NAME="DebuggerInterfacePython.remoteSetThread" ID="DebuggerInterfacePython.remoteSetThread"></a> <h4>DebuggerInterfacePython.remoteSetThread</h4>
--- a/Documentation/Source/eric5.Debugger.DebuggerInterfacePython3.html Sat Feb 13 13:00:30 2010 +0000 +++ b/Documentation/Source/eric5.Debugger.DebuggerInterfacePython3.html Sat Feb 13 17:07:34 2010 +0000 @@ -569,7 +569,7 @@ </dd> </dl><a NAME="DebuggerInterfacePython3.remoteRun" ID="DebuggerInterfacePython3.remoteRun"></a> <h4>DebuggerInterfacePython3.remoteRun</h4> -<b>remoteRun</b>(<i>fn, argv, wd</i>) +<b>remoteRun</b>(<i>fn, argv, wd, autoFork = False, forkChild = False</i>) <p> Public method to load a new program to run. </p><dl> @@ -582,6 +582,12 @@ </dd><dt><i>wd</i></dt> <dd> the working directory for the program (string) +</dd><dt><i>autoFork=</i></dt> +<dd> +flag indicating the automatic fork mode (boolean) +</dd><dt><i>forkChild=</i></dt> +<dd> +flag indicating to debug the child after forking (boolean) </dd> </dl><a NAME="DebuggerInterfacePython3.remoteSetThread" ID="DebuggerInterfacePython3.remoteSetThread"></a> <h4>DebuggerInterfacePython3.remoteSetThread</h4>
--- a/Documentation/Source/eric5.Debugger.DebuggerInterfaceRuby.html Sat Feb 13 13:00:30 2010 +0000 +++ b/Documentation/Source/eric5.Debugger.DebuggerInterfaceRuby.html Sat Feb 13 17:07:34 2010 +0000 @@ -562,7 +562,7 @@ </dd> </dl><a NAME="DebuggerInterfaceRuby.remoteRun" ID="DebuggerInterfaceRuby.remoteRun"></a> <h4>DebuggerInterfaceRuby.remoteRun</h4> -<b>remoteRun</b>(<i>fn, argv, wd</i>) +<b>remoteRun</b>(<i>fn, argv, wd, autoFork = False, forkChild = False</i>) <p> Public method to load a new program to run. </p><dl> @@ -575,6 +575,13 @@ </dd><dt><i>wd</i></dt> <dd> the working directory for the program (string) +</dd><dt><i>autoFork=</i></dt> +<dd> +flag indicating the automatic fork mode (boolean) (ignored) +</dd><dt><i>forkChild=</i></dt> +<dd> +flag indicating to debug the child after forking + (boolean) (ignored) </dd> </dl><a NAME="DebuggerInterfaceRuby.remoteSetThread" ID="DebuggerInterfaceRuby.remoteSetThread"></a> <h4>DebuggerInterfaceRuby.remoteSetThread</h4>
--- a/Documentation/Source/eric5.Debugger.StartDialog.html Sat Feb 13 13:00:30 2010 +0000 +++ b/Documentation/Source/eric5.Debugger.StartDialog.html Sat Feb 13 17:07:34 2010 +0000 @@ -77,6 +77,9 @@ <td><a href="#StartDialog.getProfilingData">getProfilingData</a></td> <td>Public method to retrieve the profiling related data entered into this dialog.</td> </tr><tr> +<td><a href="#StartDialog.getRunData">getRunData</a></td> +<td>Public method to retrieve the debug related data entered into this dialog.</td> +</tr><tr> <td><a href="#StartDialog.on_buttonBox_clicked">on_buttonBox_clicked</a></td> <td>Private slot called by a button of the button box clicked.</td> </tr><tr> @@ -194,6 +197,18 @@ <dd> flag indicating erasure of profiling info (boolean) </dd> +</dl><a NAME="StartDialog.getRunData" ID="StartDialog.getRunData"></a> +<h4>StartDialog.getRunData</h4> +<b>getRunData</b>(<i></i>) +<p> + Public method to retrieve the debug related data entered into this dialog. +</p><dl> +<dt>Returns:</dt> +<dd> +a tuple of a flag indicating, that the debugger should fork automatically + (boolean) and a flag indicating, that the debugger should debug the child + process after forking automatically (boolean) +</dd> </dl><a NAME="StartDialog.on_buttonBox_clicked" ID="StartDialog.on_buttonBox_clicked"></a> <h4>StartDialog.on_buttonBox_clicked</h4> <b>on_buttonBox_clicked</b>(<i>button</i>)
--- a/changelog Sat Feb 13 13:00:30 2010 +0000 +++ b/changelog Sat Feb 13 17:07:34 2010 +0000 @@ -6,6 +6,7 @@ - extendend the predefined template variables by "project_path", "clipboard", "cur_select", "insertion", "select_start" and "select_end" +- added the auto fork options to the run dialog Version 5.0-snapshot-20100206: - bug fixes