@Slot(list)
def import_data(self, filenames=None):
    'Import data from text file'
    title = _('Import data')
    if (filenames is None):
        if (self.filename is None):
            basedir = getcwd()
        else:
            basedir = osp.dirname(self.filename)
        (filenames, _selfilter) = getopenfilenames(self, title, basedir, iofunctions.load_filters)
        if (not filenames):
            return
    elif is_text_string(filenames):
        filenames = [filenames]
    for filename in filenames:
        self.filename = to_text_string(filename)
        ext = osp.splitext(self.filename)[1].lower()
        if (ext not in iofunctions.load_funcs):
            buttons = (QMessageBox.Yes | QMessageBox.Cancel)
            answer = QMessageBox.question(self, title, (_("<b>Unsupported file extension '%s'</b><br><br>Would you like to import it anyway (by selecting a known file format)?") % ext), buttons)
            if (answer == QMessageBox.Cancel):
                return
            formats = list(iofunctions.load_extensions.keys())
            (item, ok) = QInputDialog.getItem(self, title, _('Open file as:'), formats, 0, False)
            if ok:
                ext = iofunctions.load_extensions[to_text_string(item)]
            else:
                return
        load_func = iofunctions.load_funcs[ext]
        if is_text_string(load_func):
            error_message = None
            try:
                (text, _encoding) = encoding.read(self.filename)
                if self.is_internal_shell:
                    self.editor.import_from_string(text)
                else:
                    base_name = osp.basename(self.filename)
                    editor = ImportWizard(self, text, title=base_name, varname=fix_reference_name(base_name))
                    if editor.exec_():
                        (var_name, clip_data) = editor.get_data()
                        monitor_set_global(self._get_sock(), var_name, clip_data)
            except Exception as error:
                error_message = str(error)
        else:
            QApplication.setOverrideCursor(QCursor(Qt.WaitCursor))
            QApplication.processEvents()
            if self.is_internal_shell:
                (namespace, error_message) = load_func(self.filename)
                interpreter = self.shellwidget.interpreter
                for key in list(namespace.keys()):
                    new_key = fix_reference_name(key, blacklist=list(interpreter.namespace.keys()))
                    if (new_key != key):
                        namespace[new_key] = namespace.pop(key)
                if (error_message is None):
                    interpreter.namespace.update(namespace)
            else:
                error_message = monitor_load_globals(self._get_sock(), self.filename, ext)
            QApplication.restoreOverrideCursor()
            QApplication.processEvents()
        if (error_message is not None):
            QMessageBox.critical(self, title, (_("<b>Unable to load '%s'</b><br><br>Error message:<br>%s") % (self.filename, error_message)))
        self.refresh_table()
Import data from text file
@Slot(list)
def import_data(self, filenames=None):
    
    title = _('Import data')
    if (filenames is None):
        if (self.filename is None):
            basedir = getcwd()
        else:
            basedir = osp.dirname(self.filename)
        (filenames, _selfilter) = getopenfilenames(self, title, basedir, iofunctions.load_filters)
        if (not filenames):
            return
    elif is_text_string(filenames):
        filenames = [filenames]
    for filename in filenames:
        self.filename = to_text_string(filename)
        ext = osp.splitext(self.filename)[1].lower()
        if (ext not in iofunctions.load_funcs):
            buttons = (QMessageBox.Yes | QMessageBox.Cancel)
            answer = QMessageBox.question(self, title, (_("<b>Unsupported file extension '%s'</b><br><br>Would you like to import it anyway (by selecting a known file format)?") % ext), buttons)
            if (answer == QMessageBox.Cancel):
                return
            formats = list(iofunctions.load_extensions.keys())
            (item, ok) = QInputDialog.getItem(self, title, _('Open file as:'), formats, 0, False)
            if ok:
                ext = iofunctions.load_extensions[to_text_string(item)]
            else:
                return
        load_func = iofunctions.load_funcs[ext]
        if is_text_string(load_func):
            error_message = None
            try:
                (text, _encoding) = encoding.read(self.filename)
                if self.is_internal_shell:
                    self.editor.import_from_string(text)
                else:
                    base_name = osp.basename(self.filename)
                    editor = ImportWizard(self, text, title=base_name, varname=fix_reference_name(base_name))
                    if editor.exec_():
                        (var_name, clip_data) = editor.get_data()
                        monitor_set_global(self._get_sock(), var_name, clip_data)
            except Exception as error:
                error_message = str(error)
        else:
            QApplication.setOverrideCursor(QCursor(Qt.WaitCursor))
            QApplication.processEvents()
            if self.is_internal_shell:
                (namespace, error_message) = load_func(self.filename)
                interpreter = self.shellwidget.interpreter
                for key in list(namespace.keys()):
                    new_key = fix_reference_name(key, blacklist=list(interpreter.namespace.keys()))
                    if (new_key != key):
                        namespace[new_key] = namespace.pop(key)
                if (error_message is None):
                    interpreter.namespace.update(namespace)
            else:
                error_message = monitor_load_globals(self._get_sock(), self.filename, ext)
            QApplication.restoreOverrideCursor()
            QApplication.processEvents()
        if (error_message is not None):
            QMessageBox.critical(self, title, (_("<b>Unable to load '%s'</b><br><br>Error message:<br>%s") % (self.filename, error_message)))
        self.refresh_table()