Example #1
0
 def button_include_dir_handler(self):
     initial_dir = os.path.dirname(str(self.include_dir.text()))
     dirDialog = QFileDialog()
     dirDialog.setFileMode(QFileDialog.Directory)
     new_dir = dirDialog.getExistingDirectory(self, "Select directory", initial_dir)
     if (len(new_dir) > 0):
         self.include_dir.setText(new_dir)
Example #2
0
    def getFile(self):

        dialg = QFileDialog()
        dialg.setFileMode(QFileDialog.AnyFile)
        dialg.setNameFilter("CSV Files (*.csv)")
        if dialg.exec_():
            fileName = dialg.selectedFiles()
            f = open(fileName[0], 'r')
            ml = machineLearning(f)

            with open(fileName[0], 'r') as f:
                data = f.read()
                self.textEditor.setPlainText(data)
                self.table.setRowCount(len(ml))
                self.table.setColumnCount(1)
                x = -1

                while x <= len(ml) - 2:
                    x += 1
                    self.table.setItem(x, 0, QTableWidgetItem(ml[x]))
            header = self.table.horizontalHeader()
            header.setSectionResizeMode(0, QtWidgets.QHeaderView.Stretch)

            f.close()
        else:
            pass
Example #3
0
 def get_open_filename(self, parent, filter_, file_mode=None):
     dialog = QFileDialog(parent, directory=self._get_default_directory(), filter=filter_)
     if file_mode:
         dialog.setFileMode(file_mode)
     if dialog.exec_():
         return dialog.selectedFiles()[0]
     else:
         return None
Example #4
0
 def _open_file(self, filter):
     caption = 'open File'
     filters = 'File (%s)' % (filter)
     dlg = QFileDialog(self, caption, self.lastOpenDirPath, filters)
     dlg.setDefaultSuffix(filter)
     dlg.setFileMode(QFileDialog.AnyFile)
     dlg.setOption(QFileDialog.DontUseNativeDialog, False)
     if dlg.exec_():
         return dlg.selectedFiles()[0]
     return ''
Example #5
0
    def handleAddSrcFiles(self):
        fileDlg = QFileDialog(self, 'Select Files',
                              self.config[PATHS]['download_path'],
                              self.filetypes)
        fileDlg.setFileMode(QFileDialog.ExistingFiles)

        if fileDlg.exec_():
            for filename in fileDlg.selectedFiles():
                if filename not in self.filenames:
                    self.filenames.append(filename)
                    self.srcFilesList.addItem(filename)
Example #6
0
    def handleSelectSrcFiles(self):
        fileDlg = QFileDialog(self, 'Select Files',
                              self.config[PATHS]['download_path'],
                              self.filetypes)
        fileDlg.setFileMode(QFileDialog.ExistingFiles)

        if fileDlg.exec_():
            self.filenames = fileDlg.selectedFiles()

        self.srcFilesList.clear()
        self.srcFilesList.addItems(self.filenames)
Example #7
0
 def select_exe(self):
     '''
     Create a dialog to select the Prince executable
     '''
     dialog = QFileDialog()
     dialog.setFileMode(QFileDialog.ExistingFile)
     filename = dialog.getOpenFileName(self, _('Select Prince executable'), '', '')
     if filename:
         try:
             self.exe.setText(filename)
         except(TypeError):
             self.exe.setText(filename[0])
Example #8
0
 def select_batch_files(self):
     """
     Selection of .xml pyIMD project files for batch calculation.
     """
     filter_ext = "XML (*.xml);;, All files (*.*) "
     file_name = QFileDialog()
     file_name.setFileMode(QFileDialog.ExistingFiles)
     ret = file_name.getOpenFileNames(
         self, "Select the pyIMD project files for batch processing",
         self.last_selected_path, filter_ext)
     files = ret[0]
     for i in range(0, len(files)):
         self.batchFileListWidget.addItem(str(files[i]))
Example #9
0
 def select_exe(self):
     '''
     Create a dialog to select the Prince executable
     '''
     dialog = QFileDialog()
     dialog.setFileMode(QFileDialog.ExistingFile)
     filename = dialog.getOpenFileName(self, _('Select Prince executable'),
                                       '', '')
     if filename:
         try:
             self.exe.setText(filename)
         except (TypeError):
             self.exe.setText(filename[0])
Example #10
0
    def openFileDlg(self):
        """Open file picker for ppscannos.py file"""

        d = self.lineEditPPScannos.text()
        if d:
            d = os.path.dirname(d)

        dlg = QFileDialog(self, "Select PPScannos File...", None, "Python Files (*.py);;All Files (*)")
        dlg.setFileMode(QFileDialog.ExistingFile)
        if dlg.exec():
            flist = dlg.selectedFiles()  # returns a list
            if len(flist):
                self.lineEditPPScannos.setText(flist[0])
Example #11
0
    def openFile(self):
        dialog = QFileDialog()
        dialog.setFileMode(QFileDialog.AnyFile)
        dialog.setFilter(QDir.Files)
        tab = self.tabWidget.widget(self.tabWidget.currentIndex())
        items = tab.children()

        if dialog.exec_():
            file_name = dialog.selectedFiles()

            if file_name[0].endswith('.py'):
                with open(file_name[0], 'r+') as f:
                    data = f.read()
                    items[3].setPlainText(data)
                    f.close
            elif file_name[0].endswith('.txt'):
                with open(file_name[0], 'r+') as f:
                    data = f.read()
                    items[3].setPlainText(data)
                    f.close
            else:
                pass
Example #12
0
    def select_data_files(self):
        """
        Select data files to create a new pyIMD project
        """
        try:
            filter_ext = "All files (*.*);; Txt (*.txt);; TDMS (*.tdms);; All files " \
                         "without file endings (*)"
            file_name = QFileDialog()
            file_name.setFileMode(QFileDialog.ExistingFiles)
            ret = file_name.getOpenFileNames(self, "Pick relevant data files",
                                             self.last_selected_path,
                                             filter_ext)
            names = ret[0]
            if len(names) > 0:
                # Clear previous file list
                self.file_list = []
                # Setting the file list
                self.file_list = names
                sorted_file_list = self.file_list
                self.last_selected_path = os.path.dirname(sorted_file_list[0])
                self.show_data()
                self.print_to_console("Selected %d files." %
                                      (len(sorted_file_list)))

                # Populate drop down list with selected items.
                self.noCellDataBox.clear()
                self.withCellDataBox.clear()
                self.measuredDataBox.clear()
                self.noCellDataBox.addItems(self.file_list)
                self.withCellDataBox.addItems(self.file_list)
                self.measuredDataBox.addItems(self.file_list)
                # Create new pyimd project
                self.imd.create_pyimd_project(self.file_list[0],
                                              self.file_list[0],
                                              self.file_list[0], '\t', 23,
                                              'PLL')
        except Exception as e:
            self.print_to_console("Error could not select files." + str(e))
Example #13
0
 def file_dialog(self, load_save_type=QFileDialog.AcceptSave):
     """Opens an file save dialog and returns the selected
         filename."""
     file_save_dialog = QFileDialog(self)
     file_save_dialog.setFileMode(QFileDialog.AnyFile)
     file_save_dialog.setAcceptMode(load_save_type)
     file_save_dialog.setNameFilters(
         ["MPDJ files (*.{})".format(FILE_SUFFIX)])
     file_save_dialog.selectNameFilter(
         "MPDJ files (*.{})".format(FILE_SUFFIX))
     file_save_dialog.setDefaultSuffix((FILE_SUFFIX))
     exec_value = file_save_dialog.exec()
     if exec_value == 0:
         return None
     file_names = file_save_dialog.selectedFiles()
     if len(file_names) != 1:
         message_box = QMessageBox()
         message_box.setText('Please select only one file!')
         message_box.setWindowTitle('Save error.')
         message_box.setStandardButtons(QMessageBox.Ok)
         message_box.setIcon(QMessageBox.Information)
         message_box.exec_()
         return None
     return file_names[0]
    def open_file_dialog(self):
        # in case a file is open already, close it properly first
        if self.machine:
            ret = self.close_file()
            if not ret:
                # user canceled closing of current file; can't open new one
                return

        # open dialog for selecting a gcode file to be loaded
        dialog = QFileDialog(self)
        dialog.setFileMode(QFileDialog.ExistingFile)
        filters = ["G-code (*.gcode)", "Any files (*)"]
        dialog.setNameFilters(filters)
        dialog.selectNameFilter(filters[0])
        dialog.setViewMode(QFileDialog.Detail)

        filename = None
        if dialog.exec_():
            filename = dialog.selectedFiles()

        if filename:
            self.run_in_background(self.load_data,
                                   after=self.show_layer,
                                   args=filename)
Example #15
0
 def _import_keys(self):
     dialog = QFileDialog()
     dialog.setFileMode(QFileDialog.Directory)
     dialog.setOption(QFileDialog.ShowDirsOnly)
     folder = dialog.getExistingDirectory(caption="Select Directory")
     self._km.import_keys(folder)
Example #16
0
 def _import_keys(self):
     dialog = QFileDialog()
     dialog.setFileMode(QFileDialog.Directory)
     dialog.setOption(QFileDialog.ShowDirsOnly)
     folder = dialog.getExistingDirectory(caption="Select Directory")
     self._km.import_keys(folder)
Example #17
0
    def open_project(self):
        """
        Opens a pyIMD project file (.xml) using the IntertialMassDetermination.load_pyimd_project method
        """

        # Quick hack to distinguish action depending on sender
        if self.sender().objectName() == 'actionOpen_project':

            project_filter_ext = "XML (*.xml);; All files (*.*)"
            file_dialog = QFileDialog()
            file_dialog.setFileMode(QFileDialog.ExistingFiles)
            selected_project_file = file_dialog.getOpenFileName(
                self, "Select a pyIMD project file", self.last_selected_path,
                project_filter_ext)
        else:
            selected_project_file = [self.current_batch_project_file]

        if len(selected_project_file[0]) > 0:
            try:
                # Load pyimd project
                self.imd.load_pyimd_project(selected_project_file[0])

                # Update ui.Settings with parameters:
                self.__settings = {
                    "figure_format": self.imd.settings.figure_format,
                    "figure_width": self.imd.settings.figure_width,
                    "figure_height": self.imd.settings.figure_height,
                    "figure_units": self.imd.settings.figure_units,
                    "figure_resolution_dpi":
                    self.imd.settings.figure_resolution_dpi,
                    "figure_name_pre_start_no_cell":
                    self.imd.settings.figure_name_pre_start_no_cell,
                    "figure_name_pre_start_with_cell":
                    self.imd.settings.figure_name_pre_start_with_cell,
                    "figure_name_measured_data":
                    self.imd.settings.figure_name_measured_data,
                    "figure_plot_every_nth_point":
                    self.imd.settings.figure_plot_every_nth_point,
                    "conversion_factor_hz_to_khz":
                    self.imd.settings.conversion_factor_hz_to_khz,
                    "conversion_factor_deg_to_rad":
                    self.imd.settings.conversion_factor_deg_to_rad,
                    "spring_constant": self.imd.settings.spring_constant,
                    "cantilever_length": self.imd.settings.cantilever_length,
                    "cell_position": self.imd.settings.cell_position,
                    "initial_parameter_guess":
                    self.imd.settings.initial_parameter_guess,
                    "lower_parameter_bounds":
                    self.imd.settings.lower_parameter_bounds,
                    "upper_parameter_bounds":
                    self.imd.settings.upper_parameter_bounds,
                    "rolling_window_size":
                    self.imd.settings.rolling_window_size,
                    "correct_for_frequency_offset":
                    self.imd.settings.correct_for_frequency_offset,
                    "frequency_offset_mode":
                    self.imd.settings.frequency_offset_mode,
                    "frequency_offset_n_measurements_used":
                    self.imd.settings.frequency_offset_n_measurements_used,
                    "frequency_offset": self.imd.settings.frequency_offset,
                    "read_text_data_from_line":
                    self.imd.settings.read_text_data_from_line,
                    "text_data_delimiter":
                    self.imd.settings.text_data_delimiter
                }
                self.settings_dialog.__init__(self.__settings)
                self.settings_dialog.set_values()

                # Update ui with loaded data:
                self.last_selected_path = self.imd.settings.project_folder_path.replace(
                    "\\", "/")

                self.file_list = []
                for i in range(0, len(self.imd.settings.selected_files)):
                    self.file_list.append(pathlib.Path().joinpath(
                        self.last_selected_path,
                        self.imd.settings.selected_files[i]).as_posix())
                self.show_data()
                self.noCellDataBox.clear()
                self.noCellDataBox.addItems(self.file_list)
                index = self.noCellDataBox.findText(
                    self.imd.settings.pre_start_no_cell_path.replace(
                        "\\", "/"), QtCore.Qt.MatchFixedString)
                if index >= 0:
                    self.noCellDataBox.setCurrentIndex(index)

                self.withCellDataBox.clear()
                self.withCellDataBox.addItems(self.file_list)
                index = self.withCellDataBox.findText(
                    self.imd.settings.pre_start_with_cell_path.replace(
                        "\\", "/"), QtCore.Qt.MatchFixedString)
                if index >= 0:
                    self.withCellDataBox.setCurrentIndex(index)
                self.measuredDataBox.clear()
                self.measuredDataBox.addItems(self.file_list)
                index = self.measuredDataBox.findText(
                    self.imd.settings.measurements_path.replace("\\", "/"),
                    QtCore.Qt.MatchFixedString)
                if index >= 0:
                    self.measuredDataBox.setCurrentIndex(index)

                for i in range(0, len(self.radio_btn_name_array)):
                    radio_name = getattr(self, self.radio_btn_name_array[i])
                    if radio_name.text() == self.imd.settings.calculation_mode:
                        radio_name.setChecked(True)

                self.print_to_console("Project {} successfully opened".format(
                    pathlib.Path(selected_project_file[0]).name))
            except Exception as e:
                self.print_to_console("Error during opening project in UI: " +
                                      str(e))
        else:
            self.print_to_console("Project opening aborted by user")
Example #18
0
def load_media_subs():

    import_dir = mw.pm.profile.get("importDirectory", "")
    myfilter = "Subtitles (*.lrc *.srt);;All Files (*.*)"
    open_file_dialog = QFileDialog()
    open_file_dialog.setFileMode(QFileDialog.ExistingFiles)
    load_media_subs_paths = open_file_dialog.getOpenFileNames(mw,
                                                              "Select Sub to Import",
                                                              import_dir,
                                                              myfilter)[0]
    if not load_media_subs_paths:
        return
    mw.addon_RTMD.loading_media_subs = True

    # thread to get feed data
    class LoadSubsThreadSignals(QObject):

        error_message = pyqtSignal(str)

    class LoadSubsThread(QRunnable):

        def __init__(self, parent, sub_path):
            super(LoadSubsThread, self).__init__()
            self.parent = parent
            self.sub_path = sub_path
            self.signals = LoadSubsThreadSignals()

        def run(self):

            if self.parent.loading_media_subs_need_abort \
               or (not self.sub_path.endswith(".lrc")
                   and not self.sub_path.endswith(".srt")):
                self.signals.error_message.emit("")
                return
            media_path_no_ext = self.sub_path[:-4]
            if not os.path.split(media_path_no_ext)[1]:
                self.signals.error_message.emit("Bad file name: %s" % self.sub_path)
                return
            folder_name = os.path.split(os.path.split(media_path_no_ext)[1])[1]
            if self.sub_path.endswith(".lrc"):
                media_ext = ".mp3"
                if not os.path.isfile(media_path_no_ext + ".mp3"):
                    self.signals.error_message.emit("File not found: %s" % media_path_no_ext + ".mp3")
                    return
            else:
                video_ext = (".mp4", ".mkv", ".avi", ".flv", ".m4v", ".f4v", ".rmvb")
                media_ext = ""
                for ext in video_ext:
                    if os.path.isfile(media_path_no_ext + ext):
                        media_ext = ext
                        break
                if not media_ext:
                    self.signals.error_message.emit("Can found media file for: %s" % self.sub_path)
                    return
            # try to open the sub file
            is_ok, sub_data = get_file_data(self.sub_path)
            if not is_ok:
                self.signals.error_message.emit("Encoding should be utf-8: %s" % self.sub_path)
            # save sub_text as <<<start=23,end=43||say something>>>
            # pattern = r"<<<id=(\d+),start=(\d+),end=(\d+)\|\|(.*?)>>>"
            struct_sub = ""
            # parse lrc text
            if self.sub_path.endswith(".lrc"):
                lrc_dict = {}
                re_lrc_line = re.compile(r"(\[\d+:\d+\.\d+\])")
                re_lrc_time = re.compile(r"\[(\d+):(\d+)\.\d+\]")
                for line_text in sub_data.splitlines():
                    line_text = line_text.strip()
                    if not line_text or not re_lrc_time.match(line_text):
                        continue
                    line_time_points = []
                    line_sub_text = ""
                    for element in re_lrc_line.split(line_text):
                        if element:
                            if re_lrc_line.match(element):
                                minute, second = re_lrc_time.match(element).groups()
                                line_time_points.append(int(minute) * 60 + int(second))
                            else:
                                line_sub_text += element.strip()
                    if line_sub_text:
                        for second in line_time_points:
                            if second in lrc_dict:
                                lrc_dict[second] += line_sub_text
                            else:
                                lrc_dict[second] = line_sub_text
                if lrc_dict:
                    struct_master = "<<<start=%d,end=0||%s>>>"
                    for second in sorted(lrc_dict.keys()):
                        struct_sub += struct_master % (second, lrc_dict[second])
            # parse srt text
            else:
                sub_data = sub_data.replace("\r", "").split("\n\n")
                re_srt = re.compile(r"\d+\s*\n(\d+):(\d+):(\d+),\d+ --> (\d+):(\d+):(\d+),\d+\s*\n(.*)", re.DOTALL)
                struct_master = "<<<start=%d,end=%d||%s>>>"
                for data_block in sub_data:
                    if re_srt.match(data_block):
                        # ('00', '00', '10', '00', '00', '11', "想不出来了\nI'm out.")
                        mg = re_srt.match(data_block).groups()
                        if len(mg) < 7:
                            continue
                        struct_sub += struct_master % \
                                      (int(mg[0]) * 3600 + int(mg[1]) * 60 + int(mg[2]),
                                       int(mg[3]) * 3600 + int(mg[4]) * 60 + int(mg[5]),
                                       mg[6].strip())
            # write to db
            conn = sqlite3.connect(get_path("user_files", "doc.db"))
            conn.execute("insert or replace into subs "
                         + "(media_path_no_ext, media_ext, folder_name, sub_text, create_date) values "
                         + "(?, ?, ?, ?, current_timestamp)",
                         (media_path_no_ext, media_ext, folder_name, struct_sub))
            conn.commit()
            conn.close()
            self.signals.error_message.emit("")

    class LoadMediaDialog(QDialog):

        def __init__(self, parent, load_media_subs_paths):
            super().__init__(parent)
            self.parent = parent
            self.load_media_subs_paths = load_media_subs_paths

            self.verticalLayout =QVBoxLayout(self)

            self.progress_bar = QProgressBar(self)
            self.progress_bar.setProperty("value", 0)
            self.progress_bar.setObjectName("progress_bar")
            self.verticalLayout.addWidget(self.progress_bar)
            self.status_label = QLabel(self)
            self.status_label.setText("")
            self.status_label.setObjectName("")
            self.verticalLayout.addWidget(self.status_label)
            self.abort_button = QPushButton(self)
            self.abort_button.setText("Abort The Loading")
            self.abort_button.clicked.connect(self.abort)
            self.verticalLayout.addWidget(self.abort_button)

            # start the work
            self.load_subs_error_message = ""
            self.loading_media_subs_need_abort = False
            self.load_subs_completed_thread_count = 0
            for sub_path in self.load_media_subs_paths:
                load_thread = LoadSubsThread(self, sub_path)
                load_thread.signals.error_message.connect(self.load_error_msg_slot)
                thread_pool = QThreadPool.globalInstance()
                thread_pool.start(load_thread)

        def load_error_msg_slot(self, signal_error_msg):
            self.load_subs_completed_thread_count += 1
            if signal_error_msg:
                self.load_subs_error_message += signal_error_msg + "<p>"
            self.progress_bar.setValue(int(self.load_subs_completed_thread_count * 100
                                           / len(self.load_media_subs_paths)))
            self.status_label.setText("Completed Subs %s / %s"
                                      % (self.load_subs_completed_thread_count,
                                         len(self.load_media_subs_paths)))
            if self.load_subs_completed_thread_count == len(self.load_media_subs_paths):
                if not self.loading_media_subs_need_abort:
                    self.status_label.setText("Completed loading.")
                if self.load_subs_error_message:
                    show_text(self.load_subs_error_message)
                if mw.addon_RTMD.loading_media_subs:
                    mw.addon_RTMD.loading_media_subs = False
                self.abort_button.setEnabled(False)

        def abort(self):
            self.loading_media_subs_need_abort = True

        def closeEvent(self, event):
            if not mw.addon_RTMD.loading_media_subs:
                event.accept()
            else:
                event.ignore()

    LoadMediaDialog(mw, load_media_subs_paths).show()
Example #19
0
    def load_from_text_file(self):

        import_dir = mw.pm.profile.get("importDirectory", "")
        myfilter = "TXT/HTML (*.txt *.html);;All Files (*.*)"
        open_file_dialog = QFileDialog()
        open_file_dialog.setFileMode(QFileDialog.ExistingFiles)
        self.load_text_file_paths = open_file_dialog.getOpenFileNames(self,
                                                                      "Select Files to Import",
                                                                      import_dir,
                                                                      myfilter)[0]
        if not self.load_text_file_paths:
            return
        # disable buttons
        self.manual_input_button.setEnabled(False)
        self.load_text_button.setEnabled(False)
        self.clean_aged_button.setEnabled(False)
        self.add_feed_button.setEnabled(False)
        self.remove_feed_button.setEnabled(False)
        self.load_feed_button.setEnabled(False)
        if "load_from_text_file" not in self.hard_work:
            self.hard_work.append("load_from_text_file")
        self.existing_doc_id_list_part = []

        # thread to get feed data
        class LoadTextThreadSignals(QObject):
            exit_signal = pyqtSignal(str)

        class LoadTextThread(QRunnable):

            def __init__(self, parent, file_path):
                super(LoadTextThread, self).__init__()
                self.parent = parent
                self.file_path = file_path
                self.signals = LoadTextThreadSignals()

            def run(self):

                if self.parent.need_abort:
                    self.signals.exit_signal.emit("")
                    return

                desc = ""
                is_ok, desc = get_file_data(self.file_path)
                if not is_ok:
                    self.signals.exit_signal.emit("Need UTF-8 Encoding: %s" % self.file_path)
                    return
                if desc:
                    link_to_set = '<p><p><a href="%s">%s</a>' % (self.file_path, self.file_path)
                    if "</body>" in desc:
                        desc = desc.replace("</body>", link_to_set + "</body>")
                    else:
                        desc = desc + link_to_set
                    title = os.path.basename(self.file_path)
                    conn = sqlite3.connect(get_path("user_files", "doc.db"),
                                           detect_types=sqlite3.PARSE_DECLTYPES | sqlite3.PARSE_COLNAMES)
                    cur = conn.cursor()
                    cur.execute("select feed_id from doc where feed_id between ? and ?",
                                (int(time.time()*1000), int(time.time()*1000)+10000))
                    while True:
                        doc_id = int(time.time()*1000)
                        if doc_id not in self.parent.existing_doc_id_list_part:
                            break
                    self.parent.existing_doc_id_list_part.append(doc_id)
                    cur.execute("""insert into doc
                                (doc_id, link, title, descr, doc_type)
                                values (?, ?, ?, ?, 'tf')""",
                                (doc_id, self.file_path, title, desc))
                    conn.commit()
                    conn.close()
                    self.signals.exit_signal.emit("")

        def load_exit_msg_slot(signal_error_msg):
            self.load_text_completed_thread_count += 1
            if signal_error_msg:
                self.load_text_file_error_message += signal_error_msg + "<p>"
            self.status_label.setText("Completed files %s / %s"
                                      % (self.load_text_completed_thread_count,
                                         len(self.load_text_file_paths)))
            if self.load_text_completed_thread_count == len(self.load_text_file_paths):
                if self.hard_work:
                    self.hard_work.remove("load_from_text_file")
                if not self.need_abort:
                    self.status_label.setText("Completed loading.")
                if not self.hard_work and self.need_abort:
                    self.need_abort = False
                if self.load_text_file_error_message:
                    QMessageBox(QMessageBox.Warning, "Warning", self.load_text_file_error_message).exec()
                    self.load_text_file_error_message = ""
                # enable buttons
                self.manual_input_button.setEnabled(True)
                self.load_text_button.setEnabled(True)
                self.clean_aged_button.setEnabled(True)
                self.add_feed_button.setEnabled(True)
                self.remove_feed_button.setEnabled(True)
                self.load_feed_button.setEnabled(True)

        self.load_text_completed_thread_count = 0
        self.load_text_file_error_message = ""
        for file_path in self.load_text_file_paths:
            load_thread = LoadTextThread(self, file_path)
            load_thread.signals.exit_signal.connect(load_exit_msg_slot)
            thread_pool = QThreadPool.globalInstance()
            thread_pool.start(load_thread)