'Run a Python script'

@Slot()
def run_script(self, filename=None, silent=False, set_focus=False, args=None):

    if (filename is None):
        self.shell.interpreter.restore_stds()
        (filename, _selfilter) = getopenfilename(self, _('Run    Python    script'), getcwd(), (_('Python    scripts') + '    (*.py    ;    *.pyw    ;    *.ipy)'))
        self.shell.interpreter.redirect_stds()
        if filename:
            os.chdir(osp.dirname(filename))
            filename = osp.basename(filename)
        else:
            return
    debug_print(args)
    filename = osp.abspath(filename)
    rbs = remove_backslashes
    command = ("runfile('%s',    args='%s')" % (rbs(filename), rbs(args)))
    if set_focus:
        self.shell.setFocus()
    if (self.dockwidget and (not self.ismaximized)):
        self.dockwidget.setVisible(True)
        self.dockwidget.raise_()
    self.shell.write((command + '\n'))
    self.shell.run_command(command)
