Added the auto fork options to the run dialog.

Sat, 13 Feb 2010 17:07:34 +0000

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Sat, 13 Feb 2010 17:07:34 +0000
changeset 112
16893e193e9d
parent 111
1887e3af7b74
child 113
33afff70d8ee

Added the auto fork options to the run dialog.

APIs/Python3/eric5.api file | annotate | diff | comparison | revisions
Debugger/DebugServer.py file | annotate | diff | comparison | revisions
Debugger/DebugUI.py file | annotate | diff | comparison | revisions
Debugger/DebuggerInterfaceNone.py file | annotate | diff | comparison | revisions
Debugger/DebuggerInterfacePython.py file | annotate | diff | comparison | revisions
Debugger/DebuggerInterfacePython3.py file | annotate | diff | comparison | revisions
Debugger/DebuggerInterfaceRuby.py file | annotate | diff | comparison | revisions
Debugger/StartDialog.py file | annotate | diff | comparison | revisions
Debugger/StartRunDialog.ui file | annotate | diff | comparison | revisions
Documentation/Help/source.qch file | annotate | diff | comparison | revisions
Documentation/Help/source.qhp file | annotate | diff | comparison | revisions
Documentation/Source/eric5.Debugger.DebugServer.html file | annotate | diff | comparison | revisions
Documentation/Source/eric5.Debugger.DebuggerInterfaceNone.html file | annotate | diff | comparison | revisions
Documentation/Source/eric5.Debugger.DebuggerInterfacePython.html file | annotate | diff | comparison | revisions
Documentation/Source/eric5.Debugger.DebuggerInterfacePython3.html file | annotate | diff | comparison | revisions
Documentation/Source/eric5.Debugger.DebuggerInterfaceRuby.html file | annotate | diff | comparison | revisions
Documentation/Source/eric5.Debugger.StartDialog.html file | annotate | diff | comparison | revisions
changelog file | annotate | diff | comparison | revisions
--- 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&amp;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>&lt;b>Commandline&lt;/b>
-&lt;p>Enter the commandline parameters in this field.&lt;/p></string>
+     <property name="whatsThis">
+      <string>&lt;b&gt;Commandline&lt;/b&gt;
+&lt;p&gt;Enter the commandline parameters in this field.&lt;/p&gt;</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>&amp;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>&lt;b>Working directory&lt;/b>
-&lt;p>Enter the working directory of the application to be debugged. Leave it empty to set the working directory to the executable directory.&lt;/p></string>
+     <property name="whatsThis">
+      <string>&lt;b&gt;Working directory&lt;/b&gt;
+&lt;p&gt;Enter the working directory of the application to be debugged. Leave it empty to set the working directory to the executable directory.&lt;/p&gt;</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>&lt;b>Select directory&lt;/b>
-&lt;p>Select the working directory via a directory selection dialog.&lt;/p></string>
+     <property name="whatsThis">
+      <string>&lt;b&gt;Select directory&lt;/b&gt;
+&lt;p&gt;Select the working directory via a directory selection dialog.&lt;/p&gt;</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>&amp;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>&lt;b>Environment&lt;/b>
-&lt;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'.&lt;/p>
-&lt;p>Example: var1=1 var2="hello world" var3+=":/tmp"&lt;/p></string>
+     <property name="whatsThis">
+      <string>&lt;b&gt;Environment&lt;/b&gt;
+&lt;p&gt;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'.&lt;/p&gt;
+&lt;p&gt;Example: var1=1 var2=&quot;hello world&quot; var3+=&quot;:/tmp&quot;&lt;/p&gt;</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>&lt;b>Report exceptions&lt;/b>
-&lt;p>Uncheck this in order to disable exception reporting.&lt;/p></string>
+     <property name="whatsThis">
+      <string>&lt;b&gt;Report exceptions&lt;/b&gt;
+&lt;p&gt;Uncheck this in order to disable exception reporting.&lt;/p&gt;</string>
      </property>
-     <property name="text" >
+     <property name="text">
       <string>Report &amp;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>&lt;b&gt;Clear interpreter window&lt;/b&gt;&lt;p&gt;This clears the display of the interpreter window before starting the debug client.&lt;/p&gt;</string>
+     </property>
+     <property name="text">
+      <string>Clear &amp;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>&lt;b>Clear interpreter window&lt;/b>&lt;p>This clears the display of the interpreter window before starting the debug client.&lt;/p></string>
-     </property>
-     <property name="text" >
-      <string>Clear &amp;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>&lt;b>Start in console&lt;/b>
-&lt;p>Select to start the debugger in a console window. The console command has to be configured on the Debugger-&amp;gt;General page&lt;/p></string>
+     <property name="whatsThis">
+      <string>&lt;b&gt;Start in console&lt;/b&gt;
+&lt;p&gt;Select to start the debugger in a console window. The console command has to be configured on the Debugger-&amp;gt;General page&lt;/p&gt;</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>&lt;b&gt;Fork without pausing&lt;/b&gt;
+&lt;p&gt;Select to go through the fork without asking making the forking decision based on the Parent/Child selection.&lt;/p&gt;</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>&lt;b&gt;Debug Child Process&lt;/b&gt;
+&lt;p&gt;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.&lt;/p&gt;</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>
Binary file Documentation/Help/source.qch has changed
--- 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

eric ide

mercurial