This part is repeated several times, I think it should be factorized in a helper function. Something like this:

    def _parseProjectName(self, name):
        if name == "_":
            if self.lastProjectName is None:
                raise YokadiException("No previous projet used")
            return self.lastProjectName
        else
            self.lastProjectName = name
            return name

Not sure if _parseProjectName() is the best name for the function, but you get the idea.