Add LICENSE
[pygdb.git] / DbgTerminal.py
index afeca3de2d2cf1cccbddbbc3c0477d661782c056..9d08866820acc3083048b589c78f4b54eacc30f2 100644 (file)
@@ -62,6 +62,24 @@ class DbgTerminal (vte.Terminal):
                        os.kill(self.childpid, 15);
                        self.childpid = None
 
+       def getClientExecuteable(self):
+               return string.split(self.clientCmd)[0]
+
+
+       def toAbsPath(self, path):
+               """convert path to an absolute path relative to the client
+               executable we debug."""
+               
+               #Current working dir
+               pwd = os.getcwd() + "/"
+
+               #executeable path
+               client = self.getClientExecuteable()
+               client = relToAbsPath(pwd, client)              
+
+               return relToAbsPath(client, path)
+
+
        def checkActivityChanged(self):
 
                try:
@@ -82,6 +100,8 @@ class DbgTerminal (vte.Terminal):
                                        for cb in self.gotInactiveCallback:
                                                cb(status, param)
                except Exception, e:
+                       import traceback
+                       traceback.print_exc()
                        print e
 
                return True
@@ -181,6 +201,9 @@ class DbgTerminal (vte.Terminal):
        def setStepin(self):
                raise NotImplementedError()
 
+       def setStepout(self):
+               raise NotImplementedError()
+
        def setQuit(self):
                raise NotImplementedError()
 
@@ -196,6 +219,9 @@ class DbgTerminal (vte.Terminal):
        def listCodeSnippet(self):
                raise NotImplementedError()
 
+       def getBacktrace(self):
+               raise NotImplementedError()
+
        def waitForPrompt(self, his):           
                raise NotImplementedError()
 
@@ -220,6 +246,25 @@ def quitHandler(*w):
                pass
 
 
+def relToAbsPath(absfile, relfile):
+       """When an absfile is given and a relfile is given by
+       relative paths relative to absfile, determine the abs
+       path of relfile"""
+
+       #Get directories except for "." parts
+       relsplit = filter(lambda x: x!=".", string.split(relfile, os.sep))
+       #Get the directories of absfile withouth the trailing filename 
+       abssplit = string.split(absfile, os.sep)[:-1]
+
+       #Determine number of ".." and remove them
+       up=0
+       while relsplit[0] == "..":
+               up += 1
+               del relsplit[0]
+               del abssplit[-1]
+
+       return string.join(abssplit + relsplit, os.sep)
+
 
 class DbgWindow (gtk.Window):